From de7b003aca066d3f644661814b472e08f1121392 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Fri, 29 Jul 2022 14:46:09 +0100
Subject: [PATCH] Wrap FileTransfer object

---
 .../FileTransfer/FileTransfer.swift           | 43 +++++++++++++++
 .../Functors/FileTransferCloseSend.swift      | 22 ++++++++
 .../Functors/FileTransferMaxFileSize.swift    | 22 ++++++++
 .../Functors/FileTransferMaxFileTypeLen.swift | 22 ++++++++
 .../Functors/FileTransferMaxFilenameLen.swift | 22 ++++++++
 .../Functors/FileTransferMaxPreviewSize.swift | 22 ++++++++
 .../Functors/FileTransferReceive.swift        | 22 ++++++++
 ...sferRegisterReceivedProgressCallback.swift | 33 +++++++++++
 ...TransferRegisterSentProgressCallback.swift | 33 +++++++++++
 .../Functors/FileTransferSend.swift           | 55 +++++++++++++++++++
 10 files changed, 296 insertions(+)
 create mode 100644 Sources/ElixxirDAppsSDK/FileTransfer/FileTransfer.swift
 create mode 100644 Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferCloseSend.swift
 create mode 100644 Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferMaxFileSize.swift
 create mode 100644 Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferMaxFileTypeLen.swift
 create mode 100644 Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferMaxFilenameLen.swift
 create mode 100644 Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferMaxPreviewSize.swift
 create mode 100644 Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferReceive.swift
 create mode 100644 Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferRegisterReceivedProgressCallback.swift
 create mode 100644 Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferRegisterSentProgressCallback.swift
 create mode 100644 Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferSend.swift

