From bb6ac412e612e14168af02e0ea9cfbf354f688b6 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Fri, 26 Aug 2022 12:29:26 +0100
Subject: [PATCH] Add MakeContact functor

---
 Sources/XXClient/Helpers/MakeContact.swift | 26 ++++++++++++++++++++++
 1 file changed, 26 insertions(+)
 create mode 100644 Sources/XXClient/Helpers/MakeContact.swift

diff --git a/Sources/XXClient/Helpers/MakeContact.swift b/Sources/XXClient/Helpers/MakeContact.swift
new file mode 100644
index 00000000..2e0027bd
--- /dev/null
+++ b/Sources/XXClient/Helpers/MakeContact.swift
@@ -0,0 +1,26 @@
+import Foundation
+
+public struct MakeContact {
+  public var run: (Data) -> Contact
+
+  public func callAsFunction(_ data: Data) -> Contact {
+    run(data)
+  }
+}
+
+extension MakeContact {
+  public static func live(
+    getIdFromContact: GetIdFromContact = .live,
+    getPublicKeyFromContact: GetPublicKeyFromContact = .live,
+    getFactsFromContact: GetFactsFromContact = .live
+  ) -> MakeContact {
+    MakeContact { data in
+      Contact(
+        data: data,
+        getId: { try getIdFromContact(data) },
+        getPublicKey: { try getPublicKeyFromContact(data) },
+        getFacts: { try getFactsFromContact(data) }
+      )
+    }
+  }
+}
-- 
GitLab