Skip to content
Snippets Groups Projects
Commit 78482567 authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Add ClientLoader

parent 13ead5eb
No related branches found
No related tags found
1 merge request!1Client management
import Bindings
public struct ClientLoader {
public var load: (URL, Data) throws -> Client
public func callAsFunction(directoryURL: URL, password: Data) throws -> Client {
try load(directoryURL, password)
}
}
extension ClientLoader {
public static let live = ClientLoader { directoryURL, password in
var error: NSError?
let bindingsClient = BindingsLogin(directoryURL.path, password, &error)
if let error = error { throw error }
guard let bindingsClient = bindingsClient else {
throw BindingsLoginUnknownError()
}
return Client.live(bindingsClient: bindingsClient)
}
}
#if DEBUG
extension ClientLoader {
public static let failing = ClientLoader { _, _ in
struct NotImplemented: Error {}
throw NotImplemented()
}
}
#endif
......@@ -13,3 +13,7 @@ public struct PasswordStorageMissingPasswordError: Error, Equatable {
public struct BindingsNewClientUnknownError: Error, Equatable {
public init() {}
}
public struct BindingsLoginUnknownError: Error, Equatable {
public init() {}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment