diff --git a/Sources/ElixxirDAppsSDK/Client.swift b/Sources/ElixxirDAppsSDK/Client.swift index 5e65fcb081a078a0a9daa8192ade516c05e23b87..c47d98c4009674a9fd144a0ce3b323f4838ff681 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 0000000000000000000000000000000000000000..1643a0cdc4a6b2979d67f0112e4f5cc0398859da --- /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