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

Add Connection and ConnectionMaker

parent 0966c115
No related branches found
No related tags found
1 merge request!2Bindings API wrapper
......@@ -4,6 +4,7 @@ public struct Client {
public var networkFollower: NetworkFollower
public var waitForNetwork: NetworkWaiter
public var makeIdentity: IdentityMaker
public var connect: ConnectionMaker
}
extension Client {
......@@ -11,7 +12,8 @@ extension Client {
Client(
networkFollower: .live(bindingsClient: bindingsClient),
waitForNetwork: .live(bindingsClient: bindingsClient),
makeIdentity: .live(bindingsClient: bindingsClient)
makeIdentity: .live(bindingsClient: bindingsClient),
connect: .live(bindingsClient: bindingsClient)
)
}
}
......@@ -21,7 +23,8 @@ extension Client {
public static let failing = Client(
networkFollower: .failing,
waitForNetwork: .failing,
makeIdentity: .failing
makeIdentity: .failing,
connect: .failing
)
}
#endif
import Bindings
public struct Connection {
public var isAuthenticated: () -> Bool
}
extension Connection {
public static func live(
bindingsConnection: BindingsConnection
) -> Connection {
Connection(
isAuthenticated: { false }
)
}
public static func live(
bindingsAuthenticatedConnection: BindingsAuthenticatedConnection
) -> Connection {
Connection(
isAuthenticated: bindingsAuthenticatedConnection.isAuthenticated
)
}
}
#if DEBUG
extension Connection {
public static let failing = Connection(
isAuthenticated: { false }
)
}
#endif
import Bindings
public struct ConnectionMaker {
public var connect: (Bool, Data, Data) throws -> Connection
public func callAsFunction(
withAuthentication: Bool,
recipientContact: Data,
myIdentity: Data
) throws -> Connection {
try connect(withAuthentication, recipientContact, myIdentity)
}
}
extension ConnectionMaker {
public static func live(bindingsClient: BindingsClient) -> ConnectionMaker {
ConnectionMaker { withAuthentication, recipientContact, myIdentity in
if withAuthentication {
return Connection.live(
bindingsConnection: try bindingsClient.connect(
recipientContact,
myIdentity: myIdentity
)
)
} else {
return Connection.live(
bindingsAuthenticatedConnection: try bindingsClient.connect(
withAuthentication: recipientContact,
myIdentity: myIdentity
)
)
}
}
}
}
#if DEBUG
extension ConnectionMaker {
public static let failing = ConnectionMaker { _, _, _ in
struct NotImplemented: Error {}
throw NotImplemented()
}
}
#endif
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