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

Add AuthCallbacks wrapper

parent e51043da
No related branches found
No related tags found
2 merge requests!102Release 1.0.0,!18Update Bindings
import Bindings
import XCTestDynamicOverlay
public enum AuthCallback {
case confirm(contact: Data, receptionId: Data, ephemeralId: Int64, roundId: Int64)
case request(contact: Data, receptionId: Data, ephemeralId: Int64, roundId: Int64)
case reset(contact: Data, receptionId: Data, ephemeralId: Int64, roundId: Int64)
}
public struct AuthCallbacks {
public init(handle: @escaping (AuthCallback) -> Void) {
self.handle = handle
}
public var handle: (AuthCallback) -> Void
}
extension AuthCallbacks {
public static let unimplemented = AuthCallbacks(
handle: XCTUnimplemented("\(Self.self)")
)
}
extension AuthCallbacks {
func makeBindingsAuthCallbacks() -> BindingsAuthCallbacksProtocol {
class Handler: NSObject, BindingsAuthCallbacksProtocol {
init(_ callbacks: AuthCallbacks) {
self.callbacks = callbacks
}
let callbacks: AuthCallbacks
func confirm(_ contact: Data?, receptionId: Data?, ephemeralId: Int64, roundId: Int64) {
guard let contact = contact else {
fatalError("BindingsAuthCallbacks.confirm received `nil` contact")
}
guard let receptionId = receptionId else {
fatalError("BindingsAuthCallbacks.confirm received `nil` receptionId")
}
callbacks.handle(.confirm(
contact: contact,
receptionId: receptionId,
ephemeralId: ephemeralId,
roundId: roundId
))
}
func request(_ contact: Data?, receptionId: Data?, ephemeralId: Int64, roundId: Int64) {
guard let contact = contact else {
fatalError("BindingsAuthCallbacks.request received `nil` contact")
}
guard let receptionId = receptionId else {
fatalError("BindingsAuthCallbacks.request received `nil` receptionId")
}
callbacks.handle(.request(
contact: contact,
receptionId: receptionId,
ephemeralId: ephemeralId,
roundId: roundId
))
}
func reset(_ contact: Data?, receptionId: Data?, ephemeralId: Int64, roundId: Int64) {
guard let contact = contact else {
fatalError("BindingsAuthCallbacks.reset received `nil` contact")
}
guard let receptionId = receptionId else {
fatalError("BindingsAuthCallbacks.reset received `nil` receptionId")
}
callbacks.handle(.reset(
contact: contact,
receptionId: receptionId,
ephemeralId: ephemeralId,
roundId: roundId
))
}
}
return Handler(self)
}
}
...@@ -2,23 +2,24 @@ import Bindings ...@@ -2,23 +2,24 @@ import Bindings
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct Login { public struct Login {
public var run: (Int, Data, Data) throws -> E2E public var run: (Int, AuthCallbacks?, Data, Data) throws -> E2E
public func callAsFunction( public func callAsFunction(
cmixId: Int, cmixId: Int,
authCallbacks: AuthCallbacks? = nil,
identity: Data, identity: Data,
e2eParamsJSON: Data e2eParamsJSON: Data
) throws -> E2E { ) throws -> E2E {
try run(cmixId, identity, e2eParamsJSON) try run(cmixId, authCallbacks, identity, e2eParamsJSON)
} }
} }
extension Login { extension Login {
public static let live = Login { cmixId, identity, e2eParamsJSON in public static let live = Login { cmixId, authCallbacks, identity, e2eParamsJSON in
var error: NSError? var error: NSError?
let bindingsE2E = BindingsLogin( let bindingsE2E = BindingsLogin(
cmixId, cmixId,
nil, // TODO: pass callbacks authCallbacks?.makeBindingsAuthCallbacks(),
identity, identity,
e2eParamsJSON, e2eParamsJSON,
&error &error
......
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