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( ...@@ -17,3 +17,21 @@ func convertJsonNumberToString(
} }
return output 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 import Foundation
public struct GroupMember: Equatable { public struct GroupMember: Equatable {
public init(id: Data, dhKey: DHKey) { public init(id: Data) {
self.id = id self.id = id
self.dhKey = dhKey
} }
public var id: Data public var id: Data
public var dhKey: DHKey
} }
extension GroupMember: Decodable { extension GroupMember: Decodable {
enum CodingKeys: String, CodingKey { enum CodingKeys: String, CodingKey {
case id = "ID" case id = "ID"
case dhKey = "DhKey"
} }
public static func decode(_ data: Data) throws -> Self { 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) return try JSONDecoder().decode(Self.self, from: data)
} }
} }
extension Array where Element == GroupMember { extension Array where Element == GroupMember {
public static func decode(_ data: Data) throws -> Self { 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) return try JSONDecoder().decode(Self.self, from: data)
} }
} }
...@@ -59,6 +59,28 @@ final class ConvertJsonNumberToStringTests: XCTestCase { ...@@ -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( ...@@ -82,3 +104,24 @@ private func assert(
line: line 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 ...@@ -5,14 +5,12 @@ import XCTest
final class GroupMemberTests: XCTestCase { final class GroupMemberTests: XCTestCase {
func testCoding() throws { func testCoding() throws {
let idB64 = "U4x/lrFkvxuXu59LtHLon1sUhPJSCcnZND6SugndnVID" let idB64 = "U4x/lrFkvxuXu59LtHLon1sUhPJSCcnZND6SugndnVID"
let dhKeyValue = "1759426033802606996617132861414734059978289057332806031357800676138355264622676606691435603603751978195460163638145821347601916259127578968570412642641025630452893097179266022832268525346700655861033031712000288680395716922501450233258587788020541937373196899001184700899008948530359980753630443486308876999029238453979779103124291315202352475056237021681172884599194016245219278368648568458514708567045834427853469072638665888791358582182353417065794210125797368093469194927663862565508608719835557592421245749381164023134450699040591219966988201315627676532245052123725278573237006510683695959381015415110970848376498637637944431576313526294020390694483472829278364602405292767170719547347485307956614210210673321959886410245334772057212077704024337636501108566655549055129066343309591274727538343075929837698653965640646190405582788894021694347212874155979958144038307500444865955516612526623220973497735316081265793063949"
let dhKeyFingerprint: UInt64 = 15989433043166758754
let jsonString = """ let jsonString = """
{ {
"ID": "\(idB64)", "ID": "\(idB64)",
"DhKey": { "DhKey": {
"Value": \(dhKeyValue), "Value": 1759426033802606996617132861414734059978289057332806031357800676138355264622676606691435603603751978195460163638145821347601916259127578968570412642641025630452893097179266022832268525346700655861033031712000288680395716922501450233258587788020541937373196899001184700899008948530359980753630443486308876999029238453979779103124291315202352475056237021681172884599194016245219278368648568458514708567045834427853469072638665888791358582182353417065794210125797368093469194927663862565508608719835557592421245749381164023134450699040591219966988201315627676532245052123725278573237006510683695959381015415110970848376498637637944431576313526294020390694483472829278364602405292767170719547347485307956614210210673321959886410245334772057212077704024337636501108566655549055129066343309591274727538343075929837698653965640646190405582788894021694347212874155979958144038307500444865955516612526623220973497735316081265793063949,
"Fingerprint": \(dhKeyFingerprint) "Fingerprint": 15989433043166758754
} }
} }
""" """
...@@ -20,11 +18,7 @@ final class GroupMemberTests: XCTestCase { ...@@ -20,11 +18,7 @@ final class GroupMemberTests: XCTestCase {
let model = try GroupMember.decode(jsonData) let model = try GroupMember.decode(jsonData)
XCTAssertNoDifference(model, GroupMember( XCTAssertNoDifference(model, GroupMember(
id: Data(base64Encoded: idB64)!, id: Data(base64Encoded: idB64)!
dhKey: DHKey(
value: dhKeyValue,
fingerprint: dhKeyFingerprint
)
)) ))
let jsonArrayString = "[\(jsonString)]" let jsonArrayString = "[\(jsonString)]"
......