Schafkopf-Server/Sources/App/Management/Configuration.swift
2022-11-24 21:31:03 +01:00

65 lines
1.3 KiB
Swift

import Foundation
struct Configuration {
let serverPort: Int
let mail: EMail?
/**
Use a database file and reduce logging.
If this property is set to `false`, then an in-memory database is used with increased logging.
*/
let production: Bool
struct EMail {
/// The url to the root of the server
let serverDomain: String
/// SMTP server address
let emailHostname: String
/// username to login
let email: String
/// password to login
let password: String
/// The number of minutes until a password reset token is no longer valid
let tokenExpiryDuration: Int
}
}
extension Configuration {
init(loadFromUrl url: URL) throws {
let data: Data
do {
data = try Data(contentsOf: url)
} catch {
print("Failed to load configuration data from \(url.path): \(error)")
throw error
}
try self.init(data: data)
}
init(data: Data) throws {
do {
self = try JSONDecoder().decode(Configuration.self, from: data)
} catch {
print("Failed to decode configuration: \(error)")
throw error
}
}
}
extension Configuration.EMail: Codable {
}
extension Configuration: Codable {
}