import Vapor extension Environment { enum Error: Swift.Error, LocalizedError { case missing (String) var errorDescription: String? { switch self { case .missing (let variable): return "Missing environment variable: \(variable)" } } } static var baseURL: URL { get throws { guard let baseURL = Environment.get ("BASE_URL"), let url = URL (string: baseURL) else { throw Error.missing ("BASE_URL") } return url } } static func baseURL (_ path: String) throws -> URL { return try baseURL.appendingPathComponent (path) } static var emailSender: String { get throws { guard let sender = Environment.get ("EMAIL_SENDER") else { throw Error.missing ("EMAIL_SENDER") } return sender } } }