Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • development
  • integration
  • main
  • v1.0.0
  • v1.1.0
  • v1.1.1
  • v1.1.2
  • v1.1.3
  • v1.1.4
  • v1.1.5
10 results

Target

Select target project
  • mobile/ios/elixxir-dapps-sdk-swift
1 result
Select Git revision
  • development
  • integration
  • main
  • v1.0.0
  • v1.1.0
  • v1.1.1
  • v1.1.2
  • v1.1.3
  • v1.1.4
  • v1.1.5
10 results
Show changes
Commits on Source (4)
......@@ -17,3 +17,21 @@ func convertJsonNumberToString(
}
return output
}
func convertJsonNumberToString(
in input: Data,
minNumberLength: Int
) -> Data {
guard var string = String(data: input, encoding: .utf8) else {
return input
}
string = string.replacingOccurrences(
of: #":( *)([0-9]{\#(minNumberLength),})( *)(,*)"#,
with: #":$1"$2"$3$4"#,
options: [.regularExpression]
)
guard let output = string.data(using: .utf8) else {
return input
}
return output
}
import Foundation
public struct DHKey: Equatable {
public init(value: String, fingerprint: UInt64) {
self.value = value
self.fingerprint = fingerprint
}
public var value: String
public var fingerprint: UInt64
}
extension DHKey: Decodable {
enum CodingKeys: String, CodingKey {
case value = "Value"
case fingerprint = "Fingerprint"
}
public static func decode(_ data: Data) throws -> Self {
let data = convertJsonNumberToString(in: data, at: "Value")
return try JSONDecoder().decode(Self.self, from: data)
}
}
import Foundation
public struct GroupMember: Equatable {
public init(id: Data, dhKey: DHKey) {
public init(id: Data) {
self.id = id
self.dhKey = dhKey
}
public var id: Data
public var dhKey: DHKey
}
extension GroupMember: Decodable {
enum CodingKeys: String, CodingKey {
case id = "ID"
case dhKey = "DhKey"
}
public static func decode(_ data: Data) throws -> Self {
let data = convertJsonNumberToString(in: data, at: "Value")
let data = convertJsonNumberToString(in: data, minNumberLength: 19)
return try JSONDecoder().decode(Self.self, from: data)
}
}
extension Array where Element == GroupMember {
public static func decode(_ data: Data) throws -> Self {
let data = convertJsonNumberToString(in: data, at: "Value")
let data = convertJsonNumberToString(in: data, minNumberLength: 19)
return try JSONDecoder().decode(Self.self, from: data)
}
}
......@@ -59,6 +59,28 @@ final class ConvertJsonNumberToStringTests: XCTestCase {
}
"""
)
assert(
input: """
{
"text": "hello",
"number1": 123456789,
"number2": 1234567890,
"number3": 123456789,
"number4": 1234567890
}
""",
minNumberLength: 10,
expected: """
{
"text": "hello",
"number1": 123456789,
"number2": "1234567890",
"number3": 123456789,
"number4": "1234567890"
}
"""
)
}
}
......@@ -82,3 +104,24 @@ private func assert(
line: line
)
}
private func assert(
input: String,
minNumberLength: Int,
expected: String,
file: StaticString = #file,
line: UInt = #line
) {
XCTAssertNoDifference(
String(
data: convertJsonNumberToString(
in: input.data(using: .utf8)!,
minNumberLength: minNumberLength
),
encoding: .utf8
)!,
expected,
file: file,
line: line
)
}
import CustomDump
import XCTest
@testable import XXClient
final class DHKeyTests: XCTestCase {
func testCoding() throws {
let value = "1759426033802606996617132861414734059978289057332806031357800676138355264622676606691435603603751978195460163638145821347601916259127578968570412642641025630452893097179266022832268525346700655861033031712000288680395716922501450233258587788020541937373196899001184700899008948530359980753630443486308876999029238453979779103124291315202352475056237021681172884599194016245219278368648568458514708567045834427853469072638665888791358582182353417065794210125797368093469194927663862565508608719835557592421245749381164023134450699040591219966988201315627676532245052123725278573237006510683695959381015415110970848376498637637944431576313526294020390694483472829278364602405292767170719547347485307956614210210673321959886410245334772057212077704024337636501108566655549055129066343309591274727538343075929837698653965640646190405582788894021694347212874155979958144038307500444865955516612526623220973497735316081265793063949"
let fingerprint: UInt64 = 15989433043166758754
let jsonString = """
{
"Value": \(value),
"Fingerprint": \(fingerprint)
}
"""
let jsonData = jsonString.data(using: .utf8)!
let model = try DHKey.decode(jsonData)
XCTAssertNoDifference(model, DHKey(
value: value,
fingerprint: fingerprint
))
}
}
......@@ -5,14 +5,12 @@ import XCTest
final class GroupMemberTests: XCTestCase {
func testCoding() throws {
let idB64 = "U4x/lrFkvxuXu59LtHLon1sUhPJSCcnZND6SugndnVID"
let dhKeyValue = "1759426033802606996617132861414734059978289057332806031357800676138355264622676606691435603603751978195460163638145821347601916259127578968570412642641025630452893097179266022832268525346700655861033031712000288680395716922501450233258587788020541937373196899001184700899008948530359980753630443486308876999029238453979779103124291315202352475056237021681172884599194016245219278368648568458514708567045834427853469072638665888791358582182353417065794210125797368093469194927663862565508608719835557592421245749381164023134450699040591219966988201315627676532245052123725278573237006510683695959381015415110970848376498637637944431576313526294020390694483472829278364602405292767170719547347485307956614210210673321959886410245334772057212077704024337636501108566655549055129066343309591274727538343075929837698653965640646190405582788894021694347212874155979958144038307500444865955516612526623220973497735316081265793063949"
let dhKeyFingerprint: UInt64 = 15989433043166758754
let jsonString = """
{
"ID": "\(idB64)",
"DhKey": {
"Value": \(dhKeyValue),
"Fingerprint": \(dhKeyFingerprint)
"Value": 1759426033802606996617132861414734059978289057332806031357800676138355264622676606691435603603751978195460163638145821347601916259127578968570412642641025630452893097179266022832268525346700655861033031712000288680395716922501450233258587788020541937373196899001184700899008948530359980753630443486308876999029238453979779103124291315202352475056237021681172884599194016245219278368648568458514708567045834427853469072638665888791358582182353417065794210125797368093469194927663862565508608719835557592421245749381164023134450699040591219966988201315627676532245052123725278573237006510683695959381015415110970848376498637637944431576313526294020390694483472829278364602405292767170719547347485307956614210210673321959886410245334772057212077704024337636501108566655549055129066343309591274727538343075929837698653965640646190405582788894021694347212874155979958144038307500444865955516612526623220973497735316081265793063949,
"Fingerprint": 15989433043166758754
}
}
"""
......@@ -20,11 +18,7 @@ final class GroupMemberTests: XCTestCase {
let model = try GroupMember.decode(jsonData)
XCTAssertNoDifference(model, GroupMember(
id: Data(base64Encoded: idB64)!,
dhKey: DHKey(
value: dhKeyValue,
fingerprint: dhKeyFingerprint
)
id: Data(base64Encoded: idB64)!
))
let jsonArrayString = "[\(jsonString)]"
......