Sesame-Server/Sources/App/Config.swift

43 lines
1.0 KiB
Swift
Raw Normal View History

2022-04-13 14:57:02 +02:00
import Foundation
struct Config {
/// The port where the server runs
2023-01-31 19:10:33 +01:00
let port: Int
2022-04-13 14:57:02 +02:00
/// The name of the file in the `Resources` folder containing the device authentication token
2023-01-31 19:10:33 +01:00
let keyFileName: String
2022-04-13 14:57:02 +02:00
/// The seconds to wait for a response from the device
2023-01-31 19:10:33 +01:00
let deviceTimeout: Int64
/// The authentication tokens to use for monitoring of the service
let authenticationTokens: Set<String>
}
extension Config: Codable {
}
extension Config {
init(loadFrom url: URL) throws {
guard FileManager.default.fileExists(atPath: url.path) else {
fatalError("No configuration file found")
}
let data: Data
do {
data = try Data(contentsOf: url)
} catch {
print("Failed to read config data: \(error)")
throw error
}
do {
self = try JSONDecoder().decode(Config.self, from: data)
} catch {
print("Failed to decode config data: \(error)")
throw error
}
}
2022-04-13 14:57:02 +02:00
}