diff --git a/Sources/ElixxirDAppsSDK/FileTransfer/FileTransfer.swift b/Sources/ElixxirDAppsSDK/FileTransfer/FileTransfer.swift
new file mode 100644
index 00000000..4c83984d
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/FileTransfer/FileTransfer.swift
@@ -0,0 +1,43 @@
+import Bindings
+
+public struct FileTransfer {
+  public var closeSend: FileTransferCloseSend
+  public var maxFileNameLen: FileTransferMaxFilenameLen
+  public var maxFileSize: FileTransferMaxFileSize
+  public var maxFileTypeLen: FileTransferMaxFileTypeLen
+  public var maxPreviewSize: FileTransferMaxPreviewSize
+  public var receive: FileTransferReceive
+  public var registerReceivedProgressCallback: FileTransferRegisterReceivedProgressCallback
+  public var registerSentProgressCallback: FileTransferRegisterSentProgressCallback
+  public var send: FileTransferSend
+}
+
+extension FileTransfer {
+  public static func live(_ bindingsFileTransfer: BindingsFileTransfer) -> FileTransfer {
+    FileTransfer(
+      closeSend: .live(bindingsFileTransfer),
+      maxFileNameLen: .live(bindingsFileTransfer),
+      maxFileSize: .live(bindingsFileTransfer),
+      maxFileTypeLen: .live(bindingsFileTransfer),
+      maxPreviewSize: .live(bindingsFileTransfer),
+      receive: .live(bindingsFileTransfer),
+      registerReceivedProgressCallback: .live(bindingsFileTransfer),
+      registerSentProgressCallback: .live(bindingsFileTransfer),
+      send: .live(bindingsFileTransfer)
+    )
+  }
+}
+
+extension FileTransfer {
+  public static let unimplemented = FileTransfer(
+    closeSend: .unimplemented,
+    maxFileNameLen: .unimplemented,
+    maxFileSize: .unimplemented,
+    maxFileTypeLen: .unimplemented,
+    maxPreviewSize: .unimplemented,
+    receive: .unimplemented,
+    registerReceivedProgressCallback: .unimplemented,
+    registerSentProgressCallback: .unimplemented,
+    send: .unimplemented
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferCloseSend.swift b/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferCloseSend.swift
new file mode 100644
index 00000000..e729435f
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferCloseSend.swift
@@ -0,0 +1,22 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct FileTransferCloseSend {
+  public var run: (Data) throws -> Void
+
+  public func callAsFunction(transferId: Data) throws {
+    try run(transferId)
+  }
+}
+
+extension FileTransferCloseSend {
+  public static func live(_ bindingsFileTransfer: BindingsFileTransfer) -> FileTransferCloseSend {
+    FileTransferCloseSend(run: bindingsFileTransfer.closeSend)
+  }
+}
+
+extension FileTransferCloseSend {
+  public static let unimplemented = FileTransferCloseSend(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferMaxFileSize.swift b/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferMaxFileSize.swift
new file mode 100644
index 00000000..02aea297
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferMaxFileSize.swift
@@ -0,0 +1,22 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct FileTransferMaxFileSize {
+  public var run: () -> Int
+
+  public func callAsFunction() -> Int {
+    run()
+  }
+}
+
+extension FileTransferMaxFileSize {
+  public static func live(_ bindingsFileTransfer: BindingsFileTransfer) -> FileTransferMaxFileSize {
+    FileTransferMaxFileSize(run: bindingsFileTransfer.maxFileSize)
+  }
+}
+
+extension FileTransferMaxFileSize {
+  public static let unimplemented = FileTransferMaxFileSize(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferMaxFileTypeLen.swift b/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferMaxFileTypeLen.swift
new file mode 100644
index 00000000..2d3fe392
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferMaxFileTypeLen.swift
@@ -0,0 +1,22 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct FileTransferMaxFileTypeLen {
+  public var run: () -> Int
+
+  public func callAsFunction() -> Int {
+    run()
+  }
+}
+
+extension FileTransferMaxFileTypeLen {
+  public static func live(_ bindingsFileTransfer: BindingsFileTransfer) -> FileTransferMaxFileTypeLen {
+    FileTransferMaxFileTypeLen(run: bindingsFileTransfer.maxFileTypeLen)
+  }
+}
+
+extension FileTransferMaxFileTypeLen {
+  public static let unimplemented = FileTransferMaxFileTypeLen(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferMaxFilenameLen.swift b/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferMaxFilenameLen.swift
new file mode 100644
index 00000000..9db1d198
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferMaxFilenameLen.swift
@@ -0,0 +1,22 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct FileTransferMaxFilenameLen {
+  public var run: () -> Int
+
+  public func callAsFunction() -> Int {
+    run()
+  }
+}
+
+extension FileTransferMaxFilenameLen {
+  public static func live(_ bindingsFileTransfer: BindingsFileTransfer) -> FileTransferMaxFilenameLen {
+    FileTransferMaxFilenameLen(run: bindingsFileTransfer.maxFileNameLen)
+  }
+}
+
+extension FileTransferMaxFilenameLen {
+  public static let unimplemented = FileTransferMaxFilenameLen(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferMaxPreviewSize.swift b/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferMaxPreviewSize.swift
new file mode 100644
index 00000000..a21163b2
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferMaxPreviewSize.swift
@@ -0,0 +1,22 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct FileTransferMaxPreviewSize {
+  public var run: () -> Int
+
+  public func callAsFunction() -> Int {
+    run()
+  }
+}
+
+extension FileTransferMaxPreviewSize {
+  public static func live(_ bindingsFileTransfer: BindingsFileTransfer) -> FileTransferMaxPreviewSize {
+    FileTransferMaxPreviewSize(run: bindingsFileTransfer.maxPreviewSize)
+  }
+}
+
+extension FileTransferMaxPreviewSize {
+  public static let unimplemented = FileTransferMaxPreviewSize(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferReceive.swift b/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferReceive.swift
new file mode 100644
index 00000000..bd79c1a5
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferReceive.swift
@@ -0,0 +1,22 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct FileTransferReceive {
+  public var run: (Data) throws -> Data
+
+  public func callAsFunction(transferId: Data) throws -> Data {
+    try run(transferId)
+  }
+}
+
+extension FileTransferReceive {
+  public static func live(_ bindingsFileTransfer: BindingsFileTransfer) -> FileTransferReceive {
+    FileTransferReceive(run: bindingsFileTransfer.receive)
+  }
+}
+
+extension FileTransferReceive {
+  public static let unimplemented = FileTransferReceive(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferRegisterReceivedProgressCallback.swift b/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferRegisterReceivedProgressCallback.swift
new file mode 100644
index 00000000..b094b3ca
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferRegisterReceivedProgressCallback.swift
@@ -0,0 +1,33 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct FileTransferRegisterReceivedProgressCallback {
+  public var run: (Data, String, FileTransferProgressCallback) throws -> Void
+
+  public func callAsFunction(
+    transferId: Data,
+    period: String,
+    callback: FileTransferProgressCallback
+  ) throws {
+    try run(transferId, period, callback)
+  }
+}
+
+extension FileTransferRegisterReceivedProgressCallback {
+  public static func live(_ bindingsFileTransfer: BindingsFileTransfer)
+  -> FileTransferRegisterReceivedProgressCallback {
+    FileTransferRegisterReceivedProgressCallback { transferId, period, callback in
+      try bindingsFileTransfer.registerReceivedProgressCallback(
+        transferId,
+        callback: callback.makeBindingsFileTransferReceiveProgressCallback(),
+        period: period
+      )
+    }
+  }
+}
+
+extension FileTransferRegisterReceivedProgressCallback {
+  public static let unimplemented = FileTransferRegisterReceivedProgressCallback(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferRegisterSentProgressCallback.swift b/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferRegisterSentProgressCallback.swift
new file mode 100644
index 00000000..c1cfcbc4
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferRegisterSentProgressCallback.swift
@@ -0,0 +1,33 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct FileTransferRegisterSentProgressCallback {
+  public var run: (Data, String, FileTransferProgressCallback) throws -> Void
+
+  public func callAsFunction(
+    transferId: Data,
+    period: String,
+    callback: FileTransferProgressCallback
+  ) throws {
+    try run(transferId, period, callback)
+  }
+}
+
+extension FileTransferRegisterSentProgressCallback {
+  public static func live(_ bindingsFileTransfer: BindingsFileTransfer)
+  -> FileTransferRegisterSentProgressCallback {
+    FileTransferRegisterSentProgressCallback { transferId, period, callback in
+      try bindingsFileTransfer.registerSentProgressCallback(
+        transferId,
+        callback: callback.makeBindingsFileTransferSentProgressCallback(),
+        period: period
+      )
+    }
+  }
+}
+
+extension FileTransferRegisterSentProgressCallback {
+  public static let unimplemented = FileTransferRegisterSentProgressCallback(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferSend.swift b/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferSend.swift
new file mode 100644
index 00000000..a23f859f
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/FileTransfer/Functors/FileTransferSend.swift
@@ -0,0 +1,55 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct FileTransferSend {
+  public struct Params: Equatable {
+    public init(
+      payload: FileSend,
+      recipientId: Data,
+      paramsJSON: Data,
+      retry: Float,
+      period: String
+    ) {
+      self.payload = payload
+      self.recipientId = recipientId
+      self.paramsJSON = paramsJSON
+      self.retry = retry
+      self.period = period
+    }
+
+    public var payload: FileSend
+    public var recipientId: Data
+    public var paramsJSON: Data
+    public var retry: Float
+    public var period: String
+  }
+
+  public var run: (Params, FileTransferProgressCallback) throws -> Data
+
+  public func callAsFunction(
+    params: Params,
+    callback: FileTransferProgressCallback
+  ) throws -> Data {
+    try run(params, callback)
+  }
+}
+
+extension FileTransferSend {
+  public static func live(_ bindingsFileTransfer: BindingsFileTransfer) -> FileTransferSend {
+    FileTransferSend { params, callback in
+      try bindingsFileTransfer.send(
+        params.payload.encode(),
+        recipientID: params.recipientId,
+        retry: params.retry,
+        callback: callback.makeBindingsFileTransferSentProgressCallback(),
+        period: params.period
+      )
+    }
+  }
+}
+
+extension FileTransferSend {
+  public static let unimplemented = FileTransferSend(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
-- 
GitLab