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

Add ConnectionPartnerProvider

parent 4cc1c04a
No related branches found
No related tags found
1 merge request!2Bindings API wrapper
...@@ -2,7 +2,7 @@ import Bindings ...@@ -2,7 +2,7 @@ import Bindings
public struct Connection { public struct Connection {
public var isAuthenticated: () -> Bool public var isAuthenticated: () -> Bool
public var getPartner: () -> Data public var getPartner: ConnectionPartnerProvider
public var send: MessageSender public var send: MessageSender
public var listen: MessageListener public var listen: MessageListener
public var close: ConnectionCloser public var close: ConnectionCloser
...@@ -14,12 +14,7 @@ extension Connection { ...@@ -14,12 +14,7 @@ extension Connection {
) -> Connection { ) -> Connection {
Connection( Connection(
isAuthenticated: { false }, isAuthenticated: { false },
getPartner: { getPartner: .live(bindingsConnection: bindingsConnection),
guard let data = bindingsConnection.getPartner() else {
fatalError("BindingsConnection.getPartner returned `nil`")
}
return data
},
send: .live(bindingsConnection: bindingsConnection), send: .live(bindingsConnection: bindingsConnection),
listen: .live(bindingsConnection: bindingsConnection), listen: .live(bindingsConnection: bindingsConnection),
close: .live(bindingsConnection: bindingsConnection) close: .live(bindingsConnection: bindingsConnection)
...@@ -31,12 +26,7 @@ extension Connection { ...@@ -31,12 +26,7 @@ extension Connection {
) -> Connection { ) -> Connection {
Connection( Connection(
isAuthenticated: bindingsAuthenticatedConnection.isAuthenticated, isAuthenticated: bindingsAuthenticatedConnection.isAuthenticated,
getPartner: { getPartner: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection),
guard let data = bindingsAuthenticatedConnection.getPartner() else {
fatalError("BindingsAuthenticatedConnection.getPartner returned `nil`")
}
return data
},
send: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection), send: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection),
listen: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection), listen: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection),
close: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection) close: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection)
...@@ -48,7 +38,7 @@ extension Connection { ...@@ -48,7 +38,7 @@ extension Connection {
extension Connection { extension Connection {
public static let failing = Connection( public static let failing = Connection(
isAuthenticated: { fatalError("Not implemented") }, isAuthenticated: { fatalError("Not implemented") },
getPartner: { fatalError("Not implemented") }, getPartner: .failing,
send: .failing, send: .failing,
listen: .failing, listen: .failing,
close: .failing close: .failing
......
import Bindings
public struct ConnectionPartnerProvider {
public var get: () -> Data
public func callAsFunction() -> Data {
get()
}
}
extension ConnectionPartnerProvider {
public static func live(
bindingsConnection: BindingsConnection
) -> ConnectionPartnerProvider {
ConnectionPartnerProvider {
guard let data = bindingsConnection.getPartner() else {
fatalError("BindingsConnection.getPartner returned `nil`")
}
return data
}
}
public static func live(
bindingsAuthenticatedConnection: BindingsAuthenticatedConnection
) -> ConnectionPartnerProvider {
ConnectionPartnerProvider {
guard let data = bindingsAuthenticatedConnection.getPartner() else {
fatalError("BindingsAuthenticatedConnection.getPartner returned `nil`")
}
return data
}
}
}
#if DEBUG
extension ConnectionPartnerProvider {
public static let failing = ConnectionPartnerProvider {
fatalError("Not implemented")
}
}
#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