From b2632307dee9b0ba5b5849b5ceee2c7640fe00fe Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Thu, 2 Jun 2022 15:01:20 +0200 Subject: [PATCH] Add ContactFromIdentityProvider --- Sources/ElixxirDAppsSDK/Client.swift | 3 +++ .../ContactFromIdentityProvider.swift | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 Sources/ElixxirDAppsSDK/ContactFromIdentityProvider.swift diff --git a/Sources/ElixxirDAppsSDK/Client.swift b/Sources/ElixxirDAppsSDK/Client.swift index 5e65fcb0..c47d98c4 100644 --- a/Sources/ElixxirDAppsSDK/Client.swift +++ b/Sources/ElixxirDAppsSDK/Client.swift @@ -10,6 +10,7 @@ public struct Client { public var listenErrors: ClientErrorListener public var makeIdentity: IdentityMaker public var connect: ConnectionMaker + public var getContactFromIdentity: ContactFromIdentityProvider public var waitForDelivery: MessageDeliveryWaiter } @@ -25,6 +26,7 @@ extension Client { listenErrors: .live(bindingsClient: bindingsClient), makeIdentity: .live(bindingsClient: bindingsClient), connect: .live(bindingsClient: bindingsClient), + getContactFromIdentity: .live(bindingsClient: bindingsClient), waitForDelivery: .live(bindingsClient: bindingsClient) ) } @@ -42,6 +44,7 @@ extension Client { listenErrors: .failing, makeIdentity: .failing, connect: .failing, + getContactFromIdentity: .failing, waitForDelivery: .failing ) } diff --git a/Sources/ElixxirDAppsSDK/ContactFromIdentityProvider.swift b/Sources/ElixxirDAppsSDK/ContactFromIdentityProvider.swift new file mode 100644 index 00000000..1643a0cd --- /dev/null +++ b/Sources/ElixxirDAppsSDK/ContactFromIdentityProvider.swift @@ -0,0 +1,24 @@ +import Bindings + +public struct ContactFromIdentityProvider { + public var get: (Data) throws -> Data + + public func callAsFunction(identity: Data) throws -> Data { + try get(identity) + } +} + +extension ContactFromIdentityProvider { + public static func live(bindingsClient: BindingsClient) -> ContactFromIdentityProvider { + ContactFromIdentityProvider(get: bindingsClient.getContactFromIdentity(_:)) + } +} + +#if DEBUG +extension ContactFromIdentityProvider { + public static let failing = ContactFromIdentityProvider { _ in + struct NotImplemented: Error {} + throw NotImplemented() + } +} +#endif -- GitLab