From 52c2a1732c4f9d2b646d723a523efe98886c26b4 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Tue, 30 Aug 2022 20:22:29 +0100
Subject: [PATCH] Remove JSONHelpers

---
 Sources/XXClient/Helpers/JSONHelpers.swift    |  85 ---------
 Sources/XXClient/Models/DHKey.swift           |   6 +-
 Sources/XXClient/Models/GroupMember.swift     |  12 +-
 .../Helpers/JSONHelpersTests.swift            | 163 ------------------
 4 files changed, 6 insertions(+), 260 deletions(-)
 delete mode 100644 Sources/XXClient/Helpers/JSONHelpers.swift
 delete mode 100644 Tests/XXClientTests/Helpers/JSONHelpersTests.swift

diff --git a/Sources/XXClient/Helpers/JSONHelpers.swift b/Sources/XXClient/Helpers/JSONHelpers.swift
deleted file mode 100644
index 7527ac9a..00000000
--- a/Sources/XXClient/Helpers/JSONHelpers.swift
+++ /dev/null
@@ -1,85 +0,0 @@
-import Foundation
-
-/// Replaces all numbers at provided key with string equivalents
-///
-/// Example input:
-/// {
-///   "key": 123,
-///   "object": {
-///     "hello": "world",
-///     "key": 321
-///   }
-/// }
-///
-/// Example output:
-/// {
-///   "key": "123",
-///   "object": {
-///     "hello": "world",
-///     "key": "321"
-///   }
-/// }
-///
-/// - Parameters:
-///   - input: JSON data
-///   - key: the key which values should be converted
-/// - Returns: JSON data
-func convertJsonNumberToString(
-  in input: Data,
-  at key: String
-) -> Data {
-  guard var string = String(data: input, encoding: .utf8) else {
-    return input
-  }
-  string = string.replacingOccurrences(
-    of: #""\#(key)"( *):( *)([0-9]+)( *)(,*)"#,
-    with: #""\#(key)"$1:$2"$3"$4$5"#,
-    options: [.regularExpression]
-  )
-  guard let output = string.data(using: .utf8) else {
-    return input
-  }
-  return output
-}
-
-/// Replaces all strings at provided key with number equivalents
-///
-/// Example input:
-/// {
-///   "key": "123",
-///   "object": {
-///     "hello": "world",
-///     "key": "321"
-///   }
-/// }
-///
-/// Example output:
-/// {
-///   "key": 123,
-///   "object": {
-///     "hello": "world",
-///     "key": 321
-///   }
-/// }
-///
-/// - Parameters:
-///   - input: JSON data
-///   - key: the key which values should be converted
-/// - Returns: JSON data
-func convertJsonStringToNumber(
-  in input: Data,
-  at key: String
-) -> Data {
-  guard var string = String(data: input, encoding: .utf8) else {
-    return input
-  }
-  string = string.replacingOccurrences(
-    of: #""\#(key)"( *):( *)"([0-9]+)"( *)(,*)"#,
-    with: #""\#(key)"$1:$2$3$4$5"#,
-    options: [.regularExpression]
-  )
-  guard let output = string.data(using: .utf8) else {
-    return input
-  }
-  return output
-}
diff --git a/Sources/XXClient/Models/DHKey.swift b/Sources/XXClient/Models/DHKey.swift
index 5dc94983..9ca08dfc 100644
--- a/Sources/XXClient/Models/DHKey.swift
+++ b/Sources/XXClient/Models/DHKey.swift
@@ -17,12 +17,10 @@ extension DHKey: Codable {
   }
 
   public static func decode(_ data: Data) throws -> Self {
-    let data = convertJsonNumberToString(in: data, at: "Value")
-    return try JSONDecoder().decode(Self.self, from: data)
+    try JSONDecoder().decode(Self.self, from: data)
   }
 
   public func encode() throws -> Data {
-    let data = try JSONEncoder().encode(self)
-    return convertJsonStringToNumber(in: data, at: "Value")
+    try JSONEncoder().encode(self)
   }
 }
diff --git a/Sources/XXClient/Models/GroupMember.swift b/Sources/XXClient/Models/GroupMember.swift
index cb5d9843..8b8c2b75 100644
--- a/Sources/XXClient/Models/GroupMember.swift
+++ b/Sources/XXClient/Models/GroupMember.swift
@@ -17,24 +17,20 @@ extension GroupMember: Codable {
   }
 
   public static func decode(_ data: Data) throws -> Self {
-    let data = convertJsonNumberToString(in: data, at: "Value")
-    return try JSONDecoder().decode(Self.self, from: data)
+    try JSONDecoder().decode(Self.self, from: data)
   }
 
   public func encode() throws -> Data {
-    let data = try JSONEncoder().encode(self)
-    return convertJsonStringToNumber(in: data, at: "Value")
+    try JSONEncoder().encode(self)
   }
 }
 
 extension Array where Element == GroupMember {
   public static func decode(_ data: Data) throws -> Self {
-    let data = convertJsonNumberToString(in: data, at: "Value")
-    return try JSONDecoder().decode(Self.self, from: data)
+    try JSONDecoder().decode(Self.self, from: data)
   }
 
   public func encode() throws -> Data {
-    let data = try JSONEncoder().encode(self)
-    return convertJsonStringToNumber(in: data, at: "Value")
+    try JSONEncoder().encode(self)
   }
 }
