From 5be84eb4c0e1003415808a3b6bc7c8c9df99651b Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Mon, 25 Jul 2022 16:03:22 +0100 Subject: [PATCH] Add E2EAddPartnerCallback functor --- Sources/ElixxirDAppsSDK/E2E.swift | 7 +++- .../E2EAddPartnerCallback.swift | 37 +++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 Sources/ElixxirDAppsSDK/E2EAddPartnerCallback.swift diff --git a/Sources/ElixxirDAppsSDK/E2E.swift b/Sources/ElixxirDAppsSDK/E2E.swift index a3ee3414..38f9d801 100644 --- a/Sources/ElixxirDAppsSDK/E2E.swift +++ b/Sources/ElixxirDAppsSDK/E2E.swift @@ -6,6 +6,7 @@ public struct E2E { public var getContact: E2EGetContact public var payloadSize: E2EPayloadSize public var partitionSize: E2EPartitionSize + public var addPartnerCallback: E2EAddPartnerCallback // TODO: } @@ -17,7 +18,8 @@ extension E2E { getReceptionId: .live(bindingsE2E: bindingsE2E), getContact: .live(bindingsE2E: bindingsE2E), payloadSize: .live(bindingsE2E: bindingsE2E), - partitionSize: .live(bindingsE2E: bindingsE2E) + partitionSize: .live(bindingsE2E: bindingsE2E), + addPartnerCallback: .live(bindingsE2E) ) } } @@ -28,6 +30,7 @@ extension E2E { getReceptionId: .unimplemented, getContact: .unimplemented, payloadSize: .unimplemented, - partitionSize: .unimplemented + partitionSize: .unimplemented, + addPartnerCallback: .unimplemented ) } diff --git a/Sources/ElixxirDAppsSDK/E2EAddPartnerCallback.swift b/Sources/ElixxirDAppsSDK/E2EAddPartnerCallback.swift new file mode 100644 index 00000000..06713845 --- /dev/null +++ b/Sources/ElixxirDAppsSDK/E2EAddPartnerCallback.swift @@ -0,0 +1,37 @@ +import Bindings +import XCTestDynamicOverlay + +public struct E2EAddPartnerCallback { + public var run: (Data, AuthCallbacks) throws -> Cancellable + + public func callAsFunction( + partnerId: Data, + callbacks: AuthCallbacks + ) throws -> Cancellable { + try run(partnerId, callbacks) + } +} + +extension E2EAddPartnerCallback { + public static func live(_ bindingsE2E: BindingsE2e) -> E2EAddPartnerCallback { + E2EAddPartnerCallback { partnerId, callbacks in + try bindingsE2E.addPartnerCallback( + partnerId, + cb: callbacks.makeBindingsAuthCallbacks() + ) + return Cancellable { + do { + try bindingsE2E.deletePartnerCallback(partnerId) + } catch { + fatalError("BindingsE2e.deletePartnerCallback returned error: \(error)") + } + } + } + } +} + +extension E2EAddPartnerCallback { + public static let unimplemented = E2EAddPartnerCallback( + run: XCTUnimplemented("\(Self.self)") + ) +} -- GitLab