From 557f3311aaa665cdca2c4f9e11d693d4a5770d2e Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Fri, 29 Jul 2022 14:14:38 +0100 Subject: [PATCH] Add InitializeBackup functor --- .../Functors/InitializeBackup.swift | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 Sources/ElixxirDAppsSDK/Functors/InitializeBackup.swift diff --git a/Sources/ElixxirDAppsSDK/Functors/InitializeBackup.swift b/Sources/ElixxirDAppsSDK/Functors/InitializeBackup.swift new file mode 100644 index 00000000..735de567 --- /dev/null +++ b/Sources/ElixxirDAppsSDK/Functors/InitializeBackup.swift @@ -0,0 +1,41 @@ +import Bindings +import XCTestDynamicOverlay + +public struct InitializeBackup { + public var run: (Int, Int, String, UpdateBackupFunc) throws -> Backup + + public func callAsFunction( + e2eId: Int, + udId: Int, + password: String, + callback: UpdateBackupFunc + ) throws -> Backup { + try run(e2eId, udId, password, callback) + } +} + +extension InitializeBackup { + public static let live = InitializeBackup { e2eId, udId, password, callback in + var error: NSError? + let bindingsBackup = BindingsInitializeBackup( + e2eId, + udId, + password, + callback.makeBindingsUpdateBackupFunc(), + &error + ) + if let error = error { + throw error + } + guard let bindingsBackup = bindingsBackup else { + fatalError("BindingsInitializeBackup returned `nil` without providing error") + } + return .live(bindingsBackup) + } +} + +extension InitializeBackup { + public static let unimplemented = InitializeBackup( + run: XCTUnimplemented("\(Self.self)") + ) +} -- GitLab