diff --git a/Tests/XXClientTests/Helpers/JSONHelpersTests.swift b/Tests/XXClientTests/Helpers/JSONHelpersTests.swift
deleted file mode 100644
index 2ebe8530..00000000
--- a/Tests/XXClientTests/Helpers/JSONHelpersTests.swift
+++ /dev/null
@@ -1,163 +0,0 @@
-import CustomDump
-import XCTest
-@testable import XXClient
-
-final class JSONHelpersTests: XCTestCase {
-  func testConvertingNumberToStringByKey() {
-    assertConvertingJsonNumberToString(
-      input: #"{"number":1234567890,"text":"hello"}"#,
-      key: "number",
-      expected: #"{"number":"1234567890","text":"hello"}"#
-    )
-
-    assertConvertingJsonNumberToString(
-      input: #"{"text":"hello","number":1234567890}"#,
-      key: "number",
-      expected: #"{"text":"hello","number":"1234567890"}"#
-    )
-
-    assertConvertingJsonNumberToString(
-      input: #"{  "number"  :  1234567890  ,  "text"  :  "hello"  }"#,
-      key: "number",
-      expected: #"{  "number"  :  "1234567890"  ,  "text"  :  "hello"  }"#
-    )
-
-    assertConvertingJsonNumberToString(
-      input: #"{  "text"  :  "hello"  ,  "number"  :  1234567890  }"#,
-      key: "number",
-      expected: #"{  "text"  :  "hello"  ,  "number"  :  "1234567890"  }"#
-    )
-
-    assertConvertingJsonNumberToString(
-      input: """
-      {
-        "number": 1234567890,
-        "text": "hello"
-      }
-      """,
-      key: "number",
-      expected: """
-      {
-        "number": "1234567890",
-        "text": "hello"
-      }
-      """
-    )
-
-    assertConvertingJsonNumberToString(
-      input: """
-      {
-        "text": "hello",
-        "number": 1234567890
-      }
-      """,
-      key: "number",
-      expected: """
-      {
-        "text": "hello",
-        "number": "1234567890"
-      }
-      """
-    )
-  }
-
-  func testConvertingStringToNumber() {
-    assertConvertingJsonStringToNumber(
-      input: #"{"number":"1234567890","text":"hello"}"#,
-      key: "number",
-      expected: #"{"number":1234567890,"text":"hello"}"#
-    )
-
-    assertConvertingJsonStringToNumber(
-      input: #"{"text":"hello","number":"1234567890"}"#,
-      key: "number",
-      expected: #"{"text":"hello","number":1234567890}"#
-    )
-
-    assertConvertingJsonStringToNumber(
-      input: #"{  "number"  :  "1234567890"  ,  "text"  :  "hello"  }"#,
-      key: "number",
-      expected: #"{  "number"  :  1234567890  ,  "text"  :  "hello"  }"#
-    )
-
-    assertConvertingJsonStringToNumber(
-      input: #"{  "text"  :  "hello"  ,  "number"  :  "1234567890"  }"#,
-      key: "number",
-      expected: #"{  "text"  :  "hello"  ,  "number"  :  1234567890  }"#
-    )
-
-    assertConvertingJsonStringToNumber(
-      input: """
-      {
-        "number": "1234567890",
-        "text": "hello"
-      }
-      """,
-      key: "number",
-      expected: """
-      {
-        "number": 1234567890,
-        "text": "hello"
-      }
-      """
-    )
-
-    assertConvertingJsonStringToNumber(
-      input: """
-      {
-        "text": "hello",
-        "number": "1234567890"
-      }
-      """,
-      key: "number",
-      expected: """
-      {
-        "text": "hello",
-        "number": 1234567890
-      }
-      """
-    )
-  }
-}
-
-private func assertConvertingJsonNumberToString(
-  input: String,
-  key: String,
-  expected: String,
-  file: StaticString = #file,
-  line: UInt = #line
-) {
-  XCTAssertNoDifference(
-    String(
-      data: convertJsonNumberToString(
-        in: input.data(using: .utf8)!,
-        at: key
-      ),
-      encoding: .utf8
-    )!,
-    expected,
-    file: file,
-    line: line
-  )
-}
-
-private func assertConvertingJsonStringToNumber(
-  input: String,
-  key: String,
-  expected: String,
-  file: StaticString = #file,
-  line: UInt = #line
-) {
-  XCTAssertNoDifference(
-    String(
-      data: convertJsonStringToNumber(
-        in: input.data(using: .utf8)!,
-        at: key
-      ),
-      encoding: .utf8
-    )!,
-    expected,
-    file: file,
-    line: line
-  )
-}
-- 
GitLab