From f0637c0315222aa29efa635e41ea10b7c8c051f3 Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Sat, 10 Feb 2018 18:26:16 -0500 Subject: [PATCH 01/15] Api updates for lisk 1.0.0 --- Sources/API/Transactions/Transactions.swift | 16 ++++++++++------ Sources/Constants.swift | 2 +- Sources/Core/APIClient.swift | 16 +++++++++------- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/Sources/API/Transactions/Transactions.swift b/Sources/API/Transactions/Transactions.swift index d533614..9aa6432 100644 --- a/Sources/API/Transactions/Transactions.swift +++ b/Sources/API/Transactions/Transactions.swift @@ -35,15 +35,19 @@ public struct Transactions: APIService { extension Transactions { - /// Broadcasts a locally signed transaction to the network - public func broadcast(signedTransaction: LocalTransaction, completionHandler: @escaping (Response) -> Void) { - guard signedTransaction.isSigned else { + /// Broadcasts multiple locally signed transactions to the network + public func broadcast(signedTransactions: [LocalTransaction], completionHandler: @escaping (Response) -> Void) { + guard signedTransactions.filter({ !$0.isSigned }).count == 0 else { let response = APIResponseError(message: "Invalid Transaction - Transaction has not been signed") return completionHandler(.error(response: response)) } - let options = ["transaction": signedTransaction.requestOptions] - let path = client.baseURL.absoluteString.replacingOccurrences(of: "/api", with: "/peer") - client.post(path: "\(path)/transactions", options: options, completionHandler: completionHandler) + let options = signedTransactions.map { $0.requestOptions } + client.post(path: "transactions", options: options, completionHandler: completionHandler) + } + + /// Broadcasts a locally signed transaction to the network + public func broadcast(signedTransaction: LocalTransaction, completionHandler: @escaping (Response) -> Void) { + self.broadcast(signedTransactions: [signedTransaction], completionHandler: completionHandler) } } diff --git a/Sources/Constants.swift b/Sources/Constants.swift index 0ccf1c0..4797684 100644 --- a/Sources/Constants.swift +++ b/Sources/Constants.swift @@ -12,7 +12,7 @@ import Foundation /// https://github.com/LiskHQ/lisk-js/blob/1.0.0/src/constants.js public struct Constants { - public static let version = "0.9.11" + public static let version = "1.0.0" public static let fixedPoint: Double = pow(10, 8) diff --git a/Sources/Core/APIClient.swift b/Sources/Core/APIClient.swift index b0ce8ad..03753a1 100644 --- a/Sources/Core/APIClient.swift +++ b/Sources/Core/APIClient.swift @@ -65,6 +65,7 @@ public struct APIClient { self.baseURL = URL(string: urlPath)! self.headers = [ + "Accept": nethash.contentType, "Content-Type": nethash.contentType, "os": nethash.clientOS, "version": nethash.version, @@ -79,31 +80,31 @@ public struct APIClient { /// Perform GET request @discardableResult - public func get(path: String, options: RequestOptions? = nil, completionHandler: @escaping (Response) -> Void) -> (URLRequest, URLSessionDataTask) { + public func get(path: String, options: Any? = nil, completionHandler: @escaping (Response) -> Void) -> (URLRequest, URLSessionDataTask) { return request(.get, path: path, options: options, completionHandler: completionHandler) } /// Perform POST request @discardableResult - public func post(path: String, options: RequestOptions? = nil, completionHandler: @escaping (Response) -> Void) -> (URLRequest, URLSessionDataTask) { + public func post(path: String, options: Any? = nil, completionHandler: @escaping (Response) -> Void) -> (URLRequest, URLSessionDataTask) { return request(.post, path: path, options: options, completionHandler: completionHandler) } /// Perform PUT request @discardableResult - public func put(path: String, options: RequestOptions? = nil, completionHandler: @escaping (Response) -> Void) -> (URLRequest, URLSessionDataTask) { + public func put(path: String, options: Any? = nil, completionHandler: @escaping (Response) -> Void) -> (URLRequest, URLSessionDataTask) { return request(.put, path: path, options: options, completionHandler: completionHandler) } /// Perform POST request @discardableResult - public func delete(path: String, options: RequestOptions? = nil, completionHandler: @escaping (Response) -> Void) -> (URLRequest, URLSessionDataTask) { + public func delete(path: String, options: Any? = nil, completionHandler: @escaping (Response) -> Void) -> (URLRequest, URLSessionDataTask) { return request(.delete, path: path, options: options, completionHandler: completionHandler) } /// Perform request @discardableResult - public func request(_ httpMethod: HTTPMethod, path: String, options: RequestOptions?, completionHandler: @escaping (Response) -> Void) -> (URLRequest, URLSessionDataTask) { + public func request(_ httpMethod: HTTPMethod, path: String, options: Any?, completionHandler: @escaping (Response) -> Void) -> (URLRequest, URLSessionDataTask) { let request = urlRequest(httpMethod, path: path, options: options) let task = dataTask(request, completionHandler: completionHandler) return (request, task) @@ -131,7 +132,7 @@ public struct APIClient { } /// Builds a URL request based on a given HTTP method and options - private func urlRequest(_ httpMethod: HTTPMethod, path: String, options: RequestOptions? = nil) -> URLRequest { + private func urlRequest(_ httpMethod: HTTPMethod, path: String, options: Any? = nil) -> URLRequest { // Build api url let url = path.contains("://") ? URL(string: path)! : baseURL.appendingPathComponent(path) @@ -160,7 +161,8 @@ public struct APIClient { } /// Converts a dict to url encoded query string - private func urlEncodedQueryString(_ options: RequestOptions) -> String { + private func urlEncodedQueryString(_ options: Any) -> String { + guard let options = options as? RequestOptions else { return "" } let queryParts = options.flatMap { key, value in guard let safeKey = key.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed), From ae4865d23b7c37abf13c9f8db2e47d7af9103f57 Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Tue, 10 Apr 2018 15:30:47 -0400 Subject: [PATCH 02/15] refactor all options api --- .../xcschemes/xcschememanagement.plist | 4 +- Sources/Constants.swift | 9 +++- Sources/Core/APIClient.swift | 50 ++++++++----------- Sources/Core/APINethash.swift | 50 +++++++++++-------- Sources/Core/APINode.swift | 45 ++++++++++------- Sources/Core/APIOptions.swift | 37 ++++++-------- 6 files changed, 102 insertions(+), 93 deletions(-) diff --git a/Lisk.xcodeproj/xcuserdata/andrewbarba.xcuserdatad/xcschemes/xcschememanagement.plist b/Lisk.xcodeproj/xcuserdata/andrewbarba.xcuserdatad/xcschemes/xcschememanagement.plist index 22a4cfd..d128bd1 100644 --- a/Lisk.xcodeproj/xcuserdata/andrewbarba.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Lisk.xcodeproj/xcuserdata/andrewbarba.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ Ed25519PackageDescription.xcscheme orderHint - 2 + 1 Lisk-Package.xcscheme_^#shared#^_ @@ -17,7 +17,7 @@ LiskPackageDescription.xcscheme orderHint - 1 + 2 LiskPackageTests.xcscheme diff --git a/Sources/Constants.swift b/Sources/Constants.swift index 4797684..9deb267 100644 --- a/Sources/Constants.swift +++ b/Sources/Constants.swift @@ -34,9 +34,16 @@ public struct Constants { public static let epoch: Date = Date(timeIntervalSince1970: epochSeconds) } + public struct Nethash { + public static let main = "ed14889723f24ecc54871d058d98ce91ff2f973192075c0155ba2b7b70ad2511" + public static let test = "da3ed6a45429278bac2666961289ca17ad86595d33b31037615d4b8e8f158bba" + public static let beta = "ef3844327d1fd0fc5785291806150c937797bdb34a748c9cd932b7e859e9ca0c" + } + public struct Port { - public static let live: String = "8000" + public static let main: String = "8000" public static let test: String = "7000" + public static let beta: String = "5000" public static let ssl: String = "443" } } diff --git a/Sources/Core/APIClient.swift b/Sources/Core/APIClient.swift index 03753a1..0ce5b08 100644 --- a/Sources/Core/APIClient.swift +++ b/Sources/Core/APIClient.swift @@ -38,41 +38,27 @@ public struct APIClient { public static let mainnet = APIClient() /// Client that connects to Testnet - public static let testnet = APIClient(options: .init(testnet: true)) + public static let testnet = APIClient(options: .testnet) - // MARK: - Init - - public init(options: APIOptions = .init()) { - let port: String = { - if options.ssl { return Constants.Port.ssl } - return options.testnet ? Constants.Port.test : Constants.Port.live - }() - - let hostname: String = { - if let node = options.node { return node.hostname } - let nodes = options.testnet ? APINode.testnet : APINode.mainnet - let node = options.randomNode ? APINode.random(from: nodes) : nodes[0] - return node.hostname - }() - - let nethash = options.testnet ? APINethash.testnet(port: port, nethash: options.nethash) : APINethash.mainnet(port: port, nethash: options.nethash) + /// Client that connects to Betanet + public static let betanet = APIClient(options: .betanet) - let scheme = options.ssl ? "https" : "http" + // MARK: - Init - let urlPath = "\(scheme)://\(hostname):\(port)/api" + public init(options: APIOptions = .mainnet) { // swiftlint:disable:next force_unwrapping - self.baseURL = URL(string: urlPath)! + self.baseURL = URL(string: options.node.origin)! self.headers = [ - "Accept": nethash.contentType, - "Content-Type": nethash.contentType, - "os": nethash.clientOS, - "version": nethash.version, - "minVersion": nethash.minVersion, - "port": nethash.port, - "nethash": nethash.nethash, - "broadhash": nethash.broadhash + "Accept": options.nethash.contentType, + "Content-Type": options.nethash.contentType, + "os": options.nethash.clientOS, + "version": options.nethash.version, + "minVersion": options.nethash.minVersion, + "port": options.nethash.port, + "nethash": options.nethash.nethash, + "broadhash": options.nethash.broadhash ] } @@ -162,14 +148,18 @@ public struct APIClient { /// Converts a dict to url encoded query string private func urlEncodedQueryString(_ options: Any) -> String { - guard let options = options as? RequestOptions else { return "" } - let queryParts = options.flatMap { key, value in + guard let options = options as? RequestOptions else { + return "" + } + + let queryParts: [String] = options.compactMap { key, value in guard let safeKey = key.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed), let safeValue = "\(value)".addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) else { return nil } return "\(safeKey)=\(safeValue)" } + return queryParts.joined(separator: "&") } diff --git a/Sources/Core/APINethash.swift b/Sources/Core/APINethash.swift index 2973fc6..2e9242c 100644 --- a/Sources/Core/APINethash.swift +++ b/Sources/Core/APINethash.swift @@ -8,10 +8,6 @@ import Foundation -private let mainnetNethash = "ed14889723f24ecc54871d058d98ce91ff2f973192075c0155ba2b7b70ad2511" - -private let testnetNethash = "da3ed6a45429278bac2666961289ca17ad86595d33b31037615d4b8e8f158bba" - /// Nethash options that are sent as request headers public struct APINethash { @@ -22,13 +18,7 @@ public struct APINethash { public let clientOS = "lisk-api-swift" /// Minmimum supported api version - public let minVersion = ">=0.5.0" - - /// Current api version - public let version: String - - /// Port to connect to - public let port: String + public let minVersion = ">=1.0.0" /// Nethash public let nethash: String @@ -36,10 +26,16 @@ public struct APINethash { /// Broadhash public let broadhash: String - private init(port: String, nethash: String, broadhash: String, version: String) { - self.port = port + /// Origin port + public let port: String + + /// Current api version + public let version: String + + private init(nethash: String, broadhash: String, port: String, version: String) { self.nethash = nethash self.broadhash = broadhash + self.port = port self.version = version } } @@ -47,14 +43,26 @@ public struct APINethash { extension APINethash { /// Mainnet options - public static func mainnet(port: String, nethash: String? = nil) -> APINethash { - let version = nethash == nil ? Constants.version : "0.0.0a" - return .init(port: port, nethash: nethash ?? mainnetNethash, broadhash: mainnetNethash, version: version) - } + public static let mainnet: APINethash = .init( + nethash: Constants.Nethash.main, + broadhash: Constants.Nethash.main, + port: Constants.Port.ssl, + version: Constants.version + ) /// Testnet options - public static func testnet(port: String, nethash: String? = nil) -> APINethash { - let version = nethash == nil ? Constants.version : "0.0.0a" - return .init(port: port, nethash: nethash ?? testnetNethash, broadhash: testnetNethash, version: version) - } + public static let testnet: APINethash = .init( + nethash: Constants.Nethash.test, + broadhash: Constants.Nethash.test, + port: Constants.Port.test, + version: Constants.version + ) + + /// Betanet options + public static let betanet: APINethash = .init( + nethash: Constants.Nethash.beta, + broadhash: Constants.Nethash.beta, + port: Constants.Port.beta, + version: Constants.version + ) } diff --git a/Sources/Core/APINode.swift b/Sources/Core/APINode.swift index b842c8f..2216e01 100644 --- a/Sources/Core/APINode.swift +++ b/Sources/Core/APINode.swift @@ -11,39 +11,48 @@ import Foundation /// Represents a Lisk node with API enabled public struct APINode { - /// Hostname or IP address of this node - public let hostname: String + /// Origin url of this node + public let origin: String - public init(hostname: String) { - self.hostname = hostname + public init(origin: String) { + self.origin = origin } } -extension APINode { +extension Array where Element == APINode { /// Mainnet nodes public static let mainnet: [APINode] = [ - .init(hostname: "node01.lisk.io"), - .init(hostname: "node02.lisk.io"), - .init(hostname: "node03.lisk.io"), - .init(hostname: "node04.lisk.io"), - .init(hostname: "node05.lisk.io"), - .init(hostname: "node06.lisk.io"), - .init(hostname: "node07.lisk.io"), - .init(hostname: "node08.lisk.io") + .init(origin: "https://node01.lisk.io:443"), + .init(origin: "https://node02.lisk.io:443"), + .init(origin: "https://node03.lisk.io:443"), + .init(origin: "https://node04.lisk.io:443"), + .init(origin: "https://node05.lisk.io:443"), + .init(origin: "https://node06.lisk.io:443"), + .init(origin: "https://node07.lisk.io:443"), + .init(origin: "https://node08.lisk.io:443") ] /// Testnet nodes public static let testnet: [APINode] = [ - .init(hostname: "testnet-wallet.lisknode.io") + .init(origin: "http://testnet.lisk.io:7000") + ] + + /// Betanet nodes + public static let betanet: [APINode] = [ + .init(origin: "http://94.237.41.99:5000"), + .init(origin: "http://209.50.52.217:5000"), + .init(origin: "http://94.237.26.150:5000"), + .init(origin: "http://83.136.249.102:5000"), + .init(origin: "http://94.237.65.179:5000") ] } -extension APINode { +extension Array where Element == APINode { /// Selects a random node from a list of nodes - public static func random(from nodes: [APINode] = APINode.mainnet) -> APINode { - let index = Random.roll(max: nodes.count) - return nodes[index] + public func select(random: Bool = false) -> APINode { + let index: Int = random ? Random.roll(max: count) : 0 + return self[index] } } diff --git a/Sources/Core/APIOptions.swift b/Sources/Core/APIOptions.swift index 58f77d6..bd642b6 100644 --- a/Sources/Core/APIOptions.swift +++ b/Sources/Core/APIOptions.swift @@ -11,34 +11,29 @@ import Foundation /// Options for creating an API client public struct APIOptions { - /// Connect to Testnet - public let testnet: Bool + /// Force node selection + public let nodes: [APINode] - /// Use https: - public let ssl: Bool + /// Nethash + public let nethash: APINethash /// Selects a random node public let randomNode: Bool - /// Force node selection - public let node: APINode? + /// Get a node + public var node: APINode { + return nodes.select(random: randomNode) + } +} - /// Port to connect to - public let port: String? +extension APIOptions { - /// Optional nethash - public let nethash: String? + /// Mainnet options + public static let mainnet: APIOptions = .init(nodes: .mainnet, nethash: .mainnet, randomNode: true) - /// Set of banned nodes, unused for now - public let bannedNodes: [APINode]? + /// Testnet options + public static let testnet: APIOptions = .init(nodes: .testnet, nethash: .testnet, randomNode: true) - public init(testnet: Bool = false, ssl: Bool = true, randomNode: Bool = true, node: APINode? = nil, port: String? = nil, nethash: String? = nil, bannedNodes: [APINode]? = nil) { - self.testnet = testnet - self.ssl = ssl - self.randomNode = randomNode - self.node = node - self.port = port - self.nethash = nethash - self.bannedNodes = bannedNodes - } + /// Betanet options + public static let betanet: APIOptions = .init(nodes: .betanet, nethash: .mainnet, randomNode: true) } From cf69cf4739fe54bf397586570961ba4d16569bb8 Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Tue, 10 Apr 2018 15:59:57 -0400 Subject: [PATCH 03/15] update tests to build (not pass yet) --- Sources/Core/APIClient.swift | 10 +++--- Sources/Core/APINethash.swift | 47 +++++++------------------ Tests/API/Peers/PeersVersionTests.swift | 9 ++++- Tests/LiskTestCase.swift | 4 ++- 4 files changed, 27 insertions(+), 43 deletions(-) diff --git a/Sources/Core/APIClient.swift b/Sources/Core/APIClient.swift index 0ce5b08..40cd203 100644 --- a/Sources/Core/APIClient.swift +++ b/Sources/Core/APIClient.swift @@ -48,17 +48,15 @@ public struct APIClient { public init(options: APIOptions = .mainnet) { // swiftlint:disable:next force_unwrapping - self.baseURL = URL(string: options.node.origin)! + self.baseURL = URL(string: "\(options.node.origin)/api")! self.headers = [ "Accept": options.nethash.contentType, "Content-Type": options.nethash.contentType, - "os": options.nethash.clientOS, - "version": options.nethash.version, - "minVersion": options.nethash.minVersion, - "port": options.nethash.port, + "os": options.nethash.os, "nethash": options.nethash.nethash, - "broadhash": options.nethash.broadhash + "version": options.nethash.version, + "minVersion": options.nethash.minVersion ] } diff --git a/Sources/Core/APINethash.swift b/Sources/Core/APINethash.swift index 2e9242c..cadfcab 100644 --- a/Sources/Core/APINethash.swift +++ b/Sources/Core/APINethash.swift @@ -11,31 +11,23 @@ import Foundation /// Nethash options that are sent as request headers public struct APINethash { - /// HTTP content type - public let contentType = "application/json" + /// Nethash + public let nethash: String - /// Swift os - public let clientOS = "lisk-api-swift" + /// Current api version + public let version: String /// Minmimum supported api version public let minVersion = ">=1.0.0" - /// Nethash - public let nethash: String - - /// Broadhash - public let broadhash: String - - /// Origin port - public let port: String + /// HTTP content type + public let contentType = "application/json" - /// Current api version - public let version: String + /// Swift os + public let os = "lisk-api-swift" - private init(nethash: String, broadhash: String, port: String, version: String) { + private init(nethash: String, version: String) { self.nethash = nethash - self.broadhash = broadhash - self.port = port self.version = version } } @@ -43,26 +35,11 @@ public struct APINethash { extension APINethash { /// Mainnet options - public static let mainnet: APINethash = .init( - nethash: Constants.Nethash.main, - broadhash: Constants.Nethash.main, - port: Constants.Port.ssl, - version: Constants.version - ) + public static let mainnet: APINethash = .init(nethash: Constants.Nethash.main, version: Constants.version) /// Testnet options - public static let testnet: APINethash = .init( - nethash: Constants.Nethash.test, - broadhash: Constants.Nethash.test, - port: Constants.Port.test, - version: Constants.version - ) + public static let testnet: APINethash = .init(nethash: Constants.Nethash.test, version: Constants.version) /// Betanet options - public static let betanet: APINethash = .init( - nethash: Constants.Nethash.beta, - broadhash: Constants.Nethash.beta, - port: Constants.Port.beta, - version: Constants.version - ) + public static let betanet: APINethash = .init(nethash: Constants.Nethash.beta, version: Constants.version) } diff --git a/Tests/API/Peers/PeersVersionTests.swift b/Tests/API/Peers/PeersVersionTests.swift index 4ed10d6..c3cca77 100644 --- a/Tests/API/Peers/PeersVersionTests.swift +++ b/Tests/API/Peers/PeersVersionTests.swift @@ -14,6 +14,13 @@ class PeersVersionTests: LiskTestCase { let peers = Peers(client: mainNetClient) let response = tryRequest { peers.version(completionHandler: $0) } XCTAssert(response.success) - XCTAssertEqual(response.version, "0.9.11") + XCTAssertEqual(response.version, "0.9.13") + } + + func testBetanetVersion() { + let peers = Peers(client: betaNetClient) + let response = tryRequest { peers.version(completionHandler: $0) } + XCTAssert(response.success) + XCTAssertEqual(response.version, "1.0.0") } } diff --git a/Tests/LiskTestCase.swift b/Tests/LiskTestCase.swift index 510eecf..a315152 100644 --- a/Tests/LiskTestCase.swift +++ b/Tests/LiskTestCase.swift @@ -15,7 +15,9 @@ class LiskTestCase: XCTestCase { let testNetClient = APIClient.testnet - let mainPeerClient = APIClient(options: .init(ssl: false, node: .init(hostname: "lisk0.abarba.me"))) + let betaNetClient = APIClient.betanet + + let mainPeerClient = APIClient(options: .init(nodes: [.init(origin: "http://lisk0.abarba.me:8000")], nethash: .mainnet, randomNode: true)) let andrewUsername = "andrew" let andrewAddress = "14987768355736502769L" From b777982c17d327a1bec331748bee8f937a36d84c Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Wed, 11 Apr 2018 14:28:39 -0400 Subject: [PATCH 04/15] Fix betanet addresses, comment cleanup --- .../xcschemes/xcschememanagement.plist | 4 ++-- Sources/API/Accounts/Accounts.swift | 1 - Sources/API/Accounts/Models/AccountModel.swift | 1 - .../API/Accounts/Responses/AccountBalanceResponse.swift | 1 - .../API/Accounts/Responses/AccountPublicKeyResponse.swift | 1 - Sources/API/Accounts/Responses/AccountResponse.swift | 1 - Sources/API/Delegates/Delegates.swift | 1 - Sources/API/Delegates/Models/DelegateModel.swift | 1 - Sources/API/Loader/Loader.swift | 1 - .../API/Loader/Responses/LoaderStatusPingResponse.swift | 1 - Sources/API/Loader/Responses/LoaderStatusResponse.swift | 1 - .../API/Loader/Responses/LoaderStatusSyncResponse.swift | 1 - Sources/Constants.swift | 8 -------- Sources/Core/APIClient.swift | 2 -- Sources/Core/APINethash.swift | 1 - Sources/Core/APINode.swift | 8 ++------ Sources/Core/APIOptions.swift | 1 - Sources/Core/APIResponse.swift | 1 - Sources/Core/APIResponseError.swift | 1 - Tests/API/Accounts/AccountsAccountTests.swift | 1 - Tests/API/Accounts/AccountsBalanceTests.swift | 1 - Tests/API/Accounts/AccountsPublicKeyTests.swift | 1 - Tests/API/Loader/LoaderStatusPingTests.swift | 1 - Tests/API/Loader/LoaderStatusSyncTests.swift | 1 - Tests/API/Loader/LoaderStatusTests.swift | 1 - Tests/LiskTestCase.swift | 7 +++++-- 26 files changed, 9 insertions(+), 41 deletions(-) diff --git a/Lisk.xcodeproj/xcuserdata/andrewbarba.xcuserdatad/xcschemes/xcschememanagement.plist b/Lisk.xcodeproj/xcuserdata/andrewbarba.xcuserdatad/xcschemes/xcschememanagement.plist index d128bd1..22a4cfd 100644 --- a/Lisk.xcodeproj/xcuserdata/andrewbarba.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Lisk.xcodeproj/xcuserdata/andrewbarba.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ Ed25519PackageDescription.xcscheme orderHint - 1 + 2 Lisk-Package.xcscheme_^#shared#^_ @@ -17,7 +17,7 @@ LiskPackageDescription.xcscheme orderHint - 2 + 1 LiskPackageTests.xcscheme diff --git a/Sources/API/Accounts/Accounts.swift b/Sources/API/Accounts/Accounts.swift index a95baf3..1bc35fd 100644 --- a/Sources/API/Accounts/Accounts.swift +++ b/Sources/API/Accounts/Accounts.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/31/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import Foundation diff --git a/Sources/API/Accounts/Models/AccountModel.swift b/Sources/API/Accounts/Models/AccountModel.swift index 47e2174..b9fcde7 100644 --- a/Sources/API/Accounts/Models/AccountModel.swift +++ b/Sources/API/Accounts/Models/AccountModel.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/31/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import Foundation diff --git a/Sources/API/Accounts/Responses/AccountBalanceResponse.swift b/Sources/API/Accounts/Responses/AccountBalanceResponse.swift index 3347c9a..3c6d51a 100644 --- a/Sources/API/Accounts/Responses/AccountBalanceResponse.swift +++ b/Sources/API/Accounts/Responses/AccountBalanceResponse.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/31/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import Foundation diff --git a/Sources/API/Accounts/Responses/AccountPublicKeyResponse.swift b/Sources/API/Accounts/Responses/AccountPublicKeyResponse.swift index f810a0b..4568b98 100644 --- a/Sources/API/Accounts/Responses/AccountPublicKeyResponse.swift +++ b/Sources/API/Accounts/Responses/AccountPublicKeyResponse.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/31/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import Foundation diff --git a/Sources/API/Accounts/Responses/AccountResponse.swift b/Sources/API/Accounts/Responses/AccountResponse.swift index 0286cb5..2818def 100644 --- a/Sources/API/Accounts/Responses/AccountResponse.swift +++ b/Sources/API/Accounts/Responses/AccountResponse.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/31/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import Foundation diff --git a/Sources/API/Delegates/Delegates.swift b/Sources/API/Delegates/Delegates.swift index 6082a1b..9dc5df8 100644 --- a/Sources/API/Delegates/Delegates.swift +++ b/Sources/API/Delegates/Delegates.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/31/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import Foundation diff --git a/Sources/API/Delegates/Models/DelegateModel.swift b/Sources/API/Delegates/Models/DelegateModel.swift index 44830f1..f8d5a12 100644 --- a/Sources/API/Delegates/Models/DelegateModel.swift +++ b/Sources/API/Delegates/Models/DelegateModel.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/31/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import Foundation diff --git a/Sources/API/Loader/Loader.swift b/Sources/API/Loader/Loader.swift index 2d5dafe..2f5d754 100644 --- a/Sources/API/Loader/Loader.swift +++ b/Sources/API/Loader/Loader.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/27/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import Foundation diff --git a/Sources/API/Loader/Responses/LoaderStatusPingResponse.swift b/Sources/API/Loader/Responses/LoaderStatusPingResponse.swift index 581ed2e..f040ff8 100644 --- a/Sources/API/Loader/Responses/LoaderStatusPingResponse.swift +++ b/Sources/API/Loader/Responses/LoaderStatusPingResponse.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/27/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import Foundation diff --git a/Sources/API/Loader/Responses/LoaderStatusResponse.swift b/Sources/API/Loader/Responses/LoaderStatusResponse.swift index 2465b72..e7d3e97 100644 --- a/Sources/API/Loader/Responses/LoaderStatusResponse.swift +++ b/Sources/API/Loader/Responses/LoaderStatusResponse.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/27/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import Foundation diff --git a/Sources/API/Loader/Responses/LoaderStatusSyncResponse.swift b/Sources/API/Loader/Responses/LoaderStatusSyncResponse.swift index f4b02f6..a621347 100644 --- a/Sources/API/Loader/Responses/LoaderStatusSyncResponse.swift +++ b/Sources/API/Loader/Responses/LoaderStatusSyncResponse.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/27/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import Foundation diff --git a/Sources/Constants.swift b/Sources/Constants.swift index 9deb267..4b0c4a5 100644 --- a/Sources/Constants.swift +++ b/Sources/Constants.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/26/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import Foundation @@ -39,11 +38,4 @@ public struct Constants { public static let test = "da3ed6a45429278bac2666961289ca17ad86595d33b31037615d4b8e8f158bba" public static let beta = "ef3844327d1fd0fc5785291806150c937797bdb34a748c9cd932b7e859e9ca0c" } - - public struct Port { - public static let main: String = "8000" - public static let test: String = "7000" - public static let beta: String = "5000" - public static let ssl: String = "443" - } } diff --git a/Sources/Core/APIClient.swift b/Sources/Core/APIClient.swift index 40cd203..c98bece 100644 --- a/Sources/Core/APIClient.swift +++ b/Sources/Core/APIClient.swift @@ -3,12 +3,10 @@ // Lisk // // Created by Andrew Barba on 12/26/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import Foundation - /// Represents an HTTP response public enum Response { case success(response: T) diff --git a/Sources/Core/APINethash.swift b/Sources/Core/APINethash.swift index cadfcab..31947e5 100644 --- a/Sources/Core/APINethash.swift +++ b/Sources/Core/APINethash.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/26/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import Foundation diff --git a/Sources/Core/APINode.swift b/Sources/Core/APINode.swift index 2216e01..a669bb2 100644 --- a/Sources/Core/APINode.swift +++ b/Sources/Core/APINode.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/26/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import Foundation @@ -40,11 +39,8 @@ extension Array where Element == APINode { /// Betanet nodes public static let betanet: [APINode] = [ - .init(origin: "http://94.237.41.99:5000"), - .init(origin: "http://209.50.52.217:5000"), - .init(origin: "http://94.237.26.150:5000"), - .init(origin: "http://83.136.249.102:5000"), - .init(origin: "http://94.237.65.179:5000") + .init(origin: "http://94.237.42.109:5000"), + .init(origin: "http://83.136.252.99:5000") ] } diff --git a/Sources/Core/APIOptions.swift b/Sources/Core/APIOptions.swift index bd642b6..0e45386 100644 --- a/Sources/Core/APIOptions.swift +++ b/Sources/Core/APIOptions.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/26/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import Foundation diff --git a/Sources/Core/APIResponse.swift b/Sources/Core/APIResponse.swift index f487cfb..6c00754 100644 --- a/Sources/Core/APIResponse.swift +++ b/Sources/Core/APIResponse.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/27/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import Foundation diff --git a/Sources/Core/APIResponseError.swift b/Sources/Core/APIResponseError.swift index 13babc6..93a9a44 100644 --- a/Sources/Core/APIResponseError.swift +++ b/Sources/Core/APIResponseError.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/27/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import Foundation diff --git a/Tests/API/Accounts/AccountsAccountTests.swift b/Tests/API/Accounts/AccountsAccountTests.swift index 31a0854..234ca8c 100644 --- a/Tests/API/Accounts/AccountsAccountTests.swift +++ b/Tests/API/Accounts/AccountsAccountTests.swift @@ -3,7 +3,6 @@ // LiskTests // // Created by Andrew Barba on 12/31/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import XCTest diff --git a/Tests/API/Accounts/AccountsBalanceTests.swift b/Tests/API/Accounts/AccountsBalanceTests.swift index 2cc2a5e..fbc562e 100644 --- a/Tests/API/Accounts/AccountsBalanceTests.swift +++ b/Tests/API/Accounts/AccountsBalanceTests.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/31/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import XCTest diff --git a/Tests/API/Accounts/AccountsPublicKeyTests.swift b/Tests/API/Accounts/AccountsPublicKeyTests.swift index 666a784..5c61806 100644 --- a/Tests/API/Accounts/AccountsPublicKeyTests.swift +++ b/Tests/API/Accounts/AccountsPublicKeyTests.swift @@ -3,7 +3,6 @@ // Lisk // // Created by Andrew Barba on 12/31/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import XCTest diff --git a/Tests/API/Loader/LoaderStatusPingTests.swift b/Tests/API/Loader/LoaderStatusPingTests.swift index ab1477b..4c90834 100644 --- a/Tests/API/Loader/LoaderStatusPingTests.swift +++ b/Tests/API/Loader/LoaderStatusPingTests.swift @@ -3,7 +3,6 @@ // LiskTests // // Created by Andrew Barba on 12/27/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import XCTest diff --git a/Tests/API/Loader/LoaderStatusSyncTests.swift b/Tests/API/Loader/LoaderStatusSyncTests.swift index 6f0a33f..55a0439 100644 --- a/Tests/API/Loader/LoaderStatusSyncTests.swift +++ b/Tests/API/Loader/LoaderStatusSyncTests.swift @@ -3,7 +3,6 @@ // LiskTests // // Created by Andrew Barba on 12/27/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import XCTest diff --git a/Tests/API/Loader/LoaderStatusTests.swift b/Tests/API/Loader/LoaderStatusTests.swift index 480029b..8afedf9 100644 --- a/Tests/API/Loader/LoaderStatusTests.swift +++ b/Tests/API/Loader/LoaderStatusTests.swift @@ -3,7 +3,6 @@ // LiskTests // // Created by Andrew Barba on 12/11/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import XCTest diff --git a/Tests/LiskTestCase.swift b/Tests/LiskTestCase.swift index a315152..df8bc2d 100644 --- a/Tests/LiskTestCase.swift +++ b/Tests/LiskTestCase.swift @@ -3,7 +3,6 @@ // LiskTests // // Created by Andrew Barba on 12/27/17. -// Copyright © 2017 Andrew Barba. All rights reserved. // import XCTest @@ -17,7 +16,11 @@ class LiskTestCase: XCTestCase { let betaNetClient = APIClient.betanet - let mainPeerClient = APIClient(options: .init(nodes: [.init(origin: "http://lisk0.abarba.me:8000")], nethash: .mainnet, randomNode: true)) + let mainPeerClient: APIClient = { + let nodes: [APINode] = [.init(origin: "http://lisk0.abarba.me:8000")] + let options = APIOptions(nodes: nodes, nethash: .mainnet, randomNode: true) + return APIClient(options: options) + }() let andrewUsername = "andrew" let andrewAddress = "14987768355736502769L" From e95076abc0254a3f53fc98c88dc20a7784b7eab9 Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Wed, 11 Apr 2018 17:20:29 -0400 Subject: [PATCH 05/15] Update all services to 1.0.0 api --- Lisk.xcodeproj/project.pbxproj | 218 +++++++++--------- Sources/API/Accounts/Accounts.swift | 54 +---- .../API/Accounts/Models/AccountModel.swift | 10 +- .../Responses/AccountBalanceResponse.swift | 21 -- .../Responses/AccountPublicKeyResponse.swift | 19 -- .../Accounts/Responses/AccountResponse.swift | 19 -- .../Accounts/Responses/AccountsResponse.swift | 16 ++ Sources/API/Blocks/Blocks.swift | 80 +------ Sources/API/Blocks/Models/BlockModel.swift | 26 ++- Sources/API/Blocks/Models/FeesModel.swift | 26 --- .../Blocks/Responses/BlockFeeResponse.swift | 18 -- .../Blocks/Responses/BlockFeesResponse.swift | 18 -- .../Responses/BlockHeightResponse.swift | 18 -- .../Responses/BlockMilestoneResponse.swift | 18 -- .../Responses/BlockNethashResponse.swift | 18 -- .../API/Blocks/Responses/BlockResponse.swift | 25 -- .../Responses/BlockRewardResponse.swift | 18 -- .../Responses/BlockStatusResponse.swift | 26 --- .../Responses/BlockSupplyResponse.swift | 18 -- .../API/Blocks/Responses/BlocksResponse.swift | 16 ++ Sources/API/Dapps/Dapps.swift | 36 +++ Sources/API/Dapps/Models/DappModel.swift | 30 +++ .../API/Dapps/Responses/DappsResponse.swift | 16 ++ Sources/API/Delegates/Delegates.swift | 76 +----- .../API/Delegates/Models/DelegateModel.swift | 16 +- Sources/API/Delegates/Models/VoterModel.swift | 22 -- .../Responses/DelegateCountResponse.swift | 19 -- .../Responses/DelegateResponse.swift | 26 --- .../Responses/DelegateVotersResponse.swift | 19 -- .../Responses/DelegatesResponse.swift | 16 ++ Sources/API/Loader/Loader.swift | 53 ----- .../Responses/LoaderStatusPingResponse.swift | 17 -- .../Responses/LoaderStatusResponse.swift | 23 -- .../Responses/LoaderStatusSyncResponse.swift | 27 --- .../API/Node/Models/NodeConstantsModel.swift | 55 +++++ Sources/API/Node/Models/NodeStatusModel.swift | 41 ++++ Sources/API/Node/Node.swift | 39 ++++ .../Responses/NodeConstantsResponse.swift | 17 ++ .../Node/Responses/NodeStatusResponse.swift | 16 ++ Sources/API/Peers/Models/PeerModel.swift | 18 +- Sources/API/Peers/Peers.swift | 43 +--- .../API/Peers/Responses/PeerResponse.swift | 26 --- .../Peers/Responses/PeerVersionResponse.swift | 22 -- .../API/Peers/Responses/PeersResponse.swift | 16 ++ .../Signatures/Models/SignatureModel.swift | 20 ++ .../SignatureBroadcastResponse.swift | 16 ++ .../Responses/SignatureFeeResponse.swift | 18 -- Sources/API/Signatures/Signatures.swift | 35 +-- .../API/Transactions/LocalTransaction.swift | 12 +- .../TransactionBroadcastResponse.swift | 6 +- .../Responses/TransactionResponse.swift | 26 --- .../Responses/TransactionsResponse.swift | 16 ++ Sources/API/Transactions/Transactions.swift | 88 +++---- Sources/Core/APIClient.swift | 19 +- Sources/Core/APIError.swift | 35 +++ Sources/Core/APIModel.swift | 6 + Sources/Core/APIRequest.swift | 34 +++ Sources/Core/APIResponse.swift | 6 +- Sources/Core/APIResponseError.swift | 39 ---- Sources/Core/APIService.swift | 18 -- Sources/Crypto/Crypto.swift | 8 +- Tests/LiskTestCase.swift | 4 +- 62 files changed, 688 insertions(+), 1089 deletions(-) delete mode 100644 Sources/API/Accounts/Responses/AccountBalanceResponse.swift delete mode 100644 Sources/API/Accounts/Responses/AccountPublicKeyResponse.swift delete mode 100644 Sources/API/Accounts/Responses/AccountResponse.swift create mode 100644 Sources/API/Accounts/Responses/AccountsResponse.swift delete mode 100644 Sources/API/Blocks/Models/FeesModel.swift delete mode 100644 Sources/API/Blocks/Responses/BlockFeeResponse.swift delete mode 100644 Sources/API/Blocks/Responses/BlockFeesResponse.swift delete mode 100644 Sources/API/Blocks/Responses/BlockHeightResponse.swift delete mode 100644 Sources/API/Blocks/Responses/BlockMilestoneResponse.swift delete mode 100644 Sources/API/Blocks/Responses/BlockNethashResponse.swift delete mode 100644 Sources/API/Blocks/Responses/BlockResponse.swift delete mode 100644 Sources/API/Blocks/Responses/BlockRewardResponse.swift delete mode 100644 Sources/API/Blocks/Responses/BlockStatusResponse.swift delete mode 100644 Sources/API/Blocks/Responses/BlockSupplyResponse.swift create mode 100644 Sources/API/Blocks/Responses/BlocksResponse.swift create mode 100644 Sources/API/Dapps/Dapps.swift create mode 100644 Sources/API/Dapps/Models/DappModel.swift create mode 100644 Sources/API/Dapps/Responses/DappsResponse.swift delete mode 100644 Sources/API/Delegates/Models/VoterModel.swift delete mode 100644 Sources/API/Delegates/Responses/DelegateCountResponse.swift delete mode 100644 Sources/API/Delegates/Responses/DelegateResponse.swift delete mode 100644 Sources/API/Delegates/Responses/DelegateVotersResponse.swift create mode 100644 Sources/API/Delegates/Responses/DelegatesResponse.swift delete mode 100644 Sources/API/Loader/Loader.swift delete mode 100644 Sources/API/Loader/Responses/LoaderStatusPingResponse.swift delete mode 100644 Sources/API/Loader/Responses/LoaderStatusResponse.swift delete mode 100644 Sources/API/Loader/Responses/LoaderStatusSyncResponse.swift create mode 100644 Sources/API/Node/Models/NodeConstantsModel.swift create mode 100644 Sources/API/Node/Models/NodeStatusModel.swift create mode 100644 Sources/API/Node/Node.swift create mode 100644 Sources/API/Node/Responses/NodeConstantsResponse.swift create mode 100644 Sources/API/Node/Responses/NodeStatusResponse.swift delete mode 100644 Sources/API/Peers/Responses/PeerResponse.swift delete mode 100644 Sources/API/Peers/Responses/PeerVersionResponse.swift create mode 100644 Sources/API/Peers/Responses/PeersResponse.swift create mode 100644 Sources/API/Signatures/Models/SignatureModel.swift create mode 100644 Sources/API/Signatures/Responses/SignatureBroadcastResponse.swift delete mode 100644 Sources/API/Signatures/Responses/SignatureFeeResponse.swift delete mode 100644 Sources/API/Transactions/Responses/TransactionResponse.swift create mode 100644 Sources/API/Transactions/Responses/TransactionsResponse.swift create mode 100644 Sources/Core/APIError.swift create mode 100644 Sources/Core/APIRequest.swift delete mode 100644 Sources/Core/APIResponseError.swift diff --git a/Lisk.xcodeproj/project.pbxproj b/Lisk.xcodeproj/project.pbxproj index 6615fc8..13f8a4f 100644 --- a/Lisk.xcodeproj/project.pbxproj +++ b/Lisk.xcodeproj/project.pbxproj @@ -22,26 +22,22 @@ /* Begin PBXBuildFile section */ 3809038C2013AC1B00E80537 /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3809038A2013AB9D00E80537 /* Random.swift */; }; - 381C95D92003E44E0002FBC4 /* DelegateResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95D82003E44E0002FBC4 /* DelegateResponse.swift */; }; - 381C95DB2003E6060002FBC4 /* DelegateCountResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95DA2003E6060002FBC4 /* DelegateCountResponse.swift */; }; + 381C95D92003E44E0002FBC4 /* DelegatesResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95D82003E44E0002FBC4 /* DelegatesResponse.swift */; }; 381C95DD2003E6D50002FBC4 /* APIService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95DC2003E6D50002FBC4 /* APIService.swift */; }; - 381C95DF2003EAA40002FBC4 /* VoterModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95DE2003EAA40002FBC4 /* VoterModel.swift */; }; - 381C95E12003EADC0002FBC4 /* DelegateVotersResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95E02003EADC0002FBC4 /* DelegateVotersResponse.swift */; }; 381C95E42003EC460002FBC4 /* DelegatesCountTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95E32003EC460002FBC4 /* DelegatesCountTests.swift */; }; 381C95E62003ECE70002FBC4 /* DelegatesGetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95E52003ECE70002FBC4 /* DelegatesGetTests.swift */; }; 381C95E82003EDB70002FBC4 /* DelegatesVotesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95E72003EDB70002FBC4 /* DelegatesVotesTests.swift */; }; 381C95EA2003EE440002FBC4 /* DelegatesListTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95E92003EE440002FBC4 /* DelegatesListTests.swift */; }; 381C95ED2003F4580002FBC4 /* Peers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95EC2003F4580002FBC4 /* Peers.swift */; }; 381C95F02003F4A10002FBC4 /* PeerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95EF2003F4A10002FBC4 /* PeerModel.swift */; }; - 381C95F32003F5CF0002FBC4 /* PeerResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95F22003F5CF0002FBC4 /* PeerResponse.swift */; }; - 381C95F52003F6090002FBC4 /* PeerVersionResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95F42003F6090002FBC4 /* PeerVersionResponse.swift */; }; + 381C95F32003F5CF0002FBC4 /* PeersResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95F22003F5CF0002FBC4 /* PeersResponse.swift */; }; 381C95F82003FA860002FBC4 /* PeersVersionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95F72003FA860002FBC4 /* PeersVersionTests.swift */; }; 381C95FA2003FACE0002FBC4 /* PeersGetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95F92003FACE0002FBC4 /* PeersGetTests.swift */; }; 381C95FE2003FC710002FBC4 /* PeersListTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95FB2003FC0D0002FBC4 /* PeersListTests.swift */; }; 385C827C201AF2B000012D71 /* MnemonicPassphrase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 385C827B201AF2B000012D71 /* MnemonicPassphrase.swift */; }; 385C8280201AF52000012D71 /* MnemonicPassphraseTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 385C827F201AF52000012D71 /* MnemonicPassphraseTests.swift */; }; 3874AB9B1FFC82490008C527 /* Transactions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3874AB9A1FFC82490008C527 /* Transactions.swift */; }; - 3874AB9E1FFC82C50008C527 /* TransactionResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3874AB9D1FFC82C50008C527 /* TransactionResponse.swift */; }; + 3874AB9E1FFC82C50008C527 /* TransactionsResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3874AB9D1FFC82C50008C527 /* TransactionsResponse.swift */; }; 3874ABA11FFC831B0008C527 /* TransactionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3874ABA01FFC831B0008C527 /* TransactionModel.swift */; }; 3874ABA41FFC8E6C0008C527 /* TransactionsGetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3874ABA31FFC8E6C0008C527 /* TransactionsGetTests.swift */; }; 3874ABA61FFC8EEE0008C527 /* TransactionsListTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3874ABA51FFC8EEE0008C527 /* TransactionsListTest.swift */; }; @@ -50,26 +46,25 @@ 3883A8C62002D8AC00460A9B /* TransactionsSigningTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3883A8BD2002929800460A9B /* TransactionsSigningTest.swift */; }; 3883A8C82002DC4E00460A9B /* TransactionsTransferTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3883A8C72002DC4E00460A9B /* TransactionsTransferTests.swift */; }; 3883A8CA2003BED900460A9B /* TransactionBroadcastResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3883A8C92003BED900460A9B /* TransactionBroadcastResponse.swift */; }; - 38B8E222200672780067BA8E /* SignatureFeeResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38B8E220200672730067BA8E /* SignatureFeeResponse.swift */; }; + 38B8E222200672780067BA8E /* SignatureBroadcastResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38B8E220200672730067BA8E /* SignatureBroadcastResponse.swift */; }; 38B8E2232006728A0067BA8E /* Signatures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38B8E21D2006723B0067BA8E /* Signatures.swift */; }; 38C55B962006850400C0CCA4 /* SignaturesFeeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C55B952006850400C0CCA4 /* SignaturesFeeTests.swift */; }; 38C55B982006854000C0CCA4 /* SignaturesRegisterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C55B972006854000C0CCA4 /* SignaturesRegisterTests.swift */; }; 38C66D7B20051FB8007B2FA1 /* Blocks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D7A20051FB8007B2FA1 /* Blocks.swift */; }; 38C66D7F20051FF8007B2FA1 /* BlockModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D7E20051FF8007B2FA1 /* BlockModel.swift */; }; 38C66D8120052032007B2FA1 /* APIModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D8020052032007B2FA1 /* APIModel.swift */; }; - 38C66D83200523F2007B2FA1 /* BlockResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D82200523F2007B2FA1 /* BlockResponse.swift */; }; - 38C66D8D20052777007B2FA1 /* BlockFeeResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D8C20052777007B2FA1 /* BlockFeeResponse.swift */; }; - 38C66D8F20052794007B2FA1 /* BlockFeesResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D8E20052794007B2FA1 /* BlockFeesResponse.swift */; }; - 38C66D91200527C7007B2FA1 /* FeesModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D90200527C7007B2FA1 /* FeesModel.swift */; }; - 38C66D932005281D007B2FA1 /* BlockRewardResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D922005281D007B2FA1 /* BlockRewardResponse.swift */; }; - 38C66D952005283E007B2FA1 /* BlockSupplyResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D942005283E007B2FA1 /* BlockSupplyResponse.swift */; }; - 38C66D9720052865007B2FA1 /* BlockHeightResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D9620052865007B2FA1 /* BlockHeightResponse.swift */; }; - 38C66D99200528B2007B2FA1 /* BlockStatusResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D98200528B2007B2FA1 /* BlockStatusResponse.swift */; }; - 38C66D9B200528FC007B2FA1 /* BlockNethashResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D9A200528FC007B2FA1 /* BlockNethashResponse.swift */; }; - 38C66D9D20052927007B2FA1 /* BlockMilestoneResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D9C20052927007B2FA1 /* BlockMilestoneResponse.swift */; }; + 38C66D83200523F2007B2FA1 /* BlocksResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D82200523F2007B2FA1 /* BlocksResponse.swift */; }; 38C66DA020053D35007B2FA1 /* BlocksMiscTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D9F20053D35007B2FA1 /* BlocksMiscTests.swift */; }; 38C66DA220053DEE007B2FA1 /* BlocksGetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66DA120053DEE007B2FA1 /* BlocksGetTests.swift */; }; 38C66DA420053F55007B2FA1 /* BlocksListTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66DA320053F55007B2FA1 /* BlocksListTests.swift */; }; + 38FB2B01207E9ED700F13CFE /* APIRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FB2AFF207E9E8500F13CFE /* APIRequest.swift */; }; + 38FB2B04207EA6D400F13CFE /* NodeStatusModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FB2B03207EA6D400F13CFE /* NodeStatusModel.swift */; }; + 38FB2B06207EA7EF00F13CFE /* NodeConstantsResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FB2B05207EA7EF00F13CFE /* NodeConstantsResponse.swift */; }; + 38FB2B08207EA81900F13CFE /* NodeConstantsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FB2B07207EA81900F13CFE /* NodeConstantsModel.swift */; }; + 38FB2B0B207EA9AC00F13CFE /* Dapps.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FB2B0A207EA9AC00F13CFE /* Dapps.swift */; }; + 38FB2B0F207EA9F400F13CFE /* DappsResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FB2B0E207EA9F400F13CFE /* DappsResponse.swift */; }; + 38FB2B11207EA9FC00F13CFE /* DappModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FB2B10207EA9FC00F13CFE /* DappModel.swift */; }; + 38FB2B14207EAF7200F13CFE /* SignatureModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FB2B13207EAF7200F13CFE /* SignatureModel.swift */; }; OBJ_101 /* AccountsOpenTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_45 /* AccountsOpenTests.swift */; }; OBJ_102 /* AccountsPublicKeyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_46 /* AccountsPublicKeyTests.swift */; }; OBJ_103 /* LoaderStatusPingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_48 /* LoaderStatusPingTests.swift */; }; @@ -81,22 +76,18 @@ OBJ_110 /* CEd25519.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "Ed25519::CEd25519::Product" /* CEd25519.framework */; }; OBJ_121 /* Accounts.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_10 /* Accounts.swift */; }; OBJ_122 /* AccountModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_12 /* AccountModel.swift */; }; - OBJ_123 /* AccountResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_14 /* AccountResponse.swift */; }; - OBJ_124 /* AccountBalanceResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_15 /* AccountBalanceResponse.swift */; }; - OBJ_126 /* AccountPublicKeyResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_17 /* AccountPublicKeyResponse.swift */; }; + OBJ_123 /* AccountsResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_14 /* AccountsResponse.swift */; }; OBJ_127 /* Delegates.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_19 /* Delegates.swift */; }; OBJ_128 /* DelegateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_21 /* DelegateModel.swift */; }; - OBJ_129 /* Loader.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_23 /* Loader.swift */; }; - OBJ_130 /* LoaderStatusPingResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_25 /* LoaderStatusPingResponse.swift */; }; - OBJ_131 /* LoaderStatusResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_26 /* LoaderStatusResponse.swift */; }; - OBJ_132 /* LoaderStatusSyncResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_27 /* LoaderStatusSyncResponse.swift */; }; + OBJ_129 /* Node.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_23 /* Node.swift */; }; + OBJ_131 /* NodeStatusResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_26 /* NodeStatusResponse.swift */; }; OBJ_133 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_28 /* Constants.swift */; }; OBJ_134 /* APIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_30 /* APIClient.swift */; }; OBJ_135 /* APINethash.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_31 /* APINethash.swift */; }; OBJ_136 /* APINode.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_32 /* APINode.swift */; }; OBJ_137 /* APIOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_33 /* APIOptions.swift */; }; OBJ_138 /* APIResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_34 /* APIResponse.swift */; }; - OBJ_139 /* APIResponseError.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_35 /* APIResponseError.swift */; }; + OBJ_139 /* APIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_35 /* APIError.swift */; }; OBJ_140 /* Crypto.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_37 /* Crypto.swift */; }; OBJ_141 /* SHA256.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_38 /* SHA256.swift */; }; OBJ_143 /* Ed25519.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "Ed25519::Ed25519::Product" /* Ed25519.framework */; }; @@ -177,26 +168,22 @@ /* Begin PBXFileReference section */ 3809038A2013AB9D00E80537 /* Random.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Random.swift; sourceTree = ""; }; - 381C95D82003E44E0002FBC4 /* DelegateResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegateResponse.swift; sourceTree = ""; }; - 381C95DA2003E6060002FBC4 /* DelegateCountResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegateCountResponse.swift; sourceTree = ""; }; + 381C95D82003E44E0002FBC4 /* DelegatesResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegatesResponse.swift; sourceTree = ""; }; 381C95DC2003E6D50002FBC4 /* APIService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIService.swift; sourceTree = ""; }; - 381C95DE2003EAA40002FBC4 /* VoterModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoterModel.swift; sourceTree = ""; }; - 381C95E02003EADC0002FBC4 /* DelegateVotersResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegateVotersResponse.swift; sourceTree = ""; }; 381C95E32003EC460002FBC4 /* DelegatesCountTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegatesCountTests.swift; sourceTree = ""; }; 381C95E52003ECE70002FBC4 /* DelegatesGetTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegatesGetTests.swift; sourceTree = ""; }; 381C95E72003EDB70002FBC4 /* DelegatesVotesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegatesVotesTests.swift; sourceTree = ""; }; 381C95E92003EE440002FBC4 /* DelegatesListTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegatesListTests.swift; sourceTree = ""; }; 381C95EC2003F4580002FBC4 /* Peers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Peers.swift; sourceTree = ""; }; 381C95EF2003F4A10002FBC4 /* PeerModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeerModel.swift; sourceTree = ""; }; - 381C95F22003F5CF0002FBC4 /* PeerResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeerResponse.swift; sourceTree = ""; }; - 381C95F42003F6090002FBC4 /* PeerVersionResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeerVersionResponse.swift; sourceTree = ""; }; + 381C95F22003F5CF0002FBC4 /* PeersResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeersResponse.swift; sourceTree = ""; }; 381C95F72003FA860002FBC4 /* PeersVersionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeersVersionTests.swift; sourceTree = ""; }; 381C95F92003FACE0002FBC4 /* PeersGetTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeersGetTests.swift; sourceTree = ""; }; 381C95FB2003FC0D0002FBC4 /* PeersListTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeersListTests.swift; sourceTree = ""; }; 385C827B201AF2B000012D71 /* MnemonicPassphrase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MnemonicPassphrase.swift; sourceTree = ""; }; 385C827F201AF52000012D71 /* MnemonicPassphraseTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MnemonicPassphraseTests.swift; sourceTree = ""; }; 3874AB9A1FFC82490008C527 /* Transactions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Transactions.swift; sourceTree = ""; }; - 3874AB9D1FFC82C50008C527 /* TransactionResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionResponse.swift; sourceTree = ""; }; + 3874AB9D1FFC82C50008C527 /* TransactionsResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionsResponse.swift; sourceTree = ""; }; 3874ABA01FFC831B0008C527 /* TransactionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionModel.swift; sourceTree = ""; }; 3874ABA31FFC8E6C0008C527 /* TransactionsGetTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionsGetTests.swift; sourceTree = ""; }; 3874ABA51FFC8EEE0008C527 /* TransactionsListTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionsListTest.swift; sourceTree = ""; }; @@ -206,47 +193,42 @@ 3883A8C72002DC4E00460A9B /* TransactionsTransferTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionsTransferTests.swift; sourceTree = ""; }; 3883A8C92003BED900460A9B /* TransactionBroadcastResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionBroadcastResponse.swift; sourceTree = ""; }; 38B8E21D2006723B0067BA8E /* Signatures.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Signatures.swift; sourceTree = ""; }; - 38B8E220200672730067BA8E /* SignatureFeeResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignatureFeeResponse.swift; sourceTree = ""; }; + 38B8E220200672730067BA8E /* SignatureBroadcastResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignatureBroadcastResponse.swift; sourceTree = ""; }; 38C55B952006850400C0CCA4 /* SignaturesFeeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignaturesFeeTests.swift; sourceTree = ""; }; 38C55B972006854000C0CCA4 /* SignaturesRegisterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignaturesRegisterTests.swift; sourceTree = ""; }; 38C66D7A20051FB8007B2FA1 /* Blocks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Blocks.swift; sourceTree = ""; }; 38C66D7E20051FF8007B2FA1 /* BlockModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockModel.swift; sourceTree = ""; }; 38C66D8020052032007B2FA1 /* APIModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIModel.swift; sourceTree = ""; }; - 38C66D82200523F2007B2FA1 /* BlockResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockResponse.swift; sourceTree = ""; }; - 38C66D8C20052777007B2FA1 /* BlockFeeResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockFeeResponse.swift; sourceTree = ""; }; - 38C66D8E20052794007B2FA1 /* BlockFeesResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockFeesResponse.swift; sourceTree = ""; }; - 38C66D90200527C7007B2FA1 /* FeesModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeesModel.swift; sourceTree = ""; }; - 38C66D922005281D007B2FA1 /* BlockRewardResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockRewardResponse.swift; sourceTree = ""; }; - 38C66D942005283E007B2FA1 /* BlockSupplyResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockSupplyResponse.swift; sourceTree = ""; }; - 38C66D9620052865007B2FA1 /* BlockHeightResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockHeightResponse.swift; sourceTree = ""; }; - 38C66D98200528B2007B2FA1 /* BlockStatusResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockStatusResponse.swift; sourceTree = ""; }; - 38C66D9A200528FC007B2FA1 /* BlockNethashResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockNethashResponse.swift; sourceTree = ""; }; - 38C66D9C20052927007B2FA1 /* BlockMilestoneResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockMilestoneResponse.swift; sourceTree = ""; }; + 38C66D82200523F2007B2FA1 /* BlocksResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlocksResponse.swift; sourceTree = ""; }; 38C66D9F20053D35007B2FA1 /* BlocksMiscTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlocksMiscTests.swift; sourceTree = ""; }; 38C66DA120053DEE007B2FA1 /* BlocksGetTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlocksGetTests.swift; sourceTree = ""; }; 38C66DA320053F55007B2FA1 /* BlocksListTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlocksListTests.swift; sourceTree = ""; }; + 38FB2AFF207E9E8500F13CFE /* APIRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIRequest.swift; sourceTree = ""; }; + 38FB2B03207EA6D400F13CFE /* NodeStatusModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NodeStatusModel.swift; sourceTree = ""; }; + 38FB2B05207EA7EF00F13CFE /* NodeConstantsResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NodeConstantsResponse.swift; sourceTree = ""; }; + 38FB2B07207EA81900F13CFE /* NodeConstantsModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NodeConstantsModel.swift; sourceTree = ""; }; + 38FB2B0A207EA9AC00F13CFE /* Dapps.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Dapps.swift; sourceTree = ""; }; + 38FB2B0E207EA9F400F13CFE /* DappsResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DappsResponse.swift; sourceTree = ""; }; + 38FB2B10207EA9FC00F13CFE /* DappModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DappModel.swift; sourceTree = ""; }; + 38FB2B13207EAF7200F13CFE /* SignatureModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignatureModel.swift; sourceTree = ""; }; "Ed25519::CEd25519::Product" /* CEd25519.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CEd25519.framework; sourceTree = BUILT_PRODUCTS_DIR; }; "Ed25519::Ed25519::Product" /* Ed25519.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Ed25519.framework; sourceTree = BUILT_PRODUCTS_DIR; }; "Lisk::Lisk::Product" /* Lisk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Lisk.framework; sourceTree = BUILT_PRODUCTS_DIR; }; "Lisk::LiskTests::Product" /* LiskTests.xctest */ = {isa = PBXFileReference; lastKnownFileType = file; path = LiskTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; OBJ_10 /* Accounts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Accounts.swift; sourceTree = ""; }; OBJ_12 /* AccountModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountModel.swift; sourceTree = ""; }; - OBJ_14 /* AccountResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountResponse.swift; sourceTree = ""; }; - OBJ_15 /* AccountBalanceResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountBalanceResponse.swift; sourceTree = ""; }; - OBJ_17 /* AccountPublicKeyResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountPublicKeyResponse.swift; sourceTree = ""; }; + OBJ_14 /* AccountsResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountsResponse.swift; sourceTree = ""; }; OBJ_19 /* Delegates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Delegates.swift; sourceTree = ""; }; OBJ_21 /* DelegateModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegateModel.swift; sourceTree = ""; }; - OBJ_23 /* Loader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Loader.swift; sourceTree = ""; }; - OBJ_25 /* LoaderStatusPingResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoaderStatusPingResponse.swift; sourceTree = ""; }; - OBJ_26 /* LoaderStatusResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoaderStatusResponse.swift; sourceTree = ""; }; - OBJ_27 /* LoaderStatusSyncResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoaderStatusSyncResponse.swift; sourceTree = ""; }; + OBJ_23 /* Node.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Node.swift; sourceTree = ""; }; + OBJ_26 /* NodeStatusResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NodeStatusResponse.swift; sourceTree = ""; }; OBJ_28 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; OBJ_30 /* APIClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIClient.swift; sourceTree = ""; }; OBJ_31 /* APINethash.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APINethash.swift; sourceTree = ""; }; OBJ_32 /* APINode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APINode.swift; sourceTree = ""; }; OBJ_33 /* APIOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIOptions.swift; sourceTree = ""; }; OBJ_34 /* APIResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIResponse.swift; sourceTree = ""; }; - OBJ_35 /* APIResponseError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIResponseError.swift; sourceTree = ""; }; + OBJ_35 /* APIError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIError.swift; sourceTree = ""; }; OBJ_37 /* Crypto.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Crypto.swift; sourceTree = ""; }; OBJ_38 /* SHA256.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SHA256.swift; sourceTree = ""; }; OBJ_42 /* AccountsAccountTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountsAccountTests.swift; sourceTree = ""; }; @@ -319,9 +301,7 @@ 381C95D72003E4360002FBC4 /* Responses */ = { isa = PBXGroup; children = ( - 381C95DA2003E6060002FBC4 /* DelegateCountResponse.swift */, - 381C95D82003E44E0002FBC4 /* DelegateResponse.swift */, - 381C95E02003EADC0002FBC4 /* DelegateVotersResponse.swift */, + 381C95D82003E44E0002FBC4 /* DelegatesResponse.swift */, ); path = Responses; sourceTree = ""; @@ -358,8 +338,7 @@ 381C95F12003F5C10002FBC4 /* Responses */ = { isa = PBXGroup; children = ( - 381C95F22003F5CF0002FBC4 /* PeerResponse.swift */, - 381C95F42003F6090002FBC4 /* PeerVersionResponse.swift */, + 381C95F22003F5CF0002FBC4 /* PeersResponse.swift */, ); path = Responses; sourceTree = ""; @@ -397,7 +376,7 @@ 3874AB9C1FFC82B20008C527 /* Responses */ = { isa = PBXGroup; children = ( - 3874AB9D1FFC82C50008C527 /* TransactionResponse.swift */, + 3874AB9D1FFC82C50008C527 /* TransactionsResponse.swift */, 3883A8C92003BED900460A9B /* TransactionBroadcastResponse.swift */, ); path = Responses; @@ -425,6 +404,7 @@ 38B8E21C2006722C0067BA8E /* Signatures */ = { isa = PBXGroup; children = ( + 38FB2B12207EAF6800F13CFE /* Models */, 38B8E21F2006725C0067BA8E /* Responses */, 38B8E21D2006723B0067BA8E /* Signatures.swift */, ); @@ -434,7 +414,7 @@ 38B8E21F2006725C0067BA8E /* Responses */ = { isa = PBXGroup; children = ( - 38B8E220200672730067BA8E /* SignatureFeeResponse.swift */, + 38B8E220200672730067BA8E /* SignatureBroadcastResponse.swift */, ); path = Responses; sourceTree = ""; @@ -469,7 +449,6 @@ isa = PBXGroup; children = ( 38C66D7E20051FF8007B2FA1 /* BlockModel.swift */, - 38C66D90200527C7007B2FA1 /* FeesModel.swift */, ); path = Models; sourceTree = ""; @@ -477,15 +456,7 @@ 38C66D7D20051FE6007B2FA1 /* Responses */ = { isa = PBXGroup; children = ( - 38C66D82200523F2007B2FA1 /* BlockResponse.swift */, - 38C66D98200528B2007B2FA1 /* BlockStatusResponse.swift */, - 38C66D8C20052777007B2FA1 /* BlockFeeResponse.swift */, - 38C66D8E20052794007B2FA1 /* BlockFeesResponse.swift */, - 38C66D9620052865007B2FA1 /* BlockHeightResponse.swift */, - 38C66D9C20052927007B2FA1 /* BlockMilestoneResponse.swift */, - 38C66D9A200528FC007B2FA1 /* BlockNethashResponse.swift */, - 38C66D922005281D007B2FA1 /* BlockRewardResponse.swift */, - 38C66D942005283E007B2FA1 /* BlockSupplyResponse.swift */, + 38C66D82200523F2007B2FA1 /* BlocksResponse.swift */, ); path = Responses; sourceTree = ""; @@ -500,6 +471,49 @@ path = Blocks; sourceTree = ""; }; + 38FB2B02207EA6C600F13CFE /* Models */ = { + isa = PBXGroup; + children = ( + 38FB2B07207EA81900F13CFE /* NodeConstantsModel.swift */, + 38FB2B03207EA6D400F13CFE /* NodeStatusModel.swift */, + ); + path = Models; + sourceTree = ""; + }; + 38FB2B09207EA99F00F13CFE /* Dapps */ = { + isa = PBXGroup; + children = ( + 38FB2B0C207EA9E000F13CFE /* Models */, + 38FB2B0D207EA9E400F13CFE /* Responses */, + 38FB2B0A207EA9AC00F13CFE /* Dapps.swift */, + ); + path = Dapps; + sourceTree = ""; + }; + 38FB2B0C207EA9E000F13CFE /* Models */ = { + isa = PBXGroup; + children = ( + 38FB2B10207EA9FC00F13CFE /* DappModel.swift */, + ); + path = Models; + sourceTree = ""; + }; + 38FB2B0D207EA9E400F13CFE /* Responses */ = { + isa = PBXGroup; + children = ( + 38FB2B0E207EA9F400F13CFE /* DappsResponse.swift */, + ); + path = Responses; + sourceTree = ""; + }; + 38FB2B12207EAF6800F13CFE /* Models */ = { + isa = PBXGroup; + children = ( + 38FB2B13207EAF7200F13CFE /* SignatureModel.swift */, + ); + path = Models; + sourceTree = ""; + }; OBJ_11 /* Models */ = { isa = PBXGroup; children = ( @@ -511,9 +525,7 @@ OBJ_13 /* Responses */ = { isa = PBXGroup; children = ( - OBJ_14 /* AccountResponse.swift */, - OBJ_15 /* AccountBalanceResponse.swift */, - OBJ_17 /* AccountPublicKeyResponse.swift */, + OBJ_14 /* AccountsResponse.swift */, ); path = Responses; sourceTree = ""; @@ -532,26 +544,25 @@ isa = PBXGroup; children = ( OBJ_21 /* DelegateModel.swift */, - 381C95DE2003EAA40002FBC4 /* VoterModel.swift */, ); path = Models; sourceTree = ""; }; - OBJ_22 /* Loader */ = { + OBJ_22 /* Node */ = { isa = PBXGroup; children = ( + 38FB2B02207EA6C600F13CFE /* Models */, OBJ_24 /* Responses */, - OBJ_23 /* Loader.swift */, + OBJ_23 /* Node.swift */, ); - path = Loader; + path = Node; sourceTree = ""; }; OBJ_24 /* Responses */ = { isa = PBXGroup; children = ( - OBJ_25 /* LoaderStatusPingResponse.swift */, - OBJ_26 /* LoaderStatusResponse.swift */, - OBJ_27 /* LoaderStatusSyncResponse.swift */, + 38FB2B05207EA7EF00F13CFE /* NodeConstantsResponse.swift */, + OBJ_26 /* NodeStatusResponse.swift */, ); path = Responses; sourceTree = ""; @@ -560,12 +571,13 @@ isa = PBXGroup; children = ( OBJ_30 /* APIClient.swift */, + OBJ_35 /* APIError.swift */, 38C66D8020052032007B2FA1 /* APIModel.swift */, OBJ_31 /* APINethash.swift */, OBJ_32 /* APINode.swift */, OBJ_33 /* APIOptions.swift */, + 38FB2AFF207E9E8500F13CFE /* APIRequest.swift */, OBJ_34 /* APIResponse.swift */, - OBJ_35 /* APIResponseError.swift */, 381C95DC2003E6D50002FBC4 /* APIService.swift */, ); path = Core; @@ -725,8 +737,9 @@ children = ( OBJ_9 /* Accounts */, 38C66D7920051FA7007B2FA1 /* Blocks */, + 38FB2B09207EA99F00F13CFE /* Dapps */, OBJ_18 /* Delegates */, - OBJ_22 /* Loader */, + OBJ_22 /* Node */, 381C95EB2003F4430002FBC4 /* Peers */, 38B8E21C2006722C0067BA8E /* Signatures */, 3874AB991FFC82260008C527 /* Transactions */, @@ -884,55 +897,46 @@ 3874ABA11FFC831B0008C527 /* TransactionModel.swift in Sources */, 38C66D7F20051FF8007B2FA1 /* BlockModel.swift in Sources */, OBJ_121 /* Accounts.swift in Sources */, - 38C66D8F20052794007B2FA1 /* BlockFeesResponse.swift in Sources */, + 38FB2B08207EA81900F13CFE /* NodeConstantsModel.swift in Sources */, 38C66D7B20051FB8007B2FA1 /* Blocks.swift in Sources */, 381C95ED2003F4580002FBC4 /* Peers.swift in Sources */, OBJ_122 /* AccountModel.swift in Sources */, - OBJ_123 /* AccountResponse.swift in Sources */, - OBJ_124 /* AccountBalanceResponse.swift in Sources */, - OBJ_126 /* AccountPublicKeyResponse.swift in Sources */, + OBJ_123 /* AccountsResponse.swift in Sources */, OBJ_127 /* Delegates.swift in Sources */, - 38C66D952005283E007B2FA1 /* BlockSupplyResponse.swift in Sources */, OBJ_128 /* DelegateModel.swift in Sources */, - 38C66D932005281D007B2FA1 /* BlockRewardResponse.swift in Sources */, - OBJ_129 /* Loader.swift in Sources */, + OBJ_129 /* Node.swift in Sources */, + 38FB2B14207EAF7200F13CFE /* SignatureModel.swift in Sources */, 385C827C201AF2B000012D71 /* MnemonicPassphrase.swift in Sources */, 381C95F02003F4A10002FBC4 /* PeerModel.swift in Sources */, 3883A8C120029A9700460A9B /* BytePacker.swift in Sources */, - 38C66D99200528B2007B2FA1 /* BlockStatusResponse.swift in Sources */, - 38C66D91200527C7007B2FA1 /* FeesModel.swift in Sources */, - OBJ_130 /* LoaderStatusPingResponse.swift in Sources */, 3809038C2013AC1B00E80537 /* Random.swift in Sources */, - 381C95DB2003E6060002FBC4 /* DelegateCountResponse.swift in Sources */, - OBJ_131 /* LoaderStatusResponse.swift in Sources */, - OBJ_132 /* LoaderStatusSyncResponse.swift in Sources */, - 381C95F52003F6090002FBC4 /* PeerVersionResponse.swift in Sources */, - 381C95F32003F5CF0002FBC4 /* PeerResponse.swift in Sources */, - 38C66D9720052865007B2FA1 /* BlockHeightResponse.swift in Sources */, + OBJ_131 /* NodeStatusResponse.swift in Sources */, + 381C95F32003F5CF0002FBC4 /* PeersResponse.swift in Sources */, OBJ_133 /* Constants.swift in Sources */, 381C95DD2003E6D50002FBC4 /* APIService.swift in Sources */, - 38C66D8D20052777007B2FA1 /* BlockFeeResponse.swift in Sources */, OBJ_134 /* APIClient.swift in Sources */, + 38FB2B0F207EA9F400F13CFE /* DappsResponse.swift in Sources */, OBJ_135 /* APINethash.swift in Sources */, + 38FB2B01207E9ED700F13CFE /* APIRequest.swift in Sources */, 3883A8CA2003BED900460A9B /* TransactionBroadcastResponse.swift in Sources */, OBJ_136 /* APINode.swift in Sources */, - 38B8E222200672780067BA8E /* SignatureFeeResponse.swift in Sources */, - 381C95DF2003EAA40002FBC4 /* VoterModel.swift in Sources */, + 38FB2B06207EA7EF00F13CFE /* NodeConstantsResponse.swift in Sources */, + 38B8E222200672780067BA8E /* SignatureBroadcastResponse.swift in Sources */, 38C66D8120052032007B2FA1 /* APIModel.swift in Sources */, - 38C66D9D20052927007B2FA1 /* BlockMilestoneResponse.swift in Sources */, + 38FB2B04207EA6D400F13CFE /* NodeStatusModel.swift in Sources */, 3874AB9B1FFC82490008C527 /* Transactions.swift in Sources */, 3883A8C320029BE500460A9B /* LocalTransaction.swift in Sources */, - 381C95E12003EADC0002FBC4 /* DelegateVotersResponse.swift in Sources */, + 38FB2B0B207EA9AC00F13CFE /* Dapps.swift in Sources */, 38B8E2232006728A0067BA8E /* Signatures.swift in Sources */, OBJ_137 /* APIOptions.swift in Sources */, - 381C95D92003E44E0002FBC4 /* DelegateResponse.swift in Sources */, + 381C95D92003E44E0002FBC4 /* DelegatesResponse.swift in Sources */, + 38FB2B11207EA9FC00F13CFE /* DappModel.swift in Sources */, OBJ_138 /* APIResponse.swift in Sources */, - 38C66D9B200528FC007B2FA1 /* BlockNethashResponse.swift in Sources */, - OBJ_139 /* APIResponseError.swift in Sources */, - 38C66D83200523F2007B2FA1 /* BlockResponse.swift in Sources */, + OBJ_139 /* APIError.swift in Sources */, + 38C66D83200523F2007B2FA1 /* BlocksResponse.swift in Sources */, OBJ_140 /* Crypto.swift in Sources */, OBJ_141 /* SHA256.swift in Sources */, - 3874AB9E1FFC82C50008C527 /* TransactionResponse.swift in Sources */, + 3874AB9E1FFC82C50008C527 /* TransactionsResponse.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Sources/API/Accounts/Accounts.swift b/Sources/API/Accounts/Accounts.swift index 1bc35fd..cbcc1de 100644 --- a/Sources/API/Accounts/Accounts.swift +++ b/Sources/API/Accounts/Accounts.swift @@ -19,51 +19,21 @@ public struct Accounts: APIService { } } -// MARK: - Get +// MARK: - List extension Accounts { - /// Retrieve the account info for an address - /// https://docs.lisk.io/docs/lisk-api-080-accounts#section-get-account-information-from-address - public func account(address: String, completionHandler: @escaping (Response) -> Void) { - let options = ["address": address] - client.get(path: "accounts", options: options, completionHandler: completionHandler) - } - - /// Retrieve the public key of a Lisk address - /// https://docs.lisk.io/docs/lisk-api-080-accounts#section-get-account-public-key - public func publicKey(address: String, completionHandler: @escaping (Response) -> Void) { - let options = ["address": address] - client.get(path: "accounts/getPublicKey", options: options, completionHandler: completionHandler) - } -} - -// MARK: - Open - -extension Accounts { + /// Retrieve accounts + public func accounts(address: String? = nil, publicKey: String? = nil, secondPublicKey: String? = nil, username: String? = nil, limit: Int? = nil, offset: Int? = nil, sort: APIRequest.Sort? = nil, completionHandler: @escaping (Response) -> Void) { + var options: RequestOptions = [:] + if let value = address { options["address"] = value } + if let value = publicKey { options["publicKey"] = value } + if let value = secondPublicKey { options["secondPublicKey"] = value } + if let value = username { options["username"] = value } + if let value = limit { options["limit"] = value } + if let value = offset { options["offset"] = value } + if let value = sort?.value { options["sort"] = value } - /// Opens a new/existing Lisk account via secret passphrase - /// https://docs.lisk.io/v1.4/docs/lisk-api-080-accounts#section-get-account-information - public func open(secret: String, completionHandler: @escaping (Response) -> Void) { - do { - let (publicKey, _) = try Crypto.keys(fromSecret: secret) - let address = Crypto.address(fromPublicKey: publicKey) - self.account(address: address, completionHandler: completionHandler) - } catch { - let response = APIResponseError(message: "Invalid secret key") - completionHandler(.error(response: response)) - } - } -} - -// MARK: - Balance - -extension Accounts { - - /// Retrieve the balance of a Lisk address - /// https://docs.lisk.io/docs/lisk-api-080-accounts#section-get-account-balance - public func balance(address: String, completionHandler: @escaping (Response) -> Void) { - let options = ["address": address] - client.get(path: "accounts/getBalance", options: options, completionHandler: completionHandler) + client.get(path: "accounts", options: options, completionHandler: completionHandler) } } diff --git a/Sources/API/Accounts/Models/AccountModel.swift b/Sources/API/Accounts/Models/AccountModel.swift index b9fcde7..0e56dae 100644 --- a/Sources/API/Accounts/Models/AccountModel.swift +++ b/Sources/API/Accounts/Models/AccountModel.swift @@ -13,14 +13,14 @@ extension Accounts { public let address: String - public let balance: String + public let publicKey: String - public let unconfirmedBalance: String + public let balance: String? - public let publicKey: String + public let unconfirmedBalance: String? - public let unconfirmedSignature: UInt8 + public let secondPublicKey: String? - public let secondSignature: UInt8 + public let delegate: Delegates.DelegateModel? } } diff --git a/Sources/API/Accounts/Responses/AccountBalanceResponse.swift b/Sources/API/Accounts/Responses/AccountBalanceResponse.swift deleted file mode 100644 index 3c6d51a..0000000 --- a/Sources/API/Accounts/Responses/AccountBalanceResponse.swift +++ /dev/null @@ -1,21 +0,0 @@ -// -// AccountBalanceResponse.swift -// Lisk -// -// Created by Andrew Barba on 12/31/17. -// - -import Foundation - -/// https://docs.lisk.io/docs/lisk-api-080-accounts#section-get-account-balance -extension Accounts { - - public struct BalanceResponse: APIResponse { - - public let success: Bool - - public let balance: String - - public let unconfirmedBalance: String - } -} diff --git a/Sources/API/Accounts/Responses/AccountPublicKeyResponse.swift b/Sources/API/Accounts/Responses/AccountPublicKeyResponse.swift deleted file mode 100644 index 4568b98..0000000 --- a/Sources/API/Accounts/Responses/AccountPublicKeyResponse.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// AccountPublicKeyResponse.swift -// Lisk -// -// Created by Andrew Barba on 12/31/17. -// - -import Foundation - -/// https://docs.lisk.io/docs/lisk-api-080-accounts#section-get-account-public-key -extension Accounts { - - public struct PublicKeyResponse: APIResponse { - - public let success: Bool - - public let publicKey: String - } -} diff --git a/Sources/API/Accounts/Responses/AccountResponse.swift b/Sources/API/Accounts/Responses/AccountResponse.swift deleted file mode 100644 index 2818def..0000000 --- a/Sources/API/Accounts/Responses/AccountResponse.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// AccountResponse.swift -// Lisk -// -// Created by Andrew Barba on 12/31/17. -// - -import Foundation - -/// https://docs.lisk.io/docs/lisk-api-080-accounts#section-get-account-balance -extension Accounts { - - public struct AccountResponse: APIResponse { - - public let success: Bool - - public let account: AccountModel - } -} diff --git a/Sources/API/Accounts/Responses/AccountsResponse.swift b/Sources/API/Accounts/Responses/AccountsResponse.swift new file mode 100644 index 0000000..f9d2896 --- /dev/null +++ b/Sources/API/Accounts/Responses/AccountsResponse.swift @@ -0,0 +1,16 @@ +// +// AccountsResponse.swift +// Lisk +// +// Created by Andrew Barba on 12/31/17. +// + +import Foundation + +extension Accounts { + + public struct AccountsResponse: APIResponse { + + public let data: [AccountModel] + } +} diff --git a/Sources/API/Blocks/Blocks.swift b/Sources/API/Blocks/Blocks.swift index f618590..bcca12f 100644 --- a/Sources/API/Blocks/Blocks.swift +++ b/Sources/API/Blocks/Blocks.swift @@ -7,7 +7,6 @@ import Foundation -/// Blocks - https://docs.lisk.io/docs/lisk-api-080-blocks public struct Blocks: APIService { /// Client used to send requests @@ -19,89 +18,20 @@ public struct Blocks: APIService { } } -// MARK: - Get - -extension Blocks { - - /// Get a block by id - public func block(id: String, completionHandler: @escaping (Response) -> Void) { - let options = ["id": id] - client.get(path: "blocks/get", options: options, completionHandler: completionHandler) - } -} - // MARK: - List extension Blocks { /// List blocks - /// - /// - Parameters: - /// - generatorPublicKey: who generated the block - /// - height: height of block - /// - previousBlock: previous block - /// - totalAmount: total amount in block - /// - totalFee: total fee of block - /// - limit: limit number of returned transactions - /// - offset: used for paging, offset by certain number of transactions - /// - orderBy: sort results by a column and direction - /// - join: defaults to 'or', specify 'and' for an AND join of passed in parameters - public func blocks(generatorPublicKey: String? = nil, height: Int? = nil, previousBlock: String? = nil, totalAmount: Int? = nil, totalFee: Int? = nil, limit: UInt? = nil, offset: UInt? = nil, orderBy: OrderBy? = nil, join: PropertyJoin = .or, completionHandler: @escaping (Response) -> Void) { + public func blocks(blockId: String? = nil, height: Int? = nil, generatorPublicKey: String? = nil, limit: Int? = nil, offset: Int? = nil, sort: APIRequest.Sort? = nil, completionHandler: @escaping (Response) -> Void) { var options: RequestOptions = [:] - if let value = generatorPublicKey { options["\(join.rawValue)generatorPublicKey"] = value } - if let value = height { options["\(join.rawValue)height"] = value } - if let value = previousBlock { options["\(join.rawValue)previousBlock"] = value } - if let value = totalAmount { options["\(join.rawValue)totalAmount"] = value } - if let value = totalFee { options["\(join.rawValue)totalFee"] = value } + if let value = blockId { options["blockId"] = value } + if let value = height { options["height"] = value } + if let value = generatorPublicKey { options["generatorPublicKey"] = value } if let value = limit { options["limit"] = value } if let value = offset { options["offset"] = value } - if let value = orderBy { options["orderBy"] = "\(value.column):\(value.direction.rawValue)" } + if let value = sort?.value { options["sort"] = value } client.get(path: "blocks", options: options, completionHandler: completionHandler) } } - -// MARK: - Misc - -extension Blocks { - - /// Get current status - public func status(completionHandler: @escaping (Response) -> Void) { - client.get(path: "blocks/getStatus", completionHandler: completionHandler) - } - - /// Get current fee - public func fee(completionHandler: @escaping (Response) -> Void) { - client.get(path: "blocks/getFee", completionHandler: completionHandler) - } - - /// Get current fees - public func fees(completionHandler: @escaping (Response) -> Void) { - client.get(path: "blocks/getFees", completionHandler: completionHandler) - } - - /// Get current reward - public func reward(completionHandler: @escaping (Response) -> Void) { - client.get(path: "blocks/getReward", completionHandler: completionHandler) - } - - /// Get current supply - public func supply(completionHandler: @escaping (Response) -> Void) { - client.get(path: "blocks/getSupply", completionHandler: completionHandler) - } - - /// Get current height - public func height(completionHandler: @escaping (Response) -> Void) { - client.get(path: "blocks/getHeight", completionHandler: completionHandler) - } - - /// Get current nethash - public func nethash(completionHandler: @escaping (Response) -> Void) { - client.get(path: "blocks/getNethash", completionHandler: completionHandler) - } - - /// Get current milestone - public func milestone(completionHandler: @escaping (Response) -> Void) { - client.get(path: "blocks/getMilestone", completionHandler: completionHandler) - } -} diff --git a/Sources/API/Blocks/Models/BlockModel.swift b/Sources/API/Blocks/Models/BlockModel.swift index 2d4a281..672a106 100644 --- a/Sources/API/Blocks/Models/BlockModel.swift +++ b/Sources/API/Blocks/Models/BlockModel.swift @@ -13,31 +13,33 @@ extension Blocks { public let id: String - public let version: Int + public let version: Int? + + public let height: Int public let timestamp: Int - public let height: Int + public let generatorAddress: String? - public let previousBlock: String + public let generatorPublicKey: String - public let numberOfTransactions: Int + public let payloadLength: Int? - public let totalAmount: Int + public let payloadHash: String? - public let totalFee: Int + public let blockSignature: String? - public let reward: Int + public let confirmations: Int? - public let payloadHash: String + public let previousBlockId: String? - public let generatorPublicKey: String + public let numberOfTransactions: Int - public let generatorId: String + public let totalAmount: String - public let blockSignature: String + public let totalFee: String - public let confirmations: Int + public let reward: String public let totalForged: String } diff --git a/Sources/API/Blocks/Models/FeesModel.swift b/Sources/API/Blocks/Models/FeesModel.swift deleted file mode 100644 index 24da24c..0000000 --- a/Sources/API/Blocks/Models/FeesModel.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// FeesModel.swift -// Lisk -// -// Created by Andrew Barba on 1/9/18. -// - -import Foundation - -extension Blocks { - - public struct FeesModel: APIModel { - - public let send: Int - - public let vote: Int - - public let secondsignature: Int - - public let delegate: Int - - public let multisignature: Int - - public let dapp: Int - } -} diff --git a/Sources/API/Blocks/Responses/BlockFeeResponse.swift b/Sources/API/Blocks/Responses/BlockFeeResponse.swift deleted file mode 100644 index 2f77c6f..0000000 --- a/Sources/API/Blocks/Responses/BlockFeeResponse.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// BlockFeeResponse.swift -// Lisk -// -// Created by Andrew Barba on 1/9/18. -// - -import Foundation - -extension Blocks { - - public struct FeeResponse: APIResponse { - - public let success: Bool - - public let fee: Int - } -} diff --git a/Sources/API/Blocks/Responses/BlockFeesResponse.swift b/Sources/API/Blocks/Responses/BlockFeesResponse.swift deleted file mode 100644 index 2c12c55..0000000 --- a/Sources/API/Blocks/Responses/BlockFeesResponse.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// BlockFeesResponse.swift -// Lisk -// -// Created by Andrew Barba on 1/9/18. -// - -import Foundation - -extension Blocks { - - public struct FeesResponse: APIResponse { - - public let success: Bool - - public let fees: FeesModel - } -} diff --git a/Sources/API/Blocks/Responses/BlockHeightResponse.swift b/Sources/API/Blocks/Responses/BlockHeightResponse.swift deleted file mode 100644 index 9b93000..0000000 --- a/Sources/API/Blocks/Responses/BlockHeightResponse.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// BlockHeightResponse.swift -// Lisk -// -// Created by Andrew Barba on 1/9/18. -// - -import Foundation - -extension Blocks { - - public struct HeightResponse: APIResponse { - - public let success: Bool - - public let height: Int - } -} diff --git a/Sources/API/Blocks/Responses/BlockMilestoneResponse.swift b/Sources/API/Blocks/Responses/BlockMilestoneResponse.swift deleted file mode 100644 index 32f401d..0000000 --- a/Sources/API/Blocks/Responses/BlockMilestoneResponse.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// BlockMilestoneResponse.swift -// Lisk -// -// Created by Andrew Barba on 1/9/18. -// - -import Foundation - -extension Blocks { - - public struct MilestoneResponse: APIResponse { - - public let success: Bool - - public let milestone: Int - } -} diff --git a/Sources/API/Blocks/Responses/BlockNethashResponse.swift b/Sources/API/Blocks/Responses/BlockNethashResponse.swift deleted file mode 100644 index 82286eb..0000000 --- a/Sources/API/Blocks/Responses/BlockNethashResponse.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// BlockNethashResponse.swift -// Lisk -// -// Created by Andrew Barba on 1/9/18. -// - -import Foundation - -extension Blocks { - - public struct NethashResponse: APIResponse { - - public let success: Bool - - public let nethash: String - } -} diff --git a/Sources/API/Blocks/Responses/BlockResponse.swift b/Sources/API/Blocks/Responses/BlockResponse.swift deleted file mode 100644 index 468acab..0000000 --- a/Sources/API/Blocks/Responses/BlockResponse.swift +++ /dev/null @@ -1,25 +0,0 @@ -// -// BlockResponse.swift -// Lisk -// -// Created by Andrew Barba on 1/9/18. -// - -import Foundation - -extension Blocks { - - public struct BlockResponse: APIResponse { - - public let success: Bool - - public let block: BlockModel - } - - public struct BlocksResponse: APIResponse { - - public let success: Bool - - public let blocks: [BlockModel] - } -} diff --git a/Sources/API/Blocks/Responses/BlockRewardResponse.swift b/Sources/API/Blocks/Responses/BlockRewardResponse.swift deleted file mode 100644 index 2f155c7..0000000 --- a/Sources/API/Blocks/Responses/BlockRewardResponse.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// BlockRewardResponse.swift -// Lisk -// -// Created by Andrew Barba on 1/9/18. -// - -import Foundation - -extension Blocks { - - public struct RewardResponse: APIResponse { - - public let success: Bool - - public let reward: Int - } -} diff --git a/Sources/API/Blocks/Responses/BlockStatusResponse.swift b/Sources/API/Blocks/Responses/BlockStatusResponse.swift deleted file mode 100644 index 1c3213b..0000000 --- a/Sources/API/Blocks/Responses/BlockStatusResponse.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// BlockStatusResponse.swift -// Lisk -// -// Created by Andrew Barba on 1/9/18. -// - -import Foundation - -extension Blocks { - - public struct StatusResponse: APIResponse { - - public let success: Bool - - public let height: Int - - public let fee: Int - - public let milestone: Int - - public let reward: Int - - public let supply: Int - } -} diff --git a/Sources/API/Blocks/Responses/BlockSupplyResponse.swift b/Sources/API/Blocks/Responses/BlockSupplyResponse.swift deleted file mode 100644 index 4eafbba..0000000 --- a/Sources/API/Blocks/Responses/BlockSupplyResponse.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// BlockSupplyResponse.swift -// Lisk -// -// Created by Andrew Barba on 1/9/18. -// - -import Foundation - -extension Blocks { - - public struct SupplyResponse: APIResponse { - - public let success: Bool - - public let supply: Int - } -} diff --git a/Sources/API/Blocks/Responses/BlocksResponse.swift b/Sources/API/Blocks/Responses/BlocksResponse.swift new file mode 100644 index 0000000..df4bcda --- /dev/null +++ b/Sources/API/Blocks/Responses/BlocksResponse.swift @@ -0,0 +1,16 @@ +// +// BlocksResponse.swift +// Lisk +// +// Created by Andrew Barba on 1/9/18. +// + +import Foundation + +extension Blocks { + + public struct BlocksResponse: APIResponse { + + public let data: [BlockModel] + } +} diff --git a/Sources/API/Dapps/Dapps.swift b/Sources/API/Dapps/Dapps.swift new file mode 100644 index 0000000..2717e7b --- /dev/null +++ b/Sources/API/Dapps/Dapps.swift @@ -0,0 +1,36 @@ +// +// Dapps.swift +// Lisk +// +// Created by Andrew Barba on 4/11/18. +// + +import Foundation + +public struct Dapps: APIService { + + /// Client used to send requests + public let client: APIClient + + /// Init + public init(client: APIClient = .shared) { + self.client = client + } +} + +// MARK: - List + +extension Dapps { + + /// List Dapps + public func blocks(transactionId: String? = nil, name: Int? = nil, limit: Int? = nil, offset: Int? = nil, sort: APIRequest.Sort? = nil, completionHandler: @escaping (Response) -> Void) { + var options: RequestOptions = [:] + if let value = transactionId { options["transactionId"] = value } + if let value = name { options["name"] = value } + if let value = limit { options["limit"] = value } + if let value = offset { options["offset"] = value } + if let value = sort?.value { options["sort"] = value } + + client.get(path: "dapps", options: options, completionHandler: completionHandler) + } +} diff --git a/Sources/API/Dapps/Models/DappModel.swift b/Sources/API/Dapps/Models/DappModel.swift new file mode 100644 index 0000000..0b0a62a --- /dev/null +++ b/Sources/API/Dapps/Models/DappModel.swift @@ -0,0 +1,30 @@ +// +// DappModel.swift +// Lisk +// +// Created by Andrew Barba on 4/11/18. +// + +import Foundation + +extension Dapps { + + public struct DappModel: APIModel { + + public let transactionId: String + + public let icon: String? + + public let category: Int? + + public let type: Int + + public let link: String? + + public let tags: String? + + public let description: String? + + public let name: String + } +} diff --git a/Sources/API/Dapps/Responses/DappsResponse.swift b/Sources/API/Dapps/Responses/DappsResponse.swift new file mode 100644 index 0000000..156320b --- /dev/null +++ b/Sources/API/Dapps/Responses/DappsResponse.swift @@ -0,0 +1,16 @@ +// +// DappsResponse.swift +// Lisk +// +// Created by Andrew Barba on 4/11/18. +// + +import Foundation + +extension Dapps { + + public struct DappsResponse: APIResponse { + + public let data: [DappModel] + } +} diff --git a/Sources/API/Delegates/Delegates.swift b/Sources/API/Delegates/Delegates.swift index 9dc5df8..51bd96e 100644 --- a/Sources/API/Delegates/Delegates.swift +++ b/Sources/API/Delegates/Delegates.swift @@ -7,7 +7,6 @@ import Foundation -/// Delegates - https://docs.lisk.io/docs/lisk-api-080-delegates public struct Delegates: APIService { /// Client used to send requests @@ -19,83 +18,22 @@ public struct Delegates: APIService { } } -// MARK: - Get - -extension Delegates { - - /// Get a delegate by username - public func delegate(username: String, completionHandler: @escaping (Response) -> Void) { - let options = ["username": username] - client.get(path: "delegates/get", options: options, completionHandler: completionHandler) - } - - /// Get a delegate by public key - public func delegate(publicKey: String, completionHandler: @escaping (Response) -> Void) { - let options = ["publicKey": publicKey] - client.get(path: "delegates/get", options: options, completionHandler: completionHandler) - } -} - // MARK: - List extension Delegates { /// List delegate objects - /// - /// - Parameters: - /// - limit: limit number of returned transactions - /// - offset: used for paging, offset by certain number of transactions - /// - orderBy: sort results by a column and direction - public func delegates(limit: UInt? = nil, offset: UInt? = nil, orderBy: OrderBy? = nil, completionHandler: @escaping (Response) -> Void) { + public func delegates(address: String? = nil, publicKey: String? = nil, secondPublicKey: String? = nil, username: String? = nil, search: String? = nil, limit: UInt? = nil, offset: UInt? = nil, sort: APIRequest.Sort? = nil, completionHandler: @escaping (Response) -> Void) { var options: RequestOptions = [:] + if let value = address { options["address"] = value } + if let value = publicKey { options["publicKey"] = value } + if let value = secondPublicKey { options["secondPublicKey"] = value } + if let value = username { options["username"] = value } + if let value = search { options["search"] = value } if let value = limit { options["limit"] = value } if let value = offset { options["offset"] = value } - if let value = orderBy { options["orderBy"] = "\(value.column):\(value.direction.rawValue)" } + if let value = sort?.value { options["sort"] = value } client.get(path: "delegates", options: options, completionHandler: completionHandler) } - - /// Search for a delegate - /// - /// - Parameters: - /// - query: Query string to search for - /// - orderBy: sort results by a column and direction - public func search(query: String, orderBy: OrderBy? = nil, completionHandler: @escaping (Response) -> Void) { - var options: RequestOptions = ["q": query] - if let value = orderBy { options["orderBy"] = "\(value.column):\(value.direction.rawValue)" } - - client.get(path: "delegates/search", options: options, completionHandler: completionHandler) - } -} - -// MARK: - Votes - -extension Delegates { - - /// List which delegates and account is currently voting for - public func votes(address: String, completionHandler: @escaping (Response) -> Void) { - let options = ["address": address] - client.get(path: "accounts/delegates", options: options, completionHandler: completionHandler) - } -} - -// MARK: - Voters - -extension Delegates { - - /// List accounts who voted for the given delegate (public key) - public func voters(publicKey: String, completionHandler: @escaping (Response) -> Void) { - let options = ["publicKey": publicKey] - client.get(path: "delegates/voters", options: options, completionHandler: completionHandler) - } -} - -// MARK: - Count - -extension Delegates { - - /// Returns number of active delegates - public func count(completionHandler: @escaping (Response) -> Void) { - client.get(path: "delegates/count", completionHandler: completionHandler) - } } diff --git a/Sources/API/Delegates/Models/DelegateModel.swift b/Sources/API/Delegates/Models/DelegateModel.swift index f8d5a12..b5a27e1 100644 --- a/Sources/API/Delegates/Models/DelegateModel.swift +++ b/Sources/API/Delegates/Models/DelegateModel.swift @@ -13,20 +13,20 @@ extension Delegates { public let username: String - public let address: String + public let vote: String - public let publicKey: String + public let rewards: String? - public let vote: String + public let producedblocks: Int? - public let producedblocks: UInt64 + public let missedblocks: Int? - public let missedblocks: UInt64 + public let rate: Int? - public let rank: UInt64 + public let approval: Double? - public let approval: Double + public let productivity: Double? - public let productivity: Double + public let rank: Int? } } diff --git a/Sources/API/Delegates/Models/VoterModel.swift b/Sources/API/Delegates/Models/VoterModel.swift deleted file mode 100644 index 3486edd..0000000 --- a/Sources/API/Delegates/Models/VoterModel.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// VoterModel.swift -// Lisk -// -// Created by Andrew Barba on 1/8/18. -// - -import Foundation - -extension Delegates { - - public struct VoterModel: APIModel { - - public let username: String? - - public let address: String - - public let publicKey: String - - public let balance: String - } -} diff --git a/Sources/API/Delegates/Responses/DelegateCountResponse.swift b/Sources/API/Delegates/Responses/DelegateCountResponse.swift deleted file mode 100644 index 597b68c..0000000 --- a/Sources/API/Delegates/Responses/DelegateCountResponse.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// DelegateCountResponse.swift -// Lisk -// -// Created by Andrew Barba on 1/8/18. -// - -import Foundation - -/// https://docs.lisk.io/docs/lisk-api-080-delegates#section-get-delegates-count -extension Delegates { - - public struct CountResponse: APIResponse { - - public let success: Bool - - public let count: UInt64 - } -} diff --git a/Sources/API/Delegates/Responses/DelegateResponse.swift b/Sources/API/Delegates/Responses/DelegateResponse.swift deleted file mode 100644 index b9b6a01..0000000 --- a/Sources/API/Delegates/Responses/DelegateResponse.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// DelegateResponse.swift -// Lisk -// -// Created by Andrew Barba on 1/8/18. -// - -import Foundation - -/// https://docs.lisk.io/docs/lisk-api-080-transactions#section-get-delegate -extension Delegates { - - public struct DelegateResponse: APIResponse { - - public let success: Bool - - public let delegate: DelegateModel - } - - public struct DelegatesResponse: APIResponse { - - public let success: Bool - - public let delegates: [DelegateModel] - } -} diff --git a/Sources/API/Delegates/Responses/DelegateVotersResponse.swift b/Sources/API/Delegates/Responses/DelegateVotersResponse.swift deleted file mode 100644 index 1090579..0000000 --- a/Sources/API/Delegates/Responses/DelegateVotersResponse.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// DelegateVotersResponse.swift -// Lisk -// -// Created by Andrew Barba on 1/8/18. -// - -import Foundation - -/// https://docs.lisk.io/docs/lisk-api-080-delegates#section-get-voters -extension Delegates { - - public struct VotersResponse: APIResponse { - - public let success: Bool - - public let accounts: [VoterModel] - } -} diff --git a/Sources/API/Delegates/Responses/DelegatesResponse.swift b/Sources/API/Delegates/Responses/DelegatesResponse.swift new file mode 100644 index 0000000..72bf1e2 --- /dev/null +++ b/Sources/API/Delegates/Responses/DelegatesResponse.swift @@ -0,0 +1,16 @@ +// +// DelegateResponse.swift +// Lisk +// +// Created by Andrew Barba on 1/8/18. +// + +import Foundation + +extension Delegates { + + public struct DelegatesResponse: APIResponse { + + public let data: [DelegateModel] + } +} diff --git a/Sources/API/Loader/Loader.swift b/Sources/API/Loader/Loader.swift deleted file mode 100644 index 2f5d754..0000000 --- a/Sources/API/Loader/Loader.swift +++ /dev/null @@ -1,53 +0,0 @@ -// -// Loader.swift -// Lisk -// -// Created by Andrew Barba on 12/27/17. -// - -import Foundation - -/// Loader - https://docs.lisk.io/docs/lisk-api-080-loader -public struct Loader: APIService { - - /// Client used to send requests - public let client: APIClient - - /// Init - public init(client: APIClient = .shared) { - self.client = client - } -} - -// MARK: - Status - -extension Loader { - - /// Retrieve the status of a Lisk Node - /// https://docs.lisk.io/docs/lisk-api-080-loader#section-get-loading-status - public func status(completionHandler: @escaping (Response) -> Void) { - client.get(path: "loader/status", completionHandler: completionHandler) - } -} - -// MARK: - Sync - -extension Loader { - - /// Retrieve the sync status of a Lisk Node - /// https://docs.lisk.io/docs/lisk-api-080-loader#section-get-synchronization-status - public func syncStatus(completionHandler: @escaping (Response) -> Void) { - client.get(path: "loader/status/sync", completionHandler: completionHandler) - } -} - -// MARK: - Ping - -extension Loader { - - /// Retrieve the ping status of a Lisk Node - /// https://docs.lisk.io/docs/lisk-api-080-loader#section-get-block-receipt-status - public func pingStatus(completionHandler: @escaping (Response) -> Void) { - client.get(path: "loader/status/ping", completionHandler: completionHandler) - } -} diff --git a/Sources/API/Loader/Responses/LoaderStatusPingResponse.swift b/Sources/API/Loader/Responses/LoaderStatusPingResponse.swift deleted file mode 100644 index f040ff8..0000000 --- a/Sources/API/Loader/Responses/LoaderStatusPingResponse.swift +++ /dev/null @@ -1,17 +0,0 @@ -// -// LoaderStatusPingResponse.swift -// Lisk -// -// Created by Andrew Barba on 12/27/17. -// - -import Foundation - -/// https://docs.lisk.io/docs/lisk-api-080-loader#section-get-block-receipt-status -extension Loader { - - public struct StatusPingResponse: APIResponse { - - public let success: Bool - } -} diff --git a/Sources/API/Loader/Responses/LoaderStatusResponse.swift b/Sources/API/Loader/Responses/LoaderStatusResponse.swift deleted file mode 100644 index e7d3e97..0000000 --- a/Sources/API/Loader/Responses/LoaderStatusResponse.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// LoaderStatusResponse.swift -// Lisk -// -// Created by Andrew Barba on 12/27/17. -// - -import Foundation - -/// https://docs.lisk.io/docs/lisk-api-080-loader#section-get-loading-status -extension Loader { - - public struct StatusResponse: APIResponse { - - public let success: Bool - - public let loaded: Bool - - public let now: UInt64 - - public let blocksCount: UInt64 - } -} diff --git a/Sources/API/Loader/Responses/LoaderStatusSyncResponse.swift b/Sources/API/Loader/Responses/LoaderStatusSyncResponse.swift deleted file mode 100644 index a621347..0000000 --- a/Sources/API/Loader/Responses/LoaderStatusSyncResponse.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// LoaderStatusSyncResponse.swift -// Lisk -// -// Created by Andrew Barba on 12/27/17. -// - -import Foundation - -/// https://docs.lisk.io/docs/lisk-api-080-loader#section-get-synchronization-status -extension Loader { - - public struct StatusSyncResponse: APIResponse { - - public let success: Bool - - public let syncing: Bool - - public let blocks: UInt64 - - public let height: UInt64 - - public let broadhash: String - - public let consensus: UInt64 - } -} diff --git a/Sources/API/Node/Models/NodeConstantsModel.swift b/Sources/API/Node/Models/NodeConstantsModel.swift new file mode 100644 index 0000000..e5ea260 --- /dev/null +++ b/Sources/API/Node/Models/NodeConstantsModel.swift @@ -0,0 +1,55 @@ +// +// NodeConstantsModel.swift +// Lisk +// +// Created by Andrew Barba on 4/11/18. +// + +import Foundation + +extension Node { + + public struct NodeConstantsModel: APIModel { + + public let epoch: String + + public let milestone: String + + public let build: String + + public let commit: String + + public let version: String + + public let nethash: String + + public let supply: String + + public let reward: String + + public let nonce: String + + public let fees: NodeConstantsFeesModel + } + + public struct NodeConstantsFeesModel: APIModel { + + public let send: String + + public let vote: String + + public let secondSignature: String + + public let delegate: String + + public let multisignature: String + + public let dappRegistration: String + + public let dappWithdrawal: String + + public let dappDeposit: String + + public let data: String + } +} diff --git a/Sources/API/Node/Models/NodeStatusModel.swift b/Sources/API/Node/Models/NodeStatusModel.swift new file mode 100644 index 0000000..519817a --- /dev/null +++ b/Sources/API/Node/Models/NodeStatusModel.swift @@ -0,0 +1,41 @@ +// +// NodeStatusModel.swift +// Lisk +// +// Created by Andrew Barba on 4/11/18. +// + +import Foundation + +extension Node { + + public struct NodeStatusModel: APIModel { + + public let broadhash: String + + public let consensus: Int + + public let height: Int + + public let loaded: Bool + + public let networkHeight: Int + + public let syncing: Bool + + public let transactions: NodeStatusTransactionsModel + } + + public struct NodeStatusTransactionsModel: APIModel { + + public let unconfirmed: Int + + public let unsigned: Int + + public let unprocessed: Int + + public let confirmed: Int + + public let total: Int + } +} diff --git a/Sources/API/Node/Node.swift b/Sources/API/Node/Node.swift new file mode 100644 index 0000000..69a28a6 --- /dev/null +++ b/Sources/API/Node/Node.swift @@ -0,0 +1,39 @@ +// +// Node.swift +// Lisk +// +// Created by Andrew Barba on 12/27/17. +// + +import Foundation + +public struct Node: APIService { + + /// Client used to send requests + public let client: APIClient + + /// Init + public init(client: APIClient = .shared) { + self.client = client + } +} + +// MARK: - Constants + +extension Node { + + /// Retrieve the constants of a Lisk Node + public func constants(completionHandler: @escaping (Response) -> Void) { + client.get(path: "node/constants", completionHandler: completionHandler) + } +} + +// MARK: - Status + +extension Node { + + /// Retrieve the status of a Lisk Node + public func status(completionHandler: @escaping (Response) -> Void) { + client.get(path: "node/status", completionHandler: completionHandler) + } +} diff --git a/Sources/API/Node/Responses/NodeConstantsResponse.swift b/Sources/API/Node/Responses/NodeConstantsResponse.swift new file mode 100644 index 0000000..f852204 --- /dev/null +++ b/Sources/API/Node/Responses/NodeConstantsResponse.swift @@ -0,0 +1,17 @@ +// +// NodeConstantsResponse.swift +// Lisk +// +// Created by Andrew Barba on 4/11/18. +// + +import Foundation + +extension Node { + + public struct NodeConstantsResponse: APIResponse { + + public let data: NodeStatusModel + } +} + diff --git a/Sources/API/Node/Responses/NodeStatusResponse.swift b/Sources/API/Node/Responses/NodeStatusResponse.swift new file mode 100644 index 0000000..4fc5151 --- /dev/null +++ b/Sources/API/Node/Responses/NodeStatusResponse.swift @@ -0,0 +1,16 @@ +// +// NodeStatusResponse.swift +// Lisk +// +// Created by Andrew Barba on 12/27/17. +// + +import Foundation + +extension Node { + + public struct NodeStatusResponse: APIResponse { + + public let data: NodeStatusModel + } +} diff --git a/Sources/API/Peers/Models/PeerModel.swift b/Sources/API/Peers/Models/PeerModel.swift index df0296f..3e4e393 100644 --- a/Sources/API/Peers/Models/PeerModel.swift +++ b/Sources/API/Peers/Models/PeerModel.swift @@ -17,22 +17,22 @@ extension Peers { case connected = 2 } - public let ip: String + public let ip: String? - public let port: UInt64 + public let httpPort: Int? - public let state: State + public let wsPort: Int? - public let os: String + public let os: String? - public let version: String + public let version: String? - public let broadhash: String + public let state: State - public let height: UInt64 + public let height: Int? - public let updated: Double + public let broadhash: String? - public let nonce: String + public let nonce: String? } } diff --git a/Sources/API/Peers/Peers.swift b/Sources/API/Peers/Peers.swift index aae55fb..88c4cb6 100644 --- a/Sources/API/Peers/Peers.swift +++ b/Sources/API/Peers/Peers.swift @@ -7,7 +7,6 @@ import Foundation -/// Peers - https://docs.lisk.io/docs/lisk-api-080-peers public struct Peers: APIService { /// Client used to send requests @@ -19,50 +18,22 @@ public struct Peers: APIService { } } -// MARK: - Get - -extension Peers { - - /// Get a peer by ip and port - public func peer(ip: String, port: Int, completionHandler: @escaping (Response) -> Void) { - let options: RequestOptions = ["ip": ip, "port": port] - client.get(path: "peers/get", options: options, completionHandler: completionHandler) - } -} - // MARK: - List extension Peers { /// List peers - /// - /// - Parameters: - /// - state: state of peer - /// - version: version of peer - /// - os: os of peer - /// - limit: limit number of returned transactions - /// - offset: used for paging, offset by certain number of transactions - /// - orderBy: sort results by a column and direction - /// - join: defaults to 'or', specify 'and' for an AND join of passed in parameters - public func peers(state: PeerModel.State? = nil, version: String? = nil, os: String? = nil, limit: UInt? = nil, offset: UInt? = nil, orderBy: OrderBy? = nil, join: PropertyJoin = .or, completionHandler: @escaping (Response) -> Void) { + public func peers(ip: String? = nil, state: PeerModel.State? = nil, version: String? = nil, os: String? = nil, height: Int? = nil, limit: UInt? = nil, offset: UInt? = nil, sort: APIRequest.Sort? = nil, completionHandler: @escaping (Response) -> Void) { var options: RequestOptions = [:] - if let value = state { options["\(join.rawValue)state"] = value.rawValue } - if let value = version { options["\(join.rawValue)version"] = value } - if let value = os { options["\(join.rawValue)os"] = value } + if let value = ip { options["ip"] = value } + if let value = state?.rawValue { options["state"] = value } + if let value = version { options["version"] = value } + if let value = os { options["os"] = value } + if let value = height { options["height"] = value } if let value = limit { options["limit"] = value } if let value = offset { options["offset"] = value } - if let value = orderBy { options["orderBy"] = "\(value.column):\(value.direction.rawValue)" } + if let value = sort?.value { options["sort"] = value } client.get(path: "peers", options: options, completionHandler: completionHandler) } } - -// MARK: - Version - -extension Peers { - - /// Returns current nodes version and build - public func version(completionHandler: @escaping (Response) -> Void) { - client.get(path: "peers/version", completionHandler: completionHandler) - } -} diff --git a/Sources/API/Peers/Responses/PeerResponse.swift b/Sources/API/Peers/Responses/PeerResponse.swift deleted file mode 100644 index 6e70ee6..0000000 --- a/Sources/API/Peers/Responses/PeerResponse.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// PeerResponse.swift -// Lisk -// -// Created by Andrew Barba on 1/8/18. -// - -import Foundation - -/// https://docs.lisk.io/docs/lisk-api-080-peers#section-get-peer -extension Peers { - - public struct PeerResponse: APIResponse { - - public let success: Bool - - public let peer: PeerModel - } - - public struct PeersResponse: APIResponse { - - public let success: Bool - - public let peers: [PeerModel] - } -} diff --git a/Sources/API/Peers/Responses/PeerVersionResponse.swift b/Sources/API/Peers/Responses/PeerVersionResponse.swift deleted file mode 100644 index 331ebdb..0000000 --- a/Sources/API/Peers/Responses/PeerVersionResponse.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// PeerVersionResponse.swift -// Lisk -// -// Created by Andrew Barba on 1/8/18. -// - -import Foundation - -/// https://docs.lisk.io/docs/lisk-api-080-peers#section-get-peer-version-build-time -extension Peers { - - public struct VersionResponse: APIResponse { - - public let success: Bool - - public let version: String - - public let build: String - } -} - diff --git a/Sources/API/Peers/Responses/PeersResponse.swift b/Sources/API/Peers/Responses/PeersResponse.swift new file mode 100644 index 0000000..ec7d07f --- /dev/null +++ b/Sources/API/Peers/Responses/PeersResponse.swift @@ -0,0 +1,16 @@ +// +// PeerResponse.swift +// Lisk +// +// Created by Andrew Barba on 1/8/18. +// + +import Foundation + +extension Peers { + + public struct PeersResponse: APIResponse { + + public let data: [PeerModel] + } +} diff --git a/Sources/API/Signatures/Models/SignatureModel.swift b/Sources/API/Signatures/Models/SignatureModel.swift new file mode 100644 index 0000000..ede7fb6 --- /dev/null +++ b/Sources/API/Signatures/Models/SignatureModel.swift @@ -0,0 +1,20 @@ +// +// SignatureModel.swift +// Lisk +// +// Created by Andrew Barba on 4/11/18. +// + +import Foundation + +extension Signatures { + + public struct SignatureModel: APIModel { + + public let transactionId: String + + public let publicKey: String + + public let signature: String + } +} diff --git a/Sources/API/Signatures/Responses/SignatureBroadcastResponse.swift b/Sources/API/Signatures/Responses/SignatureBroadcastResponse.swift new file mode 100644 index 0000000..c62f894 --- /dev/null +++ b/Sources/API/Signatures/Responses/SignatureBroadcastResponse.swift @@ -0,0 +1,16 @@ +// +// SignatureBroadcastResponse.swift +// Lisk +// +// Created by Andrew Barba on 1/10/18. +// + +import Foundation + +extension Signatures { + + public struct SignatureBroadcastResponse: APIResponse { + + public let data: APIMessageModel + } +} diff --git a/Sources/API/Signatures/Responses/SignatureFeeResponse.swift b/Sources/API/Signatures/Responses/SignatureFeeResponse.swift deleted file mode 100644 index 9b13bf8..0000000 --- a/Sources/API/Signatures/Responses/SignatureFeeResponse.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// SignatureFeeResponse.swift -// Lisk -// -// Created by Andrew Barba on 1/10/18. -// - -import Foundation - -extension Signatures { - - public struct FeeResponse: APIResponse { - - public let success: Bool - - public let fee: Int - } -} diff --git a/Sources/API/Signatures/Signatures.swift b/Sources/API/Signatures/Signatures.swift index 6c9a1e7..2407eb1 100644 --- a/Sources/API/Signatures/Signatures.swift +++ b/Sources/API/Signatures/Signatures.swift @@ -19,31 +19,20 @@ public struct Signatures: APIService { } } -// MARK: - Register +// MARK: - Submit extension Signatures { - public func register(secondSecret: String, secret: String, completionHandler: @escaping (Response) -> Void) { - do { - let (publicKey, _) = try Crypto.keys(fromSecret: secondSecret) - let asset = ["signature": ["publicKey": publicKey]] - let transaction = LocalTransaction(.registerSecondPassphrase, amount: 0, asset: asset) - let signedTransaction = try transaction.signed(secret: secret, secondSecret: nil) - print(signedTransaction) - Transactions().broadcast(signedTransaction: signedTransaction, completionHandler: completionHandler) - } catch { - let response = APIResponseError(message: error.localizedDescription) - completionHandler(.error(response: response)) - } - } -} - -// MARK: - Fee - -extension Signatures { - - /// Get fee for registering second passphrase - public func fee(completionHandler: @escaping (Response) -> Void) { - client.get(path: "signatures/fee", completionHandler: completionHandler) + /// Submits a sognature to the network + public func submit(signature: SignatureModel, completionHandler: @escaping (Response) -> Void) { + let options: RequestOptions = [ + "signature": [ + "transactionId": signature.transactionId, + "publicKey": signature.publicKey, + "signature": signature.signature + ] + ] + + client.post(path: "signatures", options: options, completionHandler: completionHandler) } } diff --git a/Sources/API/Transactions/LocalTransaction.swift b/Sources/API/Transactions/LocalTransaction.swift index fbd9d15..8f3e8df 100644 --- a/Sources/API/Transactions/LocalTransaction.swift +++ b/Sources/API/Transactions/LocalTransaction.swift @@ -101,11 +101,11 @@ public struct LocalTransaction { } /// Returns a new signed transaction based on this transaction - public func signed(secret: String, secondSecret: String? = nil) throws -> LocalTransaction { - let keyPair = try Crypto.keyPair(fromSecret: secret) + public func signed(passphrase: String, secondPassphrase: String? = nil) throws -> LocalTransaction { + let keyPair = try Crypto.keyPair(fromPassphrase: passphrase) let secondKeyPair: KeyPair? - if let secondSecret = secondSecret { - secondKeyPair = try Crypto.keyPair(fromSecret: secondSecret) + if let secondPassphrase = secondPassphrase { + secondKeyPair = try Crypto.keyPair(fromPassphrase: secondPassphrase) } else { secondKeyPair = nil } @@ -122,8 +122,8 @@ public struct LocalTransaction { } /// Signs the current transaction - public mutating func sign(secret: String, secondSecret: String? = nil) throws { - let transaction = try signed(secret: secret, secondSecret: secondSecret) + public mutating func sign(passphrase: String, secondPassphrase: String? = nil) throws { + let transaction = try signed(passphrase: passphrase, secondPassphrase: secondPassphrase) self.id = transaction.id self.senderPublicKey = transaction.senderPublicKey self.signature = transaction.signature diff --git a/Sources/API/Transactions/Responses/TransactionBroadcastResponse.swift b/Sources/API/Transactions/Responses/TransactionBroadcastResponse.swift index c9fab41..d2ca28e 100644 --- a/Sources/API/Transactions/Responses/TransactionBroadcastResponse.swift +++ b/Sources/API/Transactions/Responses/TransactionBroadcastResponse.swift @@ -9,10 +9,8 @@ import Foundation extension Transactions { - public struct BroadcastResponse: APIResponse { + public struct TransactionBroadcastResponse: APIResponse { - public let success: Bool - - public let transactionId: String + public let data: APIMessageModel } } diff --git a/Sources/API/Transactions/Responses/TransactionResponse.swift b/Sources/API/Transactions/Responses/TransactionResponse.swift deleted file mode 100644 index b9125ee..0000000 --- a/Sources/API/Transactions/Responses/TransactionResponse.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// TransactionResponse.swift -// Lisk -// -// Created by Andrew Barba on 1/2/18. -// - -import Foundation - -/// https://docs.lisk.io/docs/lisk-api-080-transactions#section-get-transaction -extension Transactions { - - public struct TransactionResponse: APIResponse { - - public let success: Bool - - public let transaction: TransactionModel - } - - public struct TransactionsResponse: APIResponse { - - public let success: Bool - - public let transactions: [TransactionModel] - } -} diff --git a/Sources/API/Transactions/Responses/TransactionsResponse.swift b/Sources/API/Transactions/Responses/TransactionsResponse.swift new file mode 100644 index 0000000..d122618 --- /dev/null +++ b/Sources/API/Transactions/Responses/TransactionsResponse.swift @@ -0,0 +1,16 @@ +// +// TransactionResponse.swift +// Lisk +// +// Created by Andrew Barba on 1/2/18. +// + +import Foundation + +extension Transactions { + + public struct TransactionsResponse: APIResponse { + + public let data: [TransactionModel] + } +} diff --git a/Sources/API/Transactions/Transactions.swift b/Sources/API/Transactions/Transactions.swift index 9aa6432..fde136a 100644 --- a/Sources/API/Transactions/Transactions.swift +++ b/Sources/API/Transactions/Transactions.swift @@ -31,23 +31,22 @@ public struct Transactions: APIService { } } -// MARK: - Broadcast +// MARK: - Submit extension Transactions { - /// Broadcasts multiple locally signed transactions to the network - public func broadcast(signedTransactions: [LocalTransaction], completionHandler: @escaping (Response) -> Void) { - guard signedTransactions.filter({ !$0.isSigned }).count == 0 else { - let response = APIResponseError(message: "Invalid Transaction - Transaction has not been signed") + /// Submit a signed transaction to the network + public func submit(signedTransaction: LocalTransaction, completionHandler: @escaping (Response) -> Void) { + guard signedTransaction.isSigned else { + let response = APIError(message: "Invalid Transaction - Transaction has not been signed") return completionHandler(.error(response: response)) } - let options = signedTransactions.map { $0.requestOptions } - client.post(path: "transactions", options: options, completionHandler: completionHandler) - } - /// Broadcasts a locally signed transaction to the network - public func broadcast(signedTransaction: LocalTransaction, completionHandler: @escaping (Response) -> Void) { - self.broadcast(signedTransactions: [signedTransaction], completionHandler: completionHandler) + let options: RequestOptions = [ + "transaction": signedTransaction.requestOptions + ] + + client.post(path: "transactions", options: options, completionHandler: completionHandler) } } @@ -56,38 +55,34 @@ extension Transactions { extension Transactions { /// Transfer LSK to a Lisk address using Local Signing - public func transfer(lsk: Double, to recipient: String, secret: String, secondSecret: String? = nil, completionHandler: @escaping (Response) -> Void) { + public func transfer(lsk: Double, to recipient: String, passphrase: String, secondPassphrase: String? = nil, completionHandler: @escaping (Response) -> Void) { do { let transaction = LocalTransaction(.transfer, lsk: lsk, recipientId: recipient) - let signedTransaction = try transaction.signed(secret: secret, secondSecret: secondSecret) - broadcast(signedTransaction: signedTransaction, completionHandler: completionHandler) + let signedTransaction = try transaction.signed(passphrase: passphrase, secondPassphrase: secondPassphrase) + submit(signedTransaction: signedTransaction, completionHandler: completionHandler) } catch { - let response = APIResponseError(message: error.localizedDescription) + let response = APIError(message: error.localizedDescription) completionHandler(.error(response: response)) } } } -// MARK: - Get +// MARK: - Register Second Passphrase extension Transactions { - /// Get a transaction by id - public func transaction(id: String, completionHandler: @escaping (Response) -> Void) { - let options = ["id": id] - client.get(path: "transactions/get", options: options, completionHandler: completionHandler) - } - - /// Get an unconfirmed transaction by id - public func unconfirmedTransaction(id: String, completionHandler: @escaping (Response) -> Void) { - let options = ["id": id] - client.get(path: "transactions/unconfirmed/get", options: options, completionHandler: completionHandler) - } - - /// Get a queued transaction by id - public func queuedTransaction(id: String, completionHandler: @escaping (Response) -> Void) { - let options = ["id": id] - client.get(path: "transactions/queued/get", options: options, completionHandler: completionHandler) + /// Register a second passphrase + public func registerSecondPassphrase(_ secondPassphrase: String, passphrase: String, completionHandler: @escaping (Response) -> Void) { + do { + let (publicKey, _) = try Crypto.keys(fromPassphrase: secondPassphrase) + let asset = ["signature": ["publicKey": publicKey]] + let transaction = LocalTransaction(.registerSecondPassphrase, amount: 0, asset: asset) + let signedTransaction = try transaction.signed(passphrase: passphrase, secondPassphrase: nil) + submit(signedTransaction: signedTransaction, completionHandler: completionHandler) + } catch { + let response = APIError(message: error.localizedDescription) + completionHandler(.error(response: response)) + } } } @@ -96,34 +91,15 @@ extension Transactions { extension Transactions { /// List transaction objects - /// - /// - Parameters: - /// - block: transactions for this block - /// - sender: transactions from this sender - /// - recipient: transactions to this recipient - /// - limit: limit number of returned transactions - /// - offset: used for paging, offset by certain number of transactions - /// - orderBy: sort results by a column and direction - /// - join: defaults to 'or', specify 'and' for an AND join of passed in parameters - public func transactions(block: String? = nil, sender: String? = nil, recipient: String? = nil, limit: UInt? = nil, offset: UInt? = nil, orderBy: OrderBy? = nil, join: PropertyJoin = .or, completionHandler: @escaping (Response) -> Void) { + public func transactions(block: String? = nil, sender: String? = nil, recipient: String? = nil, limit: UInt? = nil, offset: UInt? = nil, sort: APIRequest.Sort? = nil, completionHandler: @escaping (Response) -> Void) { var options: RequestOptions = [:] - if let value = block { options["\(join.rawValue)blockId"] = value } - if let value = sender { options["\(join.rawValue)senderId"] = value } - if let value = recipient { options["\(join.rawValue)recipientId"] = value } + if let value = block { options["blockId"] = value } + if let value = sender { options["senderId"] = value } + if let value = recipient { options["recipientId"] = value } if let value = limit { options["limit"] = value } if let value = offset { options["offset"] = value } - if let value = orderBy { options["orderBy"] = "\(value.column):\(value.direction.rawValue)" } + if let value = sort?.value { options["sort"] = value } client.get(path: "transactions", options: options, completionHandler: completionHandler) } - - /// List unconfirmed transactions - public func unconfirmedTransactions(completionHandler: @escaping (Response) -> Void) { - client.get(path: "transactions/unconfirmed", completionHandler: completionHandler) - } - - /// List queued transactions - public func queuedTransactions(completionHandler: @escaping (Response) -> Void) { - client.get(path: "transactions/queued", completionHandler: completionHandler) - } } diff --git a/Sources/Core/APIClient.swift b/Sources/Core/APIClient.swift index c98bece..8e8181b 100644 --- a/Sources/Core/APIClient.swift +++ b/Sources/Core/APIClient.swift @@ -8,9 +8,9 @@ import Foundation /// Represents an HTTP response -public enum Response { - case success(response: T) - case error(response: APIResponseError) +public enum Response { + case success(response: R) + case error(response: APIError) } /// Type to represent request body/url options @@ -162,19 +162,14 @@ public struct APIClient { /// Process a response private func processRequestCompletion(_ data: Data?) -> Response { guard let data = data else { - return .error(response: defaultErrorResponse()) + return .error(response: .unexpected) } - guard let result = try? JSONDecoder().decode(R.self, from: data), result.success else { - let error = try? JSONDecoder().decode(APIResponseError.self, from: data) - return .error(response: error ?? defaultErrorResponse()) + guard let result = try? JSONDecoder().decode(R.self, from: data) else { + let error = try? JSONDecoder().decode(APIError.self, from: data) + return .error(response: error ?? .unknown) } return .success(response: result) } - - /// Default error response - private func defaultErrorResponse() -> APIResponseError { - return APIResponseError(message: "Unknown Error") - } } diff --git a/Sources/Core/APIError.swift b/Sources/Core/APIError.swift new file mode 100644 index 0000000..13e8227 --- /dev/null +++ b/Sources/Core/APIError.swift @@ -0,0 +1,35 @@ +// +// APIError.swift +// Lisk +// +// Created by Andrew Barba on 12/27/17. +// + +import Foundation + +/// Protocol describing an error +public struct APIError: Decodable { + + /// Internal backing message + private let _message: String? + + /// Internal backing error + private let _error: String? + + /// Public error message + public lazy var message: String = _message ?? _error ?? "Unexpected Error" + + internal init(message: String? = nil) { + self._message = message + self._error = nil + } +} + +extension APIError { + + /// Describes an unexpected error + public static let unexpected = APIError(message: "Unexpected Error") + + /// Describes an unknown error response + public static let unknown = APIError(message: "Unknown Error") +} diff --git a/Sources/Core/APIModel.swift b/Sources/Core/APIModel.swift index 4f9771a..d5982d7 100644 --- a/Sources/Core/APIModel.swift +++ b/Sources/Core/APIModel.swift @@ -11,3 +11,9 @@ import Foundation public protocol APIModel: Decodable { } + +/// Common model for single message response +public struct APIMessageModel: APIModel { + + public let message: String +} diff --git a/Sources/Core/APIRequest.swift b/Sources/Core/APIRequest.swift new file mode 100644 index 0000000..d48b4ed --- /dev/null +++ b/Sources/Core/APIRequest.swift @@ -0,0 +1,34 @@ +// +// APIRequest.swift +// LiskPackageDescription +// +// Created by Andrew Barba on 4/11/18. +// + +import Foundation + +public struct APIRequest { + + /// Combination of column and sort direction + public struct Sort { + + public enum Direction: String { + case ascending = "asc" + case descending = "desc" + } + + public let column: String + + public let direction: Direction + + public var value: String { + return "\(column):\(direction.rawValue)" + } + } + + /// Property join type + public enum Join: String { + case or = "" + case and = "AND:" + } +} diff --git a/Sources/Core/APIResponse.swift b/Sources/Core/APIResponse.swift index 6c00754..5274bc1 100644 --- a/Sources/Core/APIResponse.swift +++ b/Sources/Core/APIResponse.swift @@ -10,6 +10,8 @@ import Foundation /// Protocol describing an response public protocol APIResponse: Decodable { - /// All api responses have a success boolean - var success: Bool { get } + associatedtype APIData: Any + + /// All successful responses have a data key + var data: APIData { get } } diff --git a/Sources/Core/APIResponseError.swift b/Sources/Core/APIResponseError.swift deleted file mode 100644 index 93a9a44..0000000 --- a/Sources/Core/APIResponseError.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// APIResponseError.swift -// Lisk -// -// Created by Andrew Barba on 12/27/17. -// - -import Foundation - -/// API response error with an error message -public struct APIResponseError: APIResponse { - - /// Success is always false if this is an error - public var success: Bool { - return false - } - - /// Error message - public let message: String - - /// Private coding keys - enum CodingKeys: String, CodingKey { - case error = "error" - case message = "message" - } - - public init(message: String) { - self.message = message - } - - public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: CodingKeys.self) - do { - message = try container.decode(String.self, forKey: .error) - } catch { - message = try container.decode(String.self, forKey: .message) - } - } -} diff --git a/Sources/Core/APIService.swift b/Sources/Core/APIService.swift index c735cbe..3dfecc4 100644 --- a/Sources/Core/APIService.swift +++ b/Sources/Core/APIService.swift @@ -14,21 +14,3 @@ public protocol APIService { init(client: APIClient) } - -/// Combination of column and sort direction -public struct OrderBy { - public let column: String - public let direction: OrderByDirection -} - -/// Transactions sort order -public enum OrderByDirection: String { - case ascending = "asc" - case descending = "desc" -} - -/// Property join type -public enum PropertyJoin: String { - case or = "" - case and = "AND:" -} diff --git a/Sources/Crypto/Crypto.swift b/Sources/Crypto/Crypto.swift index 9fba4ca..e233b03 100644 --- a/Sources/Crypto/Crypto.swift +++ b/Sources/Crypto/Crypto.swift @@ -11,14 +11,14 @@ import Ed25519 public struct Crypto { /// Generate public and private keys from a given secret - public static func keys(fromSecret secret: String) throws -> (publicKey: String, privateKey: String) { - let keyPair = try self.keyPair(fromSecret: secret) + public static func keys(fromPassphrase passphrase: String) throws -> (publicKey: String, privateKey: String) { + let keyPair = try self.keyPair(fromPassphrase: passphrase) return (keyPair.publicKeyString, keyPair.privateKeyString) } /// Generate key pair from a given secret - public static func keyPair(fromSecret secret: String) throws -> KeyPair { - let bytes = SHA256(secret).digest() + public static func keyPair(fromPassphrase passphrase: String) throws -> KeyPair { + let bytes = SHA256(passphrase).digest() let seed = try Seed(bytes: bytes) return KeyPair(seed: seed) } diff --git a/Tests/LiskTestCase.swift b/Tests/LiskTestCase.swift index df8bc2d..aaf7b43 100644 --- a/Tests/LiskTestCase.swift +++ b/Tests/LiskTestCase.swift @@ -54,9 +54,9 @@ class LiskTestCase: XCTestCase { } @discardableResult - func tryRequestError(_ block: (@escaping (Response) -> Void) -> Void) -> APIResponseError { + func tryRequestError(_ block: (@escaping (Response) -> Void) -> Void) -> APIError { let expectation = XCTestExpectation() - var error: APIResponseError? + var error: APIError? block() { response in switch response { case .success: From 9d7457cff91d504408f8fca0e3f2053bfa19a8a5 Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Wed, 11 Apr 2018 17:52:09 -0400 Subject: [PATCH 06/15] Update tests to 1.0.0 api (not passing yet) --- Lisk.xcodeproj/project.pbxproj | 44 -------------- Sources/API/Blocks/Blocks.swift | 4 +- Sources/API/Transactions/Transactions.swift | 3 +- Sources/Core/APIError.swift | 29 +++++---- Tests/API/Accounts/AccountsAccountTests.swift | 8 +-- Tests/API/Accounts/AccountsBalanceTests.swift | 27 --------- Tests/API/Accounts/AccountsOpenTests.swift | 9 +-- .../API/Accounts/AccountsPublicKeyTests.swift | 6 +- Tests/API/Blocks/BlocksGetTests.swift | 6 +- Tests/API/Blocks/BlocksListTests.swift | 3 +- Tests/API/Blocks/BlocksMiscTests.swift | 60 ------------------- Tests/API/Delegates/DelegatesCountTests.swift | 19 ------ Tests/API/Delegates/DelegatesGetTests.swift | 16 ++--- Tests/API/Delegates/DelegatesListTests.swift | 8 +-- Tests/API/Delegates/DelegatesVotesTests.swift | 26 -------- Tests/API/Loader/LoaderStatusPingTests.swift | 24 -------- Tests/API/Loader/LoaderStatusSyncTests.swift | 26 -------- Tests/API/Loader/LoaderStatusTests.swift | 28 --------- Tests/API/Peers/PeersGetTests.swift | 6 +- Tests/API/Peers/PeersListTests.swift | 3 +- Tests/API/Peers/PeersVersionTests.swift | 26 -------- Tests/API/Signatures/SignaturesFeeTests.swift | 18 ------ .../Signatures/SignaturesRegisterTests.swift | 16 ++--- .../Transactions/TransactionsGetTests.swift | 6 +- .../Transactions/TransactionsListTest.swift | 12 ++-- .../TransactionsSigningTest.swift | 8 +-- .../TransactionsTransferTests.swift | 6 +- 27 files changed, 69 insertions(+), 378 deletions(-) delete mode 100644 Tests/API/Accounts/AccountsBalanceTests.swift delete mode 100644 Tests/API/Blocks/BlocksMiscTests.swift delete mode 100644 Tests/API/Delegates/DelegatesCountTests.swift delete mode 100644 Tests/API/Delegates/DelegatesVotesTests.swift delete mode 100644 Tests/API/Loader/LoaderStatusPingTests.swift delete mode 100644 Tests/API/Loader/LoaderStatusSyncTests.swift delete mode 100644 Tests/API/Loader/LoaderStatusTests.swift delete mode 100644 Tests/API/Peers/PeersVersionTests.swift delete mode 100644 Tests/API/Signatures/SignaturesFeeTests.swift diff --git a/Lisk.xcodeproj/project.pbxproj b/Lisk.xcodeproj/project.pbxproj index 13f8a4f..2d80c14 100644 --- a/Lisk.xcodeproj/project.pbxproj +++ b/Lisk.xcodeproj/project.pbxproj @@ -24,14 +24,11 @@ 3809038C2013AC1B00E80537 /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3809038A2013AB9D00E80537 /* Random.swift */; }; 381C95D92003E44E0002FBC4 /* DelegatesResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95D82003E44E0002FBC4 /* DelegatesResponse.swift */; }; 381C95DD2003E6D50002FBC4 /* APIService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95DC2003E6D50002FBC4 /* APIService.swift */; }; - 381C95E42003EC460002FBC4 /* DelegatesCountTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95E32003EC460002FBC4 /* DelegatesCountTests.swift */; }; 381C95E62003ECE70002FBC4 /* DelegatesGetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95E52003ECE70002FBC4 /* DelegatesGetTests.swift */; }; - 381C95E82003EDB70002FBC4 /* DelegatesVotesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95E72003EDB70002FBC4 /* DelegatesVotesTests.swift */; }; 381C95EA2003EE440002FBC4 /* DelegatesListTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95E92003EE440002FBC4 /* DelegatesListTests.swift */; }; 381C95ED2003F4580002FBC4 /* Peers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95EC2003F4580002FBC4 /* Peers.swift */; }; 381C95F02003F4A10002FBC4 /* PeerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95EF2003F4A10002FBC4 /* PeerModel.swift */; }; 381C95F32003F5CF0002FBC4 /* PeersResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95F22003F5CF0002FBC4 /* PeersResponse.swift */; }; - 381C95F82003FA860002FBC4 /* PeersVersionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95F72003FA860002FBC4 /* PeersVersionTests.swift */; }; 381C95FA2003FACE0002FBC4 /* PeersGetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95F92003FACE0002FBC4 /* PeersGetTests.swift */; }; 381C95FE2003FC710002FBC4 /* PeersListTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95FB2003FC0D0002FBC4 /* PeersListTests.swift */; }; 385C827C201AF2B000012D71 /* MnemonicPassphrase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 385C827B201AF2B000012D71 /* MnemonicPassphrase.swift */; }; @@ -48,13 +45,11 @@ 3883A8CA2003BED900460A9B /* TransactionBroadcastResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3883A8C92003BED900460A9B /* TransactionBroadcastResponse.swift */; }; 38B8E222200672780067BA8E /* SignatureBroadcastResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38B8E220200672730067BA8E /* SignatureBroadcastResponse.swift */; }; 38B8E2232006728A0067BA8E /* Signatures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38B8E21D2006723B0067BA8E /* Signatures.swift */; }; - 38C55B962006850400C0CCA4 /* SignaturesFeeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C55B952006850400C0CCA4 /* SignaturesFeeTests.swift */; }; 38C55B982006854000C0CCA4 /* SignaturesRegisterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C55B972006854000C0CCA4 /* SignaturesRegisterTests.swift */; }; 38C66D7B20051FB8007B2FA1 /* Blocks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D7A20051FB8007B2FA1 /* Blocks.swift */; }; 38C66D7F20051FF8007B2FA1 /* BlockModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D7E20051FF8007B2FA1 /* BlockModel.swift */; }; 38C66D8120052032007B2FA1 /* APIModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D8020052032007B2FA1 /* APIModel.swift */; }; 38C66D83200523F2007B2FA1 /* BlocksResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D82200523F2007B2FA1 /* BlocksResponse.swift */; }; - 38C66DA020053D35007B2FA1 /* BlocksMiscTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D9F20053D35007B2FA1 /* BlocksMiscTests.swift */; }; 38C66DA220053DEE007B2FA1 /* BlocksGetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66DA120053DEE007B2FA1 /* BlocksGetTests.swift */; }; 38C66DA420053F55007B2FA1 /* BlocksListTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66DA320053F55007B2FA1 /* BlocksListTests.swift */; }; 38FB2B01207E9ED700F13CFE /* APIRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FB2AFF207E9E8500F13CFE /* APIRequest.swift */; }; @@ -67,9 +62,6 @@ 38FB2B14207EAF7200F13CFE /* SignatureModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FB2B13207EAF7200F13CFE /* SignatureModel.swift */; }; OBJ_101 /* AccountsOpenTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_45 /* AccountsOpenTests.swift */; }; OBJ_102 /* AccountsPublicKeyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_46 /* AccountsPublicKeyTests.swift */; }; - OBJ_103 /* LoaderStatusPingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_48 /* LoaderStatusPingTests.swift */; }; - OBJ_104 /* LoaderStatusSyncTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_49 /* LoaderStatusSyncTests.swift */; }; - OBJ_105 /* LoaderStatusTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_50 /* LoaderStatusTests.swift */; }; OBJ_106 /* LiskTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_51 /* LiskTestCase.swift */; }; OBJ_108 /* Lisk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "Lisk::Lisk::Product" /* Lisk.framework */; }; OBJ_109 /* Ed25519.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "Ed25519::Ed25519::Product" /* Ed25519.framework */; }; @@ -111,7 +103,6 @@ OBJ_86 /* Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_6 /* Package.swift */; }; OBJ_92 /* Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_75 /* Package.swift */; }; OBJ_98 /* AccountsAccountTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_42 /* AccountsAccountTests.swift */; }; - OBJ_99 /* AccountsBalanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_43 /* AccountsBalanceTests.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -170,14 +161,11 @@ 3809038A2013AB9D00E80537 /* Random.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Random.swift; sourceTree = ""; }; 381C95D82003E44E0002FBC4 /* DelegatesResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegatesResponse.swift; sourceTree = ""; }; 381C95DC2003E6D50002FBC4 /* APIService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIService.swift; sourceTree = ""; }; - 381C95E32003EC460002FBC4 /* DelegatesCountTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegatesCountTests.swift; sourceTree = ""; }; 381C95E52003ECE70002FBC4 /* DelegatesGetTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegatesGetTests.swift; sourceTree = ""; }; - 381C95E72003EDB70002FBC4 /* DelegatesVotesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegatesVotesTests.swift; sourceTree = ""; }; 381C95E92003EE440002FBC4 /* DelegatesListTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegatesListTests.swift; sourceTree = ""; }; 381C95EC2003F4580002FBC4 /* Peers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Peers.swift; sourceTree = ""; }; 381C95EF2003F4A10002FBC4 /* PeerModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeerModel.swift; sourceTree = ""; }; 381C95F22003F5CF0002FBC4 /* PeersResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeersResponse.swift; sourceTree = ""; }; - 381C95F72003FA860002FBC4 /* PeersVersionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeersVersionTests.swift; sourceTree = ""; }; 381C95F92003FACE0002FBC4 /* PeersGetTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeersGetTests.swift; sourceTree = ""; }; 381C95FB2003FC0D0002FBC4 /* PeersListTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeersListTests.swift; sourceTree = ""; }; 385C827B201AF2B000012D71 /* MnemonicPassphrase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MnemonicPassphrase.swift; sourceTree = ""; }; @@ -194,13 +182,11 @@ 3883A8C92003BED900460A9B /* TransactionBroadcastResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionBroadcastResponse.swift; sourceTree = ""; }; 38B8E21D2006723B0067BA8E /* Signatures.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Signatures.swift; sourceTree = ""; }; 38B8E220200672730067BA8E /* SignatureBroadcastResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignatureBroadcastResponse.swift; sourceTree = ""; }; - 38C55B952006850400C0CCA4 /* SignaturesFeeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignaturesFeeTests.swift; sourceTree = ""; }; 38C55B972006854000C0CCA4 /* SignaturesRegisterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignaturesRegisterTests.swift; sourceTree = ""; }; 38C66D7A20051FB8007B2FA1 /* Blocks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Blocks.swift; sourceTree = ""; }; 38C66D7E20051FF8007B2FA1 /* BlockModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockModel.swift; sourceTree = ""; }; 38C66D8020052032007B2FA1 /* APIModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIModel.swift; sourceTree = ""; }; 38C66D82200523F2007B2FA1 /* BlocksResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlocksResponse.swift; sourceTree = ""; }; - 38C66D9F20053D35007B2FA1 /* BlocksMiscTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlocksMiscTests.swift; sourceTree = ""; }; 38C66DA120053DEE007B2FA1 /* BlocksGetTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlocksGetTests.swift; sourceTree = ""; }; 38C66DA320053F55007B2FA1 /* BlocksListTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlocksListTests.swift; sourceTree = ""; }; 38FB2AFF207E9E8500F13CFE /* APIRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIRequest.swift; sourceTree = ""; }; @@ -232,12 +218,8 @@ OBJ_37 /* Crypto.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Crypto.swift; sourceTree = ""; }; OBJ_38 /* SHA256.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SHA256.swift; sourceTree = ""; }; OBJ_42 /* AccountsAccountTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountsAccountTests.swift; sourceTree = ""; }; - OBJ_43 /* AccountsBalanceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountsBalanceTests.swift; sourceTree = ""; }; OBJ_45 /* AccountsOpenTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountsOpenTests.swift; sourceTree = ""; }; OBJ_46 /* AccountsPublicKeyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountsPublicKeyTests.swift; sourceTree = ""; }; - OBJ_48 /* LoaderStatusPingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoaderStatusPingTests.swift; sourceTree = ""; }; - OBJ_49 /* LoaderStatusSyncTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoaderStatusSyncTests.swift; sourceTree = ""; }; - OBJ_50 /* LoaderStatusTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoaderStatusTests.swift; sourceTree = ""; }; OBJ_51 /* LiskTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LiskTestCase.swift; sourceTree = ""; }; OBJ_56 /* add_scalar.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = add_scalar.c; sourceTree = ""; }; OBJ_57 /* fe.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fe.c; sourceTree = ""; }; @@ -309,10 +291,8 @@ 381C95E22003EC300002FBC4 /* Delegates */ = { isa = PBXGroup; children = ( - 381C95E32003EC460002FBC4 /* DelegatesCountTests.swift */, 381C95E52003ECE70002FBC4 /* DelegatesGetTests.swift */, 381C95E92003EE440002FBC4 /* DelegatesListTests.swift */, - 381C95E72003EDB70002FBC4 /* DelegatesVotesTests.swift */, ); path = Delegates; sourceTree = ""; @@ -348,7 +328,6 @@ children = ( 381C95F92003FACE0002FBC4 /* PeersGetTests.swift */, 381C95FB2003FC0D0002FBC4 /* PeersListTests.swift */, - 381C95F72003FA860002FBC4 /* PeersVersionTests.swift */, ); path = Peers; sourceTree = ""; @@ -429,7 +408,6 @@ 38C55B94200684EE00C0CCA4 /* Signatures */ = { isa = PBXGroup; children = ( - 38C55B952006850400C0CCA4 /* SignaturesFeeTests.swift */, 38C55B972006854000C0CCA4 /* SignaturesRegisterTests.swift */, ); path = Signatures; @@ -466,7 +444,6 @@ children = ( 38C66DA120053DEE007B2FA1 /* BlocksGetTests.swift */, 38C66DA320053F55007B2FA1 /* BlocksListTests.swift */, - 38C66D9F20053D35007B2FA1 /* BlocksMiscTests.swift */, ); path = Blocks; sourceTree = ""; @@ -611,7 +588,6 @@ OBJ_41 /* Accounts */, 38C66D9E20053D25007B2FA1 /* Blocks */, 381C95E22003EC300002FBC4 /* Delegates */, - OBJ_47 /* Loader */, 381C95F62003FA700002FBC4 /* Peers */, 38C55B94200684EE00C0CCA4 /* Signatures */, 3874ABA21FFC8E550008C527 /* Transactions */, @@ -623,23 +599,12 @@ isa = PBXGroup; children = ( OBJ_42 /* AccountsAccountTests.swift */, - OBJ_43 /* AccountsBalanceTests.swift */, OBJ_45 /* AccountsOpenTests.swift */, OBJ_46 /* AccountsPublicKeyTests.swift */, ); path = Accounts; sourceTree = ""; }; - OBJ_47 /* Loader */ = { - isa = PBXGroup; - children = ( - OBJ_48 /* LoaderStatusPingTests.swift */, - OBJ_49 /* LoaderStatusSyncTests.swift */, - OBJ_50 /* LoaderStatusTests.swift */, - ); - path = Loader; - sourceTree = ""; - }; OBJ_5 = { isa = PBXGroup; children = ( @@ -990,7 +955,6 @@ buildActionMask = 0; files = ( OBJ_98 /* AccountsAccountTests.swift in Sources */, - OBJ_99 /* AccountsBalanceTests.swift in Sources */, 3874ABA41FFC8E6C0008C527 /* TransactionsGetTests.swift in Sources */, 38C66DA420053F55007B2FA1 /* BlocksListTests.swift in Sources */, 385C8280201AF52000012D71 /* MnemonicPassphraseTests.swift in Sources */, @@ -999,20 +963,12 @@ 3883A8C62002D8AC00460A9B /* TransactionsSigningTest.swift in Sources */, 381C95EA2003EE440002FBC4 /* DelegatesListTests.swift in Sources */, OBJ_101 /* AccountsOpenTests.swift in Sources */, - 381C95E82003EDB70002FBC4 /* DelegatesVotesTests.swift in Sources */, OBJ_102 /* AccountsPublicKeyTests.swift in Sources */, 3883A8C82002DC4E00460A9B /* TransactionsTransferTests.swift in Sources */, - OBJ_103 /* LoaderStatusPingTests.swift in Sources */, - OBJ_104 /* LoaderStatusSyncTests.swift in Sources */, 38C66DA220053DEE007B2FA1 /* BlocksGetTests.swift in Sources */, - 38C55B962006850400C0CCA4 /* SignaturesFeeTests.swift in Sources */, - 381C95E42003EC460002FBC4 /* DelegatesCountTests.swift in Sources */, - OBJ_105 /* LoaderStatusTests.swift in Sources */, 3874ABA61FFC8EEE0008C527 /* TransactionsListTest.swift in Sources */, OBJ_106 /* LiskTestCase.swift in Sources */, - 38C66DA020053D35007B2FA1 /* BlocksMiscTests.swift in Sources */, 38C55B982006854000C0CCA4 /* SignaturesRegisterTests.swift in Sources */, - 381C95F82003FA860002FBC4 /* PeersVersionTests.swift in Sources */, 381C95E62003ECE70002FBC4 /* DelegatesGetTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Sources/API/Blocks/Blocks.swift b/Sources/API/Blocks/Blocks.swift index bcca12f..e245d1f 100644 --- a/Sources/API/Blocks/Blocks.swift +++ b/Sources/API/Blocks/Blocks.swift @@ -23,9 +23,9 @@ public struct Blocks: APIService { extension Blocks { /// List blocks - public func blocks(blockId: String? = nil, height: Int? = nil, generatorPublicKey: String? = nil, limit: Int? = nil, offset: Int? = nil, sort: APIRequest.Sort? = nil, completionHandler: @escaping (Response) -> Void) { + public func blocks(id: String? = nil, height: Int? = nil, generatorPublicKey: String? = nil, limit: Int? = nil, offset: Int? = nil, sort: APIRequest.Sort? = nil, completionHandler: @escaping (Response) -> Void) { var options: RequestOptions = [:] - if let value = blockId { options["blockId"] = value } + if let value = id { options["blockId"] = value } if let value = height { options["height"] = value } if let value = generatorPublicKey { options["generatorPublicKey"] = value } if let value = limit { options["limit"] = value } diff --git a/Sources/API/Transactions/Transactions.swift b/Sources/API/Transactions/Transactions.swift index fde136a..42343a8 100644 --- a/Sources/API/Transactions/Transactions.swift +++ b/Sources/API/Transactions/Transactions.swift @@ -91,8 +91,9 @@ extension Transactions { extension Transactions { /// List transaction objects - public func transactions(block: String? = nil, sender: String? = nil, recipient: String? = nil, limit: UInt? = nil, offset: UInt? = nil, sort: APIRequest.Sort? = nil, completionHandler: @escaping (Response) -> Void) { + public func transactions(id: String? = nil, block: String? = nil, sender: String? = nil, recipient: String? = nil, limit: UInt? = nil, offset: UInt? = nil, sort: APIRequest.Sort? = nil, completionHandler: @escaping (Response) -> Void) { var options: RequestOptions = [:] + if let value = id { options["id"] = value } if let value = block { options["blockId"] = value } if let value = sender { options["senderId"] = value } if let value = recipient { options["recipientId"] = value } diff --git a/Sources/Core/APIError.swift b/Sources/Core/APIError.swift index 13e8227..4e26780 100644 --- a/Sources/Core/APIError.swift +++ b/Sources/Core/APIError.swift @@ -8,20 +8,29 @@ import Foundation /// Protocol describing an error -public struct APIError: Decodable { +public struct APIError { - /// Internal backing message - private let _message: String? + public let message: String - /// Internal backing error - private let _error: String? + public init(message: String) { + self.message = message + } +} - /// Public error message - public lazy var message: String = _message ?? _error ?? "Unexpected Error" +extension APIError: Decodable { + + private enum Keys: String, CodingKey { + case message + case error + } - internal init(message: String? = nil) { - self._message = message - self._error = nil + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: Keys.self) + if let message = try? container.decode(String.self, forKey: .message) { + self.message = message + } else { + self.message = try container.decode(String.self, forKey: .error) + } } } diff --git a/Tests/API/Accounts/AccountsAccountTests.swift b/Tests/API/Accounts/AccountsAccountTests.swift index 234ca8c..30be264 100644 --- a/Tests/API/Accounts/AccountsAccountTests.swift +++ b/Tests/API/Accounts/AccountsAccountTests.swift @@ -12,9 +12,9 @@ class AccountsAccountTests: LiskTestCase { func testMainnetAccount() { let accounts = Accounts(client: mainNetClient) - let response = tryRequest { accounts.account(address: andrewAddress, completionHandler: $0) } - XCTAssert(response.success) - XCTAssertEqual(response.account.address, andrewAddress) - XCTAssertEqual(response.account.publicKey, andrewPublicKey) + let response = tryRequest { accounts.accounts(address: andrewAddress, completionHandler: $0) } + XCTAssertEqual(response.data.count, 1) + XCTAssertEqual(response.data[0].address, andrewAddress) + XCTAssertEqual(response.data[0].publicKey, andrewPublicKey) } } diff --git a/Tests/API/Accounts/AccountsBalanceTests.swift b/Tests/API/Accounts/AccountsBalanceTests.swift deleted file mode 100644 index fbc562e..0000000 --- a/Tests/API/Accounts/AccountsBalanceTests.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// AccountsBalanceTests.swift -// Lisk -// -// Created by Andrew Barba on 12/31/17. -// - -import XCTest -@testable import Lisk - -class AccountsBalanceTests: LiskTestCase { - - func testMainnetBalance() { - let accounts = Accounts(client: mainNetClient) - let response = tryRequest { accounts.balance(address: andrewAddress, completionHandler: $0) } - XCTAssert(response.success) - XCTAssert(Double(response.balance)! > 0) - } - - func testBadAddressBalance() { - let address = UUID().uuidString - let accounts = Accounts(client: mainNetClient) - let response = tryRequestError { accounts.balance(address: address, completionHandler: $0) } - XCTAssertFalse(response.success) - XCTAssertEqual(response.message, "Object didn't pass validation for format address: \(address)") - } -} diff --git a/Tests/API/Accounts/AccountsOpenTests.swift b/Tests/API/Accounts/AccountsOpenTests.swift index c2ea187..ffc3c7c 100644 --- a/Tests/API/Accounts/AccountsOpenTests.swift +++ b/Tests/API/Accounts/AccountsOpenTests.swift @@ -11,16 +11,9 @@ import XCTest class AccountsOpenTests: LiskTestCase { func testCryptoKeys() { - let (publicKey, _) = try! Crypto.keys(fromSecret: exampleSecret) + let (publicKey, _) = try! Crypto.keys(fromPassphrase: exampleSecret) XCTAssertEqual(publicKey, examplePublicKey) let address = Crypto.address(fromPublicKey: publicKey) XCTAssertEqual(address, exampleAddress) } - - func testMainnetOpen() { - let accounts = Accounts(client: mainNetClient) - let response = tryRequest { accounts.open(secret: exampleSecret, completionHandler: $0) } - XCTAssert(response.success) - XCTAssertEqual(response.account.address, exampleAddress) - } } diff --git a/Tests/API/Accounts/AccountsPublicKeyTests.swift b/Tests/API/Accounts/AccountsPublicKeyTests.swift index 5c61806..247c6d1 100644 --- a/Tests/API/Accounts/AccountsPublicKeyTests.swift +++ b/Tests/API/Accounts/AccountsPublicKeyTests.swift @@ -12,8 +12,8 @@ class AccountsPublicKeyTests: LiskTestCase { func testMainnetPublicKey() { let accounts = Accounts(client: mainNetClient) - let response = tryRequest { accounts.publicKey(address: andrewAddress, completionHandler: $0) } - XCTAssert(response.success) - XCTAssertEqual(response.publicKey, andrewPublicKey) + let response = tryRequest { accounts.accounts(address: andrewAddress, completionHandler: $0) } + XCTAssertEqual(response.data.count, 1) + XCTAssertEqual(response.data[0].publicKey, andrewPublicKey) } } diff --git a/Tests/API/Blocks/BlocksGetTests.swift b/Tests/API/Blocks/BlocksGetTests.swift index 7de30cb..c96ad06 100644 --- a/Tests/API/Blocks/BlocksGetTests.swift +++ b/Tests/API/Blocks/BlocksGetTests.swift @@ -13,8 +13,8 @@ class BlocksGetTests: LiskTestCase { func testMainnetGet() { let blockId = "6699130148421113207" let blocks = Blocks(client: mainNetClient) - let response = tryRequest { blocks.block(id: blockId, completionHandler: $0) } - XCTAssert(response.success) - XCTAssertEqual(response.block.id, blockId) + let response = tryRequest { blocks.blocks(id: blockId, completionHandler: $0) } + XCTAssertEqual(response.data.count, 1) + XCTAssertEqual(response.data[0].id, blockId) } } diff --git a/Tests/API/Blocks/BlocksListTests.swift b/Tests/API/Blocks/BlocksListTests.swift index 034fe5f..11352bc 100644 --- a/Tests/API/Blocks/BlocksListTests.swift +++ b/Tests/API/Blocks/BlocksListTests.swift @@ -13,7 +13,6 @@ class BlocksListTests: LiskTestCase { func testMainnetGet() { let blocks = Blocks(client: mainNetClient) let response = tryRequest { blocks.blocks(limit: 5, completionHandler: $0) } - XCTAssert(response.success) - XCTAssertEqual(response.blocks.count, 5) + XCTAssertEqual(response.data.count, 5) } } diff --git a/Tests/API/Blocks/BlocksMiscTests.swift b/Tests/API/Blocks/BlocksMiscTests.swift deleted file mode 100644 index 4bb88ba..0000000 --- a/Tests/API/Blocks/BlocksMiscTests.swift +++ /dev/null @@ -1,60 +0,0 @@ -// -// BlocksMiscTests.swift -// LiskTests -// -// Created by Andrew Barba on 1/9/18. -// - -import XCTest -@testable import Lisk - -class BlocksMiscTests: LiskTestCase { - - func testMainnetFee() { - let blocks = Blocks(client: mainNetClient) - let response = tryRequest { blocks.fee(completionHandler: $0) } - XCTAssert(response.success) - } - - func testMainnetFees() { - let blocks = Blocks(client: mainNetClient) - let response = tryRequest { blocks.fees(completionHandler: $0) } - XCTAssert(response.success) - } - - func testMainnetReward() { - let blocks = Blocks(client: mainNetClient) - let response = tryRequest { blocks.reward(completionHandler: $0) } - XCTAssert(response.success) - } - - func testMainnetSupply() { - let blocks = Blocks(client: mainNetClient) - let response = tryRequest { blocks.supply(completionHandler: $0) } - XCTAssert(response.success) - } - - func testMainnetHeight() { - let blocks = Blocks(client: mainNetClient) - let response = tryRequest { blocks.height(completionHandler: $0) } - XCTAssert(response.success) - } - - func testMainnetStatus() { - let blocks = Blocks(client: mainNetClient) - let response = tryRequest { blocks.status(completionHandler: $0) } - XCTAssert(response.success) - } - - func testMainnetNethash() { - let blocks = Blocks(client: mainNetClient) - let response = tryRequest { blocks.nethash(completionHandler: $0) } - XCTAssert(response.success) - } - - func testMainnetMilestone() { - let blocks = Blocks(client: mainNetClient) - let response = tryRequest { blocks.milestone(completionHandler: $0) } - XCTAssert(response.success) - } -} diff --git a/Tests/API/Delegates/DelegatesCountTests.swift b/Tests/API/Delegates/DelegatesCountTests.swift deleted file mode 100644 index 6fd8697..0000000 --- a/Tests/API/Delegates/DelegatesCountTests.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// DelegatesCountTests.swift -// LiskTests -// -// Created by Andrew Barba on 1/8/18. -// - -import XCTest -@testable import Lisk - -class DelegatesCountTests: LiskTestCase { - - func testMainnetCount() { - let delegates = Delegates(client: mainNetClient) - let response = tryRequest { delegates.count(completionHandler: $0) } - XCTAssert(response.success) - XCTAssertGreaterThanOrEqual(response.count, 101) - } -} diff --git a/Tests/API/Delegates/DelegatesGetTests.swift b/Tests/API/Delegates/DelegatesGetTests.swift index 1b88327..87a5b29 100644 --- a/Tests/API/Delegates/DelegatesGetTests.swift +++ b/Tests/API/Delegates/DelegatesGetTests.swift @@ -12,19 +12,15 @@ class DelegatesGetTests: LiskTestCase { func testMainnetGetUsername() { let delegates = Delegates(client: mainNetClient) - let response = tryRequest { delegates.delegate(username: andrewUsername, completionHandler: $0) } - XCTAssert(response.success) - XCTAssertEqual(response.delegate.username, andrewUsername) - XCTAssertEqual(response.delegate.address, andrewAddress) - XCTAssertEqual(response.delegate.publicKey, andrewPublicKey) + let response = tryRequest { delegates.delegates(username: andrewUsername, completionHandler: $0) } + XCTAssertEqual(response.data.count, 1) + XCTAssertEqual(response.data[0].username, andrewUsername) } func testMainnetGetPublicKey() { let delegates = Delegates(client: mainNetClient) - let response = tryRequest { delegates.delegate(publicKey: andrewPublicKey, completionHandler: $0) } - XCTAssert(response.success) - XCTAssertEqual(response.delegate.username, andrewUsername) - XCTAssertEqual(response.delegate.address, andrewAddress) - XCTAssertEqual(response.delegate.publicKey, andrewPublicKey) + let response = tryRequest { delegates.delegates(publicKey: andrewPublicKey, completionHandler: $0) } + XCTAssertEqual(response.data.count, 1) + XCTAssertEqual(response.data[0].username, andrewUsername) } } diff --git a/Tests/API/Delegates/DelegatesListTests.swift b/Tests/API/Delegates/DelegatesListTests.swift index 12d571b..a01293d 100644 --- a/Tests/API/Delegates/DelegatesListTests.swift +++ b/Tests/API/Delegates/DelegatesListTests.swift @@ -13,14 +13,12 @@ class DelegatesListsTests: LiskTestCase { func testMainnetList() { let delegates = Delegates(client: mainNetClient) let response = tryRequest { delegates.delegates(limit: 5, completionHandler: $0) } - XCTAssert(response.success) - XCTAssertEqual(response.delegates.count, 5) + XCTAssertEqual(response.data.count, 5) } func testMainnetSearch() { let delegates = Delegates(client: mainNetClient) - let response = tryRequest { delegates.search(query: "andr", completionHandler: $0) } - XCTAssert(response.success) - XCTAssertGreaterThan(response.delegates.count, 0) + let response = tryRequest { delegates.delegates(search: "andr", completionHandler: $0) } + XCTAssertGreaterThanOrEqual(response.data.count, 1) } } diff --git a/Tests/API/Delegates/DelegatesVotesTests.swift b/Tests/API/Delegates/DelegatesVotesTests.swift deleted file mode 100644 index aef96e5..0000000 --- a/Tests/API/Delegates/DelegatesVotesTests.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// DelegatesVotesTests.swift -// LiskTests -// -// Created by Andrew Barba on 1/8/18. -// - -import XCTest -@testable import Lisk - -class DelegatesVotesTests: LiskTestCase { - - func testMainnetVotes() { - let delegates = Delegates(client: mainNetClient) - let response = tryRequest { delegates.votes(address: andrewAddress, completionHandler: $0) } - XCTAssert(response.success) - XCTAssertGreaterThan(response.delegates.count, 0) - } - - func testMainnetVoters() { - let delegates = Delegates(client: mainNetClient) - let response = tryRequest { delegates.voters(publicKey: andrewPublicKey, completionHandler: $0) } - XCTAssert(response.success) - XCTAssertGreaterThan(response.accounts.count, 0) - } -} diff --git a/Tests/API/Loader/LoaderStatusPingTests.swift b/Tests/API/Loader/LoaderStatusPingTests.swift deleted file mode 100644 index 4c90834..0000000 --- a/Tests/API/Loader/LoaderStatusPingTests.swift +++ /dev/null @@ -1,24 +0,0 @@ -// -// LoaderStatusPingTests.swift -// LiskTests -// -// Created by Andrew Barba on 12/27/17. -// - -import XCTest -@testable import Lisk - -class LoaderStatusPingTests: LiskTestCase { - - func testMainnetPingStatus() { - let loader = Loader(client: mainNetClient) - let response = tryRequest { loader.pingStatus(completionHandler: $0) } - XCTAssert(response.success) - } - - func testMainPeerPingStatus() { - let loader = Loader(client: mainPeerClient) - let response = tryRequest { loader.pingStatus(completionHandler: $0) } - XCTAssert(response.success) - } -} diff --git a/Tests/API/Loader/LoaderStatusSyncTests.swift b/Tests/API/Loader/LoaderStatusSyncTests.swift deleted file mode 100644 index 55a0439..0000000 --- a/Tests/API/Loader/LoaderStatusSyncTests.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// LoaderStatusSyncTests.swift -// LiskTests -// -// Created by Andrew Barba on 12/27/17. -// - -import XCTest -@testable import Lisk - -class LoaderStatusSyncTests: LiskTestCase { - - func testMainnetSyncStatus() { - let loader = Loader(client: mainNetClient) - let response = tryRequest { loader.syncStatus(completionHandler: $0) } - XCTAssert(response.success) - XCTAssertFalse(response.syncing) - } - - func testMainPeerSyncStatus() { - let loader = Loader(client: mainPeerClient) - let response = tryRequest { loader.syncStatus(completionHandler: $0) } - XCTAssert(response.success) - XCTAssertFalse(response.syncing) - } -} diff --git a/Tests/API/Loader/LoaderStatusTests.swift b/Tests/API/Loader/LoaderStatusTests.swift deleted file mode 100644 index 8afedf9..0000000 --- a/Tests/API/Loader/LoaderStatusTests.swift +++ /dev/null @@ -1,28 +0,0 @@ -// -// LoaderStatusTests.swift -// LiskTests -// -// Created by Andrew Barba on 12/11/17. -// - -import XCTest -@testable import Lisk - -class LoaderStatusTests: LiskTestCase { - - func testMainnetStatus() { - let loader = Loader(client: mainNetClient) - let response = tryRequest { loader.status(completionHandler: $0) } - XCTAssert(response.success) - XCTAssert(response.loaded) - XCTAssert(response.now > 0) - } - - func testMainPeerStatus() { - let loader = Loader(client: mainPeerClient) - let response = tryRequest { loader.status(completionHandler: $0) } - XCTAssert(response.success) - XCTAssert(response.loaded) - XCTAssert(response.now > 0) - } -} diff --git a/Tests/API/Peers/PeersGetTests.swift b/Tests/API/Peers/PeersGetTests.swift index 4badbb6..21d797b 100644 --- a/Tests/API/Peers/PeersGetTests.swift +++ b/Tests/API/Peers/PeersGetTests.swift @@ -12,8 +12,8 @@ class PeersGetTests: LiskTestCase { func testMainnetGet() { let peers = Peers(client: mainNetClient) - let response = tryRequest { peers.peer(ip: "165.227.215.126", port: 8000, completionHandler: $0) } - XCTAssert(response.success) - XCTAssertEqual(response.peer.version, "0.9.11") + let response = tryRequest { peers.peers(ip: "165.227.215.126", completionHandler: $0) } + XCTAssertEqual(response.data.count, 1) + XCTAssertEqual(response.data[0].version, "0.9.11") } } diff --git a/Tests/API/Peers/PeersListTests.swift b/Tests/API/Peers/PeersListTests.swift index 1e1aad7..d0dfc94 100644 --- a/Tests/API/Peers/PeersListTests.swift +++ b/Tests/API/Peers/PeersListTests.swift @@ -13,7 +13,6 @@ class PeersListTests: LiskTestCase { func testMainnetList() { let peers = Peers(client: mainNetClient) let response = tryRequest { peers.peers(limit: 5, completionHandler: $0) } - XCTAssert(response.success) - XCTAssertEqual(response.peers.count, 5) + XCTAssertEqual(response.data.count, 5) } } diff --git a/Tests/API/Peers/PeersVersionTests.swift b/Tests/API/Peers/PeersVersionTests.swift deleted file mode 100644 index c3cca77..0000000 --- a/Tests/API/Peers/PeersVersionTests.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// PeersVersionTests.swift -// LiskTests -// -// Created by Andrew Barba on 1/8/18. -// - -import XCTest -@testable import Lisk - -class PeersVersionTests: LiskTestCase { - - func testMainnetVersion() { - let peers = Peers(client: mainNetClient) - let response = tryRequest { peers.version(completionHandler: $0) } - XCTAssert(response.success) - XCTAssertEqual(response.version, "0.9.13") - } - - func testBetanetVersion() { - let peers = Peers(client: betaNetClient) - let response = tryRequest { peers.version(completionHandler: $0) } - XCTAssert(response.success) - XCTAssertEqual(response.version, "1.0.0") - } -} diff --git a/Tests/API/Signatures/SignaturesFeeTests.swift b/Tests/API/Signatures/SignaturesFeeTests.swift deleted file mode 100644 index 4cab067..0000000 --- a/Tests/API/Signatures/SignaturesFeeTests.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// SignaturesFeeTests.swift -// LiskTests -// -// Created by Andrew Barba on 1/10/18. -// - -import XCTest -@testable import Lisk - -class SignaturesFeeTests: LiskTestCase { - - func testMainnetFee() { - let signatures = Signatures(client: mainNetClient) - let response = tryRequest { signatures.fee(completionHandler: $0) } - XCTAssert(response.success) - } -} diff --git a/Tests/API/Signatures/SignaturesRegisterTests.swift b/Tests/API/Signatures/SignaturesRegisterTests.swift index 4697d55..176239d 100644 --- a/Tests/API/Signatures/SignaturesRegisterTests.swift +++ b/Tests/API/Signatures/SignaturesRegisterTests.swift @@ -10,18 +10,18 @@ import XCTest class SignaturesRegisterTests: LiskTestCase { - func testMainnetRegisterNoFunds() { - let signatures = Signatures(client: mainNetClient) - let response = tryRequestError { signatures.register(secondSecret: exampleSecret, secret: exampleSecret, completionHandler: $0) } - XCTAssertFalse(response.success) - XCTAssertEqual(response.message, "Account does not have enough LSK: 5549607903333983622L balance: 0") - } +// func testMainnetRegisterNoFunds() { +// let signatures = Signatures(client: mainNetClient) +// let response = tryRequestError { signatures.register(secondSecret: exampleSecret, secret: exampleSecret, completionHandler: $0) } +// XCTAssertFalse(response.success) +// XCTAssertEqual(response.message, "Account does not have enough LSK: 5549607903333983622L balance: 0") +// } func testRegisterTransaction() { - let (publicKey, _) = try! Crypto.keys(fromSecret: testSecondSecret) + let (publicKey, _) = try! Crypto.keys(fromPassphrase: testSecondSecret) let asset = ["signature": ["publicKey": publicKey]] var transaction = LocalTransaction(.registerSecondPassphrase, amount: 0, timestamp: 51497510, asset: asset) - try? transaction.sign(secret: testSecret) + try? transaction.sign(passphrase: testSecret) print(transaction) XCTAssertEqual(transaction.id, "6158495690989447317") XCTAssertEqual(transaction.amountBytes, [0, 0, 0, 0, 0, 0, 0, 0]) diff --git a/Tests/API/Transactions/TransactionsGetTests.swift b/Tests/API/Transactions/TransactionsGetTests.swift index 9480fbe..ead0cdc 100644 --- a/Tests/API/Transactions/TransactionsGetTests.swift +++ b/Tests/API/Transactions/TransactionsGetTests.swift @@ -13,8 +13,8 @@ class TransactionsGetTests: LiskTestCase { func testMainnetGet() { let id = "10861152394901264352" let transactions = Transactions(client: mainNetClient) - let response = tryRequest { transactions.transaction(id: id, completionHandler: $0) } - XCTAssert(response.success) - XCTAssertEqual(response.transaction.id, id) + let response = tryRequest { transactions.transactions(id: id, completionHandler: $0) } + XCTAssertEqual(response.data.count, 1) + XCTAssertEqual(response.data[0].id, id) } } diff --git a/Tests/API/Transactions/TransactionsListTest.swift b/Tests/API/Transactions/TransactionsListTest.swift index 5bc8c8f..4ff9331 100644 --- a/Tests/API/Transactions/TransactionsListTest.swift +++ b/Tests/API/Transactions/TransactionsListTest.swift @@ -13,28 +13,24 @@ class TransactionsListTests: LiskTestCase { func testMainnetList() { let transactions = Transactions(client: mainNetClient) let response = tryRequest { transactions.transactions(completionHandler: $0) } - XCTAssert(response.success) - XCTAssertGreaterThan(response.transactions.count, 0) + XCTAssertGreaterThan(response.data.count, 0) } func testMainnetListSender() { let transactions = Transactions(client: mainNetClient) let response = tryRequest { transactions.transactions(sender: andrewAddress, completionHandler: $0) } - XCTAssert(response.success) - XCTAssertGreaterThan(response.transactions.count, 0) + XCTAssertGreaterThan(response.data.count, 0) } func testMainnetListRecipient() { let transactions = Transactions(client: mainNetClient) let response = tryRequest { transactions.transactions(recipient: andrewAddress, completionHandler: $0) } - XCTAssert(response.success) - XCTAssertGreaterThan(response.transactions.count, 0) + XCTAssertGreaterThan(response.data.count, 0) } func testMainnetLimit() { let transactions = Transactions(client: mainNetClient) let response = tryRequest { transactions.transactions(limit: 2, completionHandler: $0) } - XCTAssert(response.success) - XCTAssertEqual(response.transactions.count, 2) + XCTAssertEqual(response.data.count, 2) } } diff --git a/Tests/API/Transactions/TransactionsSigningTest.swift b/Tests/API/Transactions/TransactionsSigningTest.swift index 17898b4..f3f08e2 100644 --- a/Tests/API/Transactions/TransactionsSigningTest.swift +++ b/Tests/API/Transactions/TransactionsSigningTest.swift @@ -12,7 +12,7 @@ class TransactionsSigningTests: LiskTestCase { func testSign() { var transaction = LocalTransaction(.transfer, lsk: 1.12, recipientId: andrewAddress, timestamp: 10) - try? transaction.sign(secret: exampleSecret) + try? transaction.sign(passphrase: exampleSecret) XCTAssertEqual(transaction.typeBytes, [0]) XCTAssertEqual(transaction.timestampBytes, [10, 0, 0, 0]) @@ -25,7 +25,7 @@ class TransactionsSigningTests: LiskTestCase { func testSignWithRealmTimestamp() { var transaction = LocalTransaction(.transfer, lsk: 1, recipientId: andrewAddress, timestamp: 51262230) - try? transaction.sign(secret: exampleSecret) + try? transaction.sign(passphrase: exampleSecret) // Check bytes XCTAssertEqual(transaction.signature, "5bcfbd0ed92df0fbb96dab8dd844b06f82aab05b89f3ac2e53b4ffc632ad96ca0a6dd9b158d754ccde08dac50a831a21bcfc16029e80710a9faf78ac94f0ec01") @@ -34,7 +34,7 @@ class TransactionsSigningTests: LiskTestCase { func testSecondSign() { var transaction = LocalTransaction(.transfer, lsk: 1.12, recipientId: andrewAddress, timestamp: 10) - try? transaction.sign(secret: exampleSecret, secondSecret: exampleSecret) + try? transaction.sign(passphrase: exampleSecret, secondPassphrase: exampleSecret) XCTAssertEqual(transaction.typeBytes, [0]) XCTAssertEqual(transaction.timestampBytes, [10, 0, 0, 0]) @@ -48,7 +48,7 @@ class TransactionsSigningTests: LiskTestCase { func testSignRequestOptions() { var transaction = LocalTransaction(.transfer, lsk: 1.12, recipientId: andrewAddress, timestamp: 10) - try? transaction.sign(secret: exampleSecret) + try? transaction.sign(passphrase: exampleSecret) let options = transaction.requestOptions diff --git a/Tests/API/Transactions/TransactionsTransferTests.swift b/Tests/API/Transactions/TransactionsTransferTests.swift index a584145..608d89b 100644 --- a/Tests/API/Transactions/TransactionsTransferTests.swift +++ b/Tests/API/Transactions/TransactionsTransferTests.swift @@ -12,14 +12,12 @@ class TransactionsTransferTests: LiskTestCase { func testMainnetSendNoFunds() { let transactions = Transactions(client: mainNetClient) - let response = tryRequestError { transactions.transfer(lsk: 1, to: andrewAddress, secret: exampleSecret, completionHandler: $0) } - XCTAssertFalse(response.success) + let response = tryRequestError { transactions.transfer(lsk: 1, to: andrewAddress, passphrase: exampleSecret, completionHandler: $0) } XCTAssertEqual(response.message, "Account does not have enough LSK: 5549607903333983622L balance: 0") } func testTestnetSendWithFunds() { let transactions = Transactions(client: testNetClient) - let response = tryRequest { transactions.transfer(lsk: 0.1, to: exampleAddress, secret: testSecret, completionHandler: $0) } - XCTAssert(response.success) + let _ = tryRequest { transactions.transfer(lsk: 0.1, to: exampleAddress, passphrase: testSecret, completionHandler: $0) } } } From 68ee5a1f9499c36d165e05a8b7fd5bdccb72f3f8 Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Thu, 12 Apr 2018 10:50:11 -0400 Subject: [PATCH 07/15] Update version numbers, metadata and docs --- .swift-version | 2 +- CHANGELOG.md | 58 +- Lisk.podspec | 2 +- Lisk.xcodeproj/project.pbxproj | 3401 ++++++++++------- .../xcschemes/Lisk-Package.xcscheme | 17 +- .../xcschemes/xcschememanagement.plist | 4 +- Package.resolved | 18 - Package.swift | 2 +- README.md | 15 +- .../API/Accounts/Models/AccountModel.swift | 10 + Sources/API/Blocks/Models/BlockModel.swift | 10 + Sources/API/Dapps/Models/DappModel.swift | 10 + .../API/Delegates/Models/DelegateModel.swift | 10 + Sources/API/Peers/Models/PeerModel.swift | 12 +- Sources/API/Signatures/Signatures.swift | 1 - .../Models/TransactionModel.swift | 10 + Sources/Core/APIModel.swift | 2 +- docs/Classes.html | 108 +- docs/Classes/SHA256.html | 108 +- docs/Enums.html | 182 +- docs/Enums/HTTPMethod.html | 108 +- docs/Enums/Response.html | 118 +- docs/Enums/TransactionType.html | 108 +- docs/Extensions.html | 139 +- docs/Extensions/Array.html | 367 ++ docs/Extensions/KeyPair.html | 116 +- docs/Protocols.html | 142 +- docs/Protocols/APIResponse.html | 145 +- docs/Protocols/APIService.html | 112 +- docs/Structs.html | 330 +- docs/Structs/APIClient.html | 181 +- .../APIError.html} | 197 +- .../APIMessageModel.html} | 161 +- docs/Structs/APINethash.html | 219 +- docs/Structs/APINode.html | 215 +- docs/Structs/APIOptions.html | 201 +- .../OrderBy.html => Structs/APIRequest.html} | 144 +- .../APIRequest/Join.html} | 145 +- .../Sort.html} | 177 +- .../APIRequest/Sort/Direction.html} | 196 +- docs/Structs/Accounts.html | 289 +- docs/Structs/Accounts/AccountModel.html | 213 +- docs/Structs/Accounts/AccountResponse.html | 339 -- docs/Structs/Accounts/AccountsResponse.html | 282 ++ docs/Structs/Accounts/BalanceResponse.html | 366 -- docs/Structs/Blocks.html | 816 +--- docs/Structs/Blocks/BlockModel.html | 304 +- docs/Structs/Blocks/BlockResponse.html | 339 -- docs/Structs/Blocks/BlocksResponse.html | 143 +- docs/Structs/Blocks/FeesResponse.html | 339 -- docs/Structs/Blocks/HeightResponse.html | 339 -- docs/Structs/Blocks/MilestoneResponse.html | 339 -- docs/Structs/Blocks/NethashResponse.html | 339 -- docs/Structs/Blocks/RewardResponse.html | 339 -- docs/Structs/Blocks/SupplyResponse.html | 339 -- docs/Structs/Constants.html | 128 +- docs/Structs/Constants/Fee.html | 162 +- .../Constants/{Port.html => Nethash.html} | 142 +- docs/Structs/Constants/Time.html | 124 +- docs/Structs/Crypto.html | 124 +- docs/Structs/Dapps.html | 405 ++ docs/Structs/Dapps/DappModel.html | 535 +++ .../DappsResponse.html} | 155 +- docs/Structs/Delegates.html | 498 +-- docs/Structs/Delegates/DelegateModel.html | 239 +- docs/Structs/Delegates/DelegateResponse.html | 339 -- docs/Structs/Delegates/DelegatesResponse.html | 143 +- docs/Structs/Delegates/VotersResponse.html | 339 -- docs/Structs/Loader/StatusResponse.html | 393 -- docs/Structs/LocalTransaction.html | 172 +- docs/Structs/MnemonicPassphrase.html | 116 +- docs/Structs/{Loader.html => Node.html} | 252 +- .../NodeConstantsFeesModel.html} | 241 +- .../NodeConstantsModel.html} | 277 +- docs/Structs/Node/NodeConstantsResponse.html | 282 ++ .../Node/NodeStatusModel.html} | 198 +- .../NodeStatusResponse.html} | 128 +- .../Node/NodeStatusTransactionsModel.html} | 179 +- docs/Structs/Peers.html | 337 +- docs/Structs/Peers/PeerModel.html | 231 +- docs/Structs/Peers/PeerModel/State.html | 108 +- docs/Structs/Peers/PeerResponse.html | 339 -- docs/Structs/Peers/PeersResponse.html | 143 +- docs/Structs/Signatures.html | 143 +- docs/Structs/Signatures/FeeResponse.html | 339 -- .../SignatureBroadcastResponse.html | 282 ++ .../SignatureModel.html} | 162 +- docs/Structs/Transactions.html | 401 +- .../Transactions/BroadcastResponse.html | 339 -- .../TransactionBroadcastResponse.html | 282 ++ .../Transactions/TransactionModel.html | 223 +- .../Transactions/TransactionResponse.html | 339 -- .../Transactions/TransactionsResponse.html | 143 +- docs/Typealiases.html | 108 +- docs/badge.svg | 4 +- .../Contents/Resources/Documents/Classes.html | 108 +- .../Resources/Documents/Classes/SHA256.html | 108 +- .../Contents/Resources/Documents/Enums.html | 182 +- .../Resources/Documents/Enums/HTTPMethod.html | 108 +- .../Resources/Documents/Enums/Response.html | 118 +- .../Documents/Enums/TransactionType.html | 108 +- .../Resources/Documents/Extensions.html | 139 +- .../Resources/Documents/Extensions/Array.html | 367 ++ .../Documents/Extensions/KeyPair.html | 116 +- .../Resources/Documents/Protocols.html | 142 +- .../Documents/Protocols/APIResponse.html | 145 +- .../Documents/Protocols/APIService.html | 112 +- .../Contents/Resources/Documents/Structs.html | 330 +- .../Documents/Structs/APIClient.html | 181 +- .../Documents/Structs/APIError.html} | 197 +- .../Documents/Structs/APIMessageModel.html} | 161 +- .../Documents/Structs/APINethash.html | 219 +- .../Resources/Documents/Structs/APINode.html | 215 +- .../Documents/Structs/APIOptions.html | 201 +- .../Documents/Structs/APIRequest.html} | 144 +- .../Documents/Structs/APIRequest/Join.html} | 145 +- .../Sort.html} | 177 +- .../APIRequest/Sort/Direction.html} | 196 +- .../Resources/Documents/Structs/Accounts.html | 289 +- .../Structs/Accounts/AccountModel.html | 213 +- .../Structs/Accounts/AccountResponse.html | 339 -- .../Structs/Accounts/AccountsResponse.html | 282 ++ .../Structs/Accounts/BalanceResponse.html | 366 -- .../Resources/Documents/Structs/Blocks.html | 816 +--- .../Documents/Structs/Blocks/BlockModel.html | 304 +- .../Structs/Blocks/BlockResponse.html | 339 -- .../Structs/Blocks/BlocksResponse.html | 143 +- .../Structs/Blocks/FeesResponse.html | 339 -- .../Structs/Blocks/HeightResponse.html | 339 -- .../Structs/Blocks/MilestoneResponse.html | 339 -- .../Structs/Blocks/NethashResponse.html | 339 -- .../Structs/Blocks/RewardResponse.html | 339 -- .../Structs/Blocks/SupplyResponse.html | 339 -- .../Documents/Structs/Constants.html | 128 +- .../Documents/Structs/Constants/Fee.html | 162 +- .../Constants/{Port.html => Nethash.html} | 142 +- .../Documents/Structs/Constants/Time.html | 124 +- .../Resources/Documents/Structs/Crypto.html | 124 +- .../Resources/Documents/Structs/Dapps.html | 405 ++ .../Documents/Structs/Dapps/DappModel.html | 535 +++ .../DappsResponse.html} | 155 +- .../Documents/Structs/Delegates.html | 498 +-- .../Structs/Delegates/DelegateModel.html | 239 +- .../Structs/Delegates/DelegateResponse.html | 339 -- .../Structs/Delegates/DelegatesResponse.html | 143 +- .../Structs/Delegates/VotersResponse.html | 339 -- .../Structs/Loader/StatusResponse.html | 393 -- .../Documents/Structs/LocalTransaction.html | 172 +- .../Documents/Structs/MnemonicPassphrase.html | 116 +- .../Structs/{Loader.html => Node.html} | 252 +- .../NodeConstantsFeesModel.html} | 241 +- .../NodeConstantsModel.html} | 277 +- .../Structs/Node/NodeConstantsResponse.html | 282 ++ .../Structs/Node/NodeStatusModel.html} | 198 +- .../NodeStatusResponse.html} | 128 +- .../Node/NodeStatusTransactionsModel.html} | 179 +- .../Resources/Documents/Structs/Peers.html | 337 +- .../Documents/Structs/Peers/PeerModel.html | 231 +- .../Structs/Peers/PeerModel/State.html | 108 +- .../Documents/Structs/Peers/PeerResponse.html | 339 -- .../Structs/Peers/PeersResponse.html | 143 +- .../Documents/Structs/Signatures.html | 143 +- .../Structs/Signatures/FeeResponse.html | 339 -- .../SignatureBroadcastResponse.html | 282 ++ .../SignatureModel.html} | 162 +- .../Documents/Structs/Transactions.html | 401 +- .../Transactions/BroadcastResponse.html | 339 -- .../TransactionBroadcastResponse.html | 282 ++ .../Transactions/TransactionModel.html | 223 +- .../Transactions/TransactionResponse.html | 339 -- .../Transactions/TransactionsResponse.html | 143 +- .../Resources/Documents/Typealiases.html | 108 +- .../Contents/Resources/Documents/index.html | 123 +- .../Contents/Resources/Documents/search.json | 2 +- .../Contents/Resources/docSet.dsidx | Bin 94208 -> 90112 bytes docs/docsets/Lisk.tgz | Bin 119007 -> 105990 bytes docs/index.html | 123 +- docs/search.json | 2 +- docs/undocumented.json | 871 +++-- 179 files changed, 15398 insertions(+), 26379 deletions(-) create mode 100644 docs/Extensions/Array.html rename docs/{docsets/Lisk.docset/Contents/Resources/Documents/Structs/APIResponseError.html => Structs/APIError.html} (73%) rename docs/{docsets/Lisk.docset/Contents/Resources/Documents/Enums/PropertyJoin.html => Structs/APIMessageModel.html} (63%) rename docs/{docsets/Lisk.docset/Contents/Resources/Documents/Structs/OrderBy.html => Structs/APIRequest.html} (69%) rename docs/{docsets/Lisk.docset/Contents/Resources/Documents/Structs/Blocks/FeeResponse.html => Structs/APIRequest/Join.html} (68%) rename docs/Structs/{Peers/VersionResponse.html => APIRequest/Sort.html} (70%) rename docs/{Enums/OrderByDirection.html => Structs/APIRequest/Sort/Direction.html} (51%) delete mode 100644 docs/Structs/Accounts/AccountResponse.html create mode 100644 docs/Structs/Accounts/AccountsResponse.html delete mode 100644 docs/Structs/Accounts/BalanceResponse.html delete mode 100644 docs/Structs/Blocks/BlockResponse.html delete mode 100644 docs/Structs/Blocks/FeesResponse.html delete mode 100644 docs/Structs/Blocks/HeightResponse.html delete mode 100644 docs/Structs/Blocks/MilestoneResponse.html delete mode 100644 docs/Structs/Blocks/NethashResponse.html delete mode 100644 docs/Structs/Blocks/RewardResponse.html delete mode 100644 docs/Structs/Blocks/SupplyResponse.html rename docs/Structs/Constants/{Port.html => Nethash.html} (71%) create mode 100644 docs/Structs/Dapps.html create mode 100644 docs/Structs/Dapps/DappModel.html rename docs/Structs/{Delegates/CountResponse.html => Dapps/DappsResponse.html} (65%) delete mode 100644 docs/Structs/Delegates/DelegateResponse.html delete mode 100644 docs/Structs/Delegates/VotersResponse.html delete mode 100644 docs/Structs/Loader/StatusResponse.html rename docs/Structs/{Loader.html => Node.html} (65%) rename docs/Structs/{Blocks/FeesModel.html => Node/NodeConstantsFeesModel.html} (64%) rename docs/Structs/{Blocks/StatusResponse.html => Node/NodeConstantsModel.html} (61%) create mode 100644 docs/Structs/Node/NodeConstantsResponse.html rename docs/{docsets/Lisk.docset/Contents/Resources/Documents/Structs/Loader/StatusSyncResponse.html => Structs/Node/NodeStatusModel.html} (73%) rename docs/Structs/{Loader/StatusPingResponse.html => Node/NodeStatusResponse.html} (71%) rename docs/{docsets/Lisk.docset/Contents/Resources/Documents/Structs/Delegates/VoterModel.html => Structs/Node/NodeStatusTransactionsModel.html} (70%) delete mode 100644 docs/Structs/Peers/PeerResponse.html delete mode 100644 docs/Structs/Signatures/FeeResponse.html create mode 100644 docs/Structs/Signatures/SignatureBroadcastResponse.html rename docs/Structs/{Accounts/PublicKeyResponse.html => Signatures/SignatureModel.html} (71%) delete mode 100644 docs/Structs/Transactions/BroadcastResponse.html create mode 100644 docs/Structs/Transactions/TransactionBroadcastResponse.html delete mode 100644 docs/Structs/Transactions/TransactionResponse.html create mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Extensions/Array.html rename docs/{Structs/APIResponseError.html => docsets/Lisk.docset/Contents/Resources/Documents/Structs/APIError.html} (73%) rename docs/{Enums/PropertyJoin.html => docsets/Lisk.docset/Contents/Resources/Documents/Structs/APIMessageModel.html} (63%) rename docs/{Structs/OrderBy.html => docsets/Lisk.docset/Contents/Resources/Documents/Structs/APIRequest.html} (69%) rename docs/{Structs/Blocks/FeeResponse.html => docsets/Lisk.docset/Contents/Resources/Documents/Structs/APIRequest/Join.html} (68%) rename docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/{Peers/VersionResponse.html => APIRequest/Sort.html} (70%) rename docs/docsets/Lisk.docset/Contents/Resources/Documents/{Enums/OrderByDirection.html => Structs/APIRequest/Sort/Direction.html} (51%) delete mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Accounts/AccountResponse.html create mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Accounts/AccountsResponse.html delete mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Accounts/BalanceResponse.html delete mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Blocks/BlockResponse.html delete mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Blocks/FeesResponse.html delete mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Blocks/HeightResponse.html delete mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Blocks/MilestoneResponse.html delete mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Blocks/NethashResponse.html delete mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Blocks/RewardResponse.html delete mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Blocks/SupplyResponse.html rename docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Constants/{Port.html => Nethash.html} (71%) create mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Dapps.html create mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Dapps/DappModel.html rename docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/{Delegates/CountResponse.html => Dapps/DappsResponse.html} (65%) delete mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Delegates/DelegateResponse.html delete mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Delegates/VotersResponse.html delete mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Loader/StatusResponse.html rename docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/{Loader.html => Node.html} (65%) rename docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/{Blocks/FeesModel.html => Node/NodeConstantsFeesModel.html} (64%) rename docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/{Blocks/StatusResponse.html => Node/NodeConstantsModel.html} (61%) create mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Node/NodeConstantsResponse.html rename docs/{Structs/Loader/StatusSyncResponse.html => docsets/Lisk.docset/Contents/Resources/Documents/Structs/Node/NodeStatusModel.html} (73%) rename docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/{Loader/StatusPingResponse.html => Node/NodeStatusResponse.html} (71%) rename docs/{Structs/Delegates/VoterModel.html => docsets/Lisk.docset/Contents/Resources/Documents/Structs/Node/NodeStatusTransactionsModel.html} (70%) delete mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Peers/PeerResponse.html delete mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Signatures/FeeResponse.html create mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Signatures/SignatureBroadcastResponse.html rename docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/{Accounts/PublicKeyResponse.html => Signatures/SignatureModel.html} (71%) delete mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Transactions/BroadcastResponse.html create mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Transactions/TransactionBroadcastResponse.html delete mode 100644 docs/docsets/Lisk.docset/Contents/Resources/Documents/Structs/Transactions/TransactionResponse.html diff --git a/.swift-version b/.swift-version index 5186d07..7d5c902 100644 --- a/.swift-version +++ b/.swift-version @@ -1 +1 @@ -4.0 +4.1 diff --git a/CHANGELOG.md b/CHANGELOG.md index a95ce35..8ae353c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,60 +5,6 @@ Change Log --- -## [1.0.0-beta13](https://github.com/AndrewBarba/lisk-swift-sdk/releases/tag/1.0.0-beta13) +## [1.0.0.beta.1](https://github.com/AndrewBarba/lisk-swift-sdk/releases/tag/1.0.0.beta.1) -1. Call all completion handlers on the main thread - -## [1.0.0-beta12](https://github.com/AndrewBarba/lisk-swift-sdk/releases/tag/1.0.0-beta12) - -1. Generate secure, 12 word, random passphrases - -## [1.0.0-beta11](https://github.com/AndrewBarba/lisk-swift-sdk/releases/tag/1.0.0-beta11) - -1. Refactor random node selection for Linux - -## [1.0.0-beta10](https://github.com/AndrewBarba/lisk-swift-sdk/releases/tag/1.0.0-beta10) - -1. Support Linux random - -## [1.0.0-beta9](https://github.com/AndrewBarba/lisk-swift-sdk/releases/tag/1.0.0-beta9) - -1. Sign transactions with a key pair - -## [1.0.0-beta8](https://github.com/AndrewBarba/lisk-swift-sdk/releases/tag/1.0.0-beta8) - -1. Public public/private key string methods - -## [1.0.0-beta7](https://github.com/AndrewBarba/lisk-swift-sdk/releases/tag/1.0.0-beta7) - -1. Setup Package.swift library - -## [1.0.0-beta6](https://github.com/AndrewBarba/lisk-swift-sdk/releases/tag/1.0.0-beta6) - -1. Signatures API -2. Register second secret via local transaction signing - -## [1.0.0-beta5](https://github.com/AndrewBarba/lisk-swift-sdk/releases/tag/1.0.0-beta5) - -1. Blocks API - -## [1.0.0-beta4](https://github.com/AndrewBarba/lisk-swift-sdk/releases/tag/1.0.0-beta4) - -1. Delegates API -2. Peers API - -## [1.0.0-beta3](https://github.com/AndrewBarba/lisk-swift-sdk/releases/tag/1.0.0-beta3) - -1. Locally sign and broadcast transactions - -## [1.0.0-beta2](https://github.com/AndrewBarba/lisk-swift-sdk/releases/tag/1.0.0-beta2) - -1. Crypto module to extract public/private keys from a secret -2. Securely gain access to a Lisk account via a secret passphrase -3. Full support for Swift Package Manager - -## [1.0.0-beta1](https://github.com/AndrewBarba/lisk-swift-sdk/releases/tag/1.0.0-beta1) - -1. Initial release. -2. Includes `APIClient` to make requests to Lisk nodes -3. `Loader` module to check node status +1. Initial version with full support for Lisk 1.0.0 API diff --git a/Lisk.podspec b/Lisk.podspec index 72d2fc1..b7e6fac 100644 --- a/Lisk.podspec +++ b/Lisk.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'Lisk' - s.version = '1.0.0-beta13' + s.version = '1.0.0.beta.1' s.summary = 'Swift 4 library for Lisk - the cryptocurrency and blockchain application platform' s.homepage = 'https://github.com/AndrewBarba/lisk-swift' s.documentation_url = 'https://andrewbarba.github.io/lisk-swift/' diff --git a/Lisk.xcodeproj/project.pbxproj b/Lisk.xcodeproj/project.pbxproj index 2d80c14..586dbdc 100644 --- a/Lisk.xcodeproj/project.pbxproj +++ b/Lisk.xcodeproj/project.pbxproj @@ -1,1383 +1,2024 @@ // !$*UTF8*$! { - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXAggregateTarget section */ - "Lisk::LiskPackageTests::ProductTarget" /* LiskPackageTests */ = { - isa = PBXAggregateTarget; - buildConfigurationList = OBJ_175 /* Build configuration list for PBXAggregateTarget "LiskPackageTests" */; - buildPhases = ( - ); - dependencies = ( - OBJ_178 /* PBXTargetDependency */, - ); - name = LiskPackageTests; - productName = LiskPackageTests; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 3809038C2013AC1B00E80537 /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3809038A2013AB9D00E80537 /* Random.swift */; }; - 381C95D92003E44E0002FBC4 /* DelegatesResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95D82003E44E0002FBC4 /* DelegatesResponse.swift */; }; - 381C95DD2003E6D50002FBC4 /* APIService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95DC2003E6D50002FBC4 /* APIService.swift */; }; - 381C95E62003ECE70002FBC4 /* DelegatesGetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95E52003ECE70002FBC4 /* DelegatesGetTests.swift */; }; - 381C95EA2003EE440002FBC4 /* DelegatesListTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95E92003EE440002FBC4 /* DelegatesListTests.swift */; }; - 381C95ED2003F4580002FBC4 /* Peers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95EC2003F4580002FBC4 /* Peers.swift */; }; - 381C95F02003F4A10002FBC4 /* PeerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95EF2003F4A10002FBC4 /* PeerModel.swift */; }; - 381C95F32003F5CF0002FBC4 /* PeersResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95F22003F5CF0002FBC4 /* PeersResponse.swift */; }; - 381C95FA2003FACE0002FBC4 /* PeersGetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95F92003FACE0002FBC4 /* PeersGetTests.swift */; }; - 381C95FE2003FC710002FBC4 /* PeersListTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381C95FB2003FC0D0002FBC4 /* PeersListTests.swift */; }; - 385C827C201AF2B000012D71 /* MnemonicPassphrase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 385C827B201AF2B000012D71 /* MnemonicPassphrase.swift */; }; - 385C8280201AF52000012D71 /* MnemonicPassphraseTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 385C827F201AF52000012D71 /* MnemonicPassphraseTests.swift */; }; - 3874AB9B1FFC82490008C527 /* Transactions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3874AB9A1FFC82490008C527 /* Transactions.swift */; }; - 3874AB9E1FFC82C50008C527 /* TransactionsResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3874AB9D1FFC82C50008C527 /* TransactionsResponse.swift */; }; - 3874ABA11FFC831B0008C527 /* TransactionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3874ABA01FFC831B0008C527 /* TransactionModel.swift */; }; - 3874ABA41FFC8E6C0008C527 /* TransactionsGetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3874ABA31FFC8E6C0008C527 /* TransactionsGetTests.swift */; }; - 3874ABA61FFC8EEE0008C527 /* TransactionsListTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3874ABA51FFC8EEE0008C527 /* TransactionsListTest.swift */; }; - 3883A8C120029A9700460A9B /* BytePacker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3883A8BF20029A4000460A9B /* BytePacker.swift */; }; - 3883A8C320029BE500460A9B /* LocalTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3883A8C220029BE500460A9B /* LocalTransaction.swift */; }; - 3883A8C62002D8AC00460A9B /* TransactionsSigningTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3883A8BD2002929800460A9B /* TransactionsSigningTest.swift */; }; - 3883A8C82002DC4E00460A9B /* TransactionsTransferTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3883A8C72002DC4E00460A9B /* TransactionsTransferTests.swift */; }; - 3883A8CA2003BED900460A9B /* TransactionBroadcastResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3883A8C92003BED900460A9B /* TransactionBroadcastResponse.swift */; }; - 38B8E222200672780067BA8E /* SignatureBroadcastResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38B8E220200672730067BA8E /* SignatureBroadcastResponse.swift */; }; - 38B8E2232006728A0067BA8E /* Signatures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38B8E21D2006723B0067BA8E /* Signatures.swift */; }; - 38C55B982006854000C0CCA4 /* SignaturesRegisterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C55B972006854000C0CCA4 /* SignaturesRegisterTests.swift */; }; - 38C66D7B20051FB8007B2FA1 /* Blocks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D7A20051FB8007B2FA1 /* Blocks.swift */; }; - 38C66D7F20051FF8007B2FA1 /* BlockModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D7E20051FF8007B2FA1 /* BlockModel.swift */; }; - 38C66D8120052032007B2FA1 /* APIModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D8020052032007B2FA1 /* APIModel.swift */; }; - 38C66D83200523F2007B2FA1 /* BlocksResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66D82200523F2007B2FA1 /* BlocksResponse.swift */; }; - 38C66DA220053DEE007B2FA1 /* BlocksGetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66DA120053DEE007B2FA1 /* BlocksGetTests.swift */; }; - 38C66DA420053F55007B2FA1 /* BlocksListTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C66DA320053F55007B2FA1 /* BlocksListTests.swift */; }; - 38FB2B01207E9ED700F13CFE /* APIRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FB2AFF207E9E8500F13CFE /* APIRequest.swift */; }; - 38FB2B04207EA6D400F13CFE /* NodeStatusModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FB2B03207EA6D400F13CFE /* NodeStatusModel.swift */; }; - 38FB2B06207EA7EF00F13CFE /* NodeConstantsResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FB2B05207EA7EF00F13CFE /* NodeConstantsResponse.swift */; }; - 38FB2B08207EA81900F13CFE /* NodeConstantsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FB2B07207EA81900F13CFE /* NodeConstantsModel.swift */; }; - 38FB2B0B207EA9AC00F13CFE /* Dapps.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FB2B0A207EA9AC00F13CFE /* Dapps.swift */; }; - 38FB2B0F207EA9F400F13CFE /* DappsResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FB2B0E207EA9F400F13CFE /* DappsResponse.swift */; }; - 38FB2B11207EA9FC00F13CFE /* DappModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FB2B10207EA9FC00F13CFE /* DappModel.swift */; }; - 38FB2B14207EAF7200F13CFE /* SignatureModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FB2B13207EAF7200F13CFE /* SignatureModel.swift */; }; - OBJ_101 /* AccountsOpenTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_45 /* AccountsOpenTests.swift */; }; - OBJ_102 /* AccountsPublicKeyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_46 /* AccountsPublicKeyTests.swift */; }; - OBJ_106 /* LiskTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_51 /* LiskTestCase.swift */; }; - OBJ_108 /* Lisk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "Lisk::Lisk::Product" /* Lisk.framework */; }; - OBJ_109 /* Ed25519.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "Ed25519::Ed25519::Product" /* Ed25519.framework */; }; - OBJ_110 /* CEd25519.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "Ed25519::CEd25519::Product" /* CEd25519.framework */; }; - OBJ_121 /* Accounts.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_10 /* Accounts.swift */; }; - OBJ_122 /* AccountModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_12 /* AccountModel.swift */; }; - OBJ_123 /* AccountsResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_14 /* AccountsResponse.swift */; }; - OBJ_127 /* Delegates.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_19 /* Delegates.swift */; }; - OBJ_128 /* DelegateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_21 /* DelegateModel.swift */; }; - OBJ_129 /* Node.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_23 /* Node.swift */; }; - OBJ_131 /* NodeStatusResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_26 /* NodeStatusResponse.swift */; }; - OBJ_133 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_28 /* Constants.swift */; }; - OBJ_134 /* APIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_30 /* APIClient.swift */; }; - OBJ_135 /* APINethash.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_31 /* APINethash.swift */; }; - OBJ_136 /* APINode.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_32 /* APINode.swift */; }; - OBJ_137 /* APIOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_33 /* APIOptions.swift */; }; - OBJ_138 /* APIResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_34 /* APIResponse.swift */; }; - OBJ_139 /* APIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_35 /* APIError.swift */; }; - OBJ_140 /* Crypto.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_37 /* Crypto.swift */; }; - OBJ_141 /* SHA256.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_38 /* SHA256.swift */; }; - OBJ_143 /* Ed25519.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "Ed25519::Ed25519::Product" /* Ed25519.framework */; }; - OBJ_144 /* CEd25519.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "Ed25519::CEd25519::Product" /* CEd25519.framework */; }; - OBJ_151 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_70 /* Error.swift */; }; - OBJ_152 /* KeyPair.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_71 /* KeyPair.swift */; }; - OBJ_153 /* PrivateKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_72 /* PrivateKey.swift */; }; - OBJ_154 /* PublicKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_73 /* PublicKey.swift */; }; - OBJ_155 /* Seed.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_74 /* Seed.swift */; }; - OBJ_157 /* CEd25519.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "Ed25519::CEd25519::Product" /* CEd25519.framework */; }; - OBJ_163 /* add_scalar.c in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_56 /* add_scalar.c */; }; - OBJ_164 /* fe.c in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_57 /* fe.c */; }; - OBJ_165 /* ge.c in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_58 /* ge.c */; }; - OBJ_166 /* key_exchange.c in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_59 /* key_exchange.c */; }; - OBJ_167 /* keypair.c in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_60 /* keypair.c */; }; - OBJ_168 /* sc.c in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_61 /* sc.c */; }; - OBJ_169 /* seed.c in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_62 /* seed.c */; }; - OBJ_170 /* sha512.c in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_63 /* sha512.c */; }; - OBJ_171 /* sign.c in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_64 /* sign.c */; }; - OBJ_172 /* verify.c in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_65 /* verify.c */; }; - OBJ_86 /* Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_6 /* Package.swift */; }; - OBJ_92 /* Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_75 /* Package.swift */; }; - OBJ_98 /* AccountsAccountTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_42 /* AccountsAccountTests.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 38434E581FFADA1400AA3540 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = OBJ_1 /* Project object */; - proxyType = 1; - remoteGlobalIDString = "Ed25519::Ed25519"; - remoteInfo = Ed25519; - }; - 38434E591FFADA1400AA3540 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = OBJ_1 /* Project object */; - proxyType = 1; - remoteGlobalIDString = "Ed25519::CEd25519"; - remoteInfo = CEd25519; - }; - 38434E5A1FFADA1400AA3540 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = OBJ_1 /* Project object */; - proxyType = 1; - remoteGlobalIDString = "Ed25519::CEd25519"; - remoteInfo = CEd25519; - }; - 38434E5B1FFADA1400AA3540 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = OBJ_1 /* Project object */; - proxyType = 1; - remoteGlobalIDString = "Lisk::Lisk"; - remoteInfo = Lisk; - }; - 38434E5C1FFADA1400AA3540 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = OBJ_1 /* Project object */; - proxyType = 1; - remoteGlobalIDString = "Ed25519::Ed25519"; - remoteInfo = Ed25519; - }; - 38434E5D1FFADA1400AA3540 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = OBJ_1 /* Project object */; - proxyType = 1; - remoteGlobalIDString = "Ed25519::CEd25519"; - remoteInfo = CEd25519; - }; - 38434E5E1FFADA1500AA3540 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = OBJ_1 /* Project object */; - proxyType = 1; - remoteGlobalIDString = "Lisk::LiskTests"; - remoteInfo = LiskTests; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 3809038A2013AB9D00E80537 /* Random.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Random.swift; sourceTree = ""; }; - 381C95D82003E44E0002FBC4 /* DelegatesResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegatesResponse.swift; sourceTree = ""; }; - 381C95DC2003E6D50002FBC4 /* APIService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIService.swift; sourceTree = ""; }; - 381C95E52003ECE70002FBC4 /* DelegatesGetTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegatesGetTests.swift; sourceTree = ""; }; - 381C95E92003EE440002FBC4 /* DelegatesListTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegatesListTests.swift; sourceTree = ""; }; - 381C95EC2003F4580002FBC4 /* Peers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Peers.swift; sourceTree = ""; }; - 381C95EF2003F4A10002FBC4 /* PeerModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeerModel.swift; sourceTree = ""; }; - 381C95F22003F5CF0002FBC4 /* PeersResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeersResponse.swift; sourceTree = ""; }; - 381C95F92003FACE0002FBC4 /* PeersGetTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeersGetTests.swift; sourceTree = ""; }; - 381C95FB2003FC0D0002FBC4 /* PeersListTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeersListTests.swift; sourceTree = ""; }; - 385C827B201AF2B000012D71 /* MnemonicPassphrase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MnemonicPassphrase.swift; sourceTree = ""; }; - 385C827F201AF52000012D71 /* MnemonicPassphraseTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MnemonicPassphraseTests.swift; sourceTree = ""; }; - 3874AB9A1FFC82490008C527 /* Transactions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Transactions.swift; sourceTree = ""; }; - 3874AB9D1FFC82C50008C527 /* TransactionsResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionsResponse.swift; sourceTree = ""; }; - 3874ABA01FFC831B0008C527 /* TransactionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionModel.swift; sourceTree = ""; }; - 3874ABA31FFC8E6C0008C527 /* TransactionsGetTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionsGetTests.swift; sourceTree = ""; }; - 3874ABA51FFC8EEE0008C527 /* TransactionsListTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionsListTest.swift; sourceTree = ""; }; - 3883A8BD2002929800460A9B /* TransactionsSigningTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionsSigningTest.swift; sourceTree = ""; }; - 3883A8BF20029A4000460A9B /* BytePacker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BytePacker.swift; sourceTree = ""; }; - 3883A8C220029BE500460A9B /* LocalTransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalTransaction.swift; sourceTree = ""; }; - 3883A8C72002DC4E00460A9B /* TransactionsTransferTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionsTransferTests.swift; sourceTree = ""; }; - 3883A8C92003BED900460A9B /* TransactionBroadcastResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionBroadcastResponse.swift; sourceTree = ""; }; - 38B8E21D2006723B0067BA8E /* Signatures.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Signatures.swift; sourceTree = ""; }; - 38B8E220200672730067BA8E /* SignatureBroadcastResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignatureBroadcastResponse.swift; sourceTree = ""; }; - 38C55B972006854000C0CCA4 /* SignaturesRegisterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignaturesRegisterTests.swift; sourceTree = ""; }; - 38C66D7A20051FB8007B2FA1 /* Blocks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Blocks.swift; sourceTree = ""; }; - 38C66D7E20051FF8007B2FA1 /* BlockModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockModel.swift; sourceTree = ""; }; - 38C66D8020052032007B2FA1 /* APIModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIModel.swift; sourceTree = ""; }; - 38C66D82200523F2007B2FA1 /* BlocksResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlocksResponse.swift; sourceTree = ""; }; - 38C66DA120053DEE007B2FA1 /* BlocksGetTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlocksGetTests.swift; sourceTree = ""; }; - 38C66DA320053F55007B2FA1 /* BlocksListTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlocksListTests.swift; sourceTree = ""; }; - 38FB2AFF207E9E8500F13CFE /* APIRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIRequest.swift; sourceTree = ""; }; - 38FB2B03207EA6D400F13CFE /* NodeStatusModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NodeStatusModel.swift; sourceTree = ""; }; - 38FB2B05207EA7EF00F13CFE /* NodeConstantsResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NodeConstantsResponse.swift; sourceTree = ""; }; - 38FB2B07207EA81900F13CFE /* NodeConstantsModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NodeConstantsModel.swift; sourceTree = ""; }; - 38FB2B0A207EA9AC00F13CFE /* Dapps.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Dapps.swift; sourceTree = ""; }; - 38FB2B0E207EA9F400F13CFE /* DappsResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DappsResponse.swift; sourceTree = ""; }; - 38FB2B10207EA9FC00F13CFE /* DappModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DappModel.swift; sourceTree = ""; }; - 38FB2B13207EAF7200F13CFE /* SignatureModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignatureModel.swift; sourceTree = ""; }; - "Ed25519::CEd25519::Product" /* CEd25519.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CEd25519.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - "Ed25519::Ed25519::Product" /* Ed25519.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Ed25519.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - "Lisk::Lisk::Product" /* Lisk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Lisk.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - "Lisk::LiskTests::Product" /* LiskTests.xctest */ = {isa = PBXFileReference; lastKnownFileType = file; path = LiskTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - OBJ_10 /* Accounts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Accounts.swift; sourceTree = ""; }; - OBJ_12 /* AccountModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountModel.swift; sourceTree = ""; }; - OBJ_14 /* AccountsResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountsResponse.swift; sourceTree = ""; }; - OBJ_19 /* Delegates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Delegates.swift; sourceTree = ""; }; - OBJ_21 /* DelegateModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegateModel.swift; sourceTree = ""; }; - OBJ_23 /* Node.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Node.swift; sourceTree = ""; }; - OBJ_26 /* NodeStatusResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NodeStatusResponse.swift; sourceTree = ""; }; - OBJ_28 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; - OBJ_30 /* APIClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIClient.swift; sourceTree = ""; }; - OBJ_31 /* APINethash.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APINethash.swift; sourceTree = ""; }; - OBJ_32 /* APINode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APINode.swift; sourceTree = ""; }; - OBJ_33 /* APIOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIOptions.swift; sourceTree = ""; }; - OBJ_34 /* APIResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIResponse.swift; sourceTree = ""; }; - OBJ_35 /* APIError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIError.swift; sourceTree = ""; }; - OBJ_37 /* Crypto.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Crypto.swift; sourceTree = ""; }; - OBJ_38 /* SHA256.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SHA256.swift; sourceTree = ""; }; - OBJ_42 /* AccountsAccountTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountsAccountTests.swift; sourceTree = ""; }; - OBJ_45 /* AccountsOpenTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountsOpenTests.swift; sourceTree = ""; }; - OBJ_46 /* AccountsPublicKeyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountsPublicKeyTests.swift; sourceTree = ""; }; - OBJ_51 /* LiskTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LiskTestCase.swift; sourceTree = ""; }; - OBJ_56 /* add_scalar.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = add_scalar.c; sourceTree = ""; }; - OBJ_57 /* fe.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fe.c; sourceTree = ""; }; - OBJ_58 /* ge.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ge.c; sourceTree = ""; }; - OBJ_59 /* key_exchange.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = key_exchange.c; sourceTree = ""; }; - OBJ_6 /* Package.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; }; - OBJ_60 /* keypair.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = keypair.c; sourceTree = ""; }; - OBJ_61 /* sc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sc.c; sourceTree = ""; }; - OBJ_62 /* seed.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = seed.c; sourceTree = ""; }; - OBJ_63 /* sha512.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sha512.c; sourceTree = ""; }; - OBJ_64 /* sign.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sign.c; sourceTree = ""; }; - OBJ_65 /* verify.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = verify.c; sourceTree = ""; }; - OBJ_67 /* ed25519.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ed25519.h; sourceTree = ""; }; - OBJ_68 /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; name = module.modulemap; path = "/Users/andrewbarba/Code/Lisk/lisk-swift/Lisk.xcodeproj/GeneratedModuleMap/CEd25519/module.modulemap"; sourceTree = ""; }; - OBJ_70 /* Error.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Error.swift; sourceTree = ""; }; - OBJ_71 /* KeyPair.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyPair.swift; sourceTree = ""; }; - OBJ_72 /* PrivateKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivateKey.swift; sourceTree = ""; }; - OBJ_73 /* PublicKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PublicKey.swift; sourceTree = ""; }; - OBJ_74 /* Seed.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Seed.swift; sourceTree = ""; }; - OBJ_75 /* Package.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; name = Package.swift; path = "/Users/andrewbarba/Code/Lisk/lisk-swift/.build/checkouts/ed25519.git-6274347002403739230/Package.swift"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - OBJ_107 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 0; - files = ( - OBJ_108 /* Lisk.framework in Frameworks */, - OBJ_109 /* Ed25519.framework in Frameworks */, - OBJ_110 /* CEd25519.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - OBJ_142 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 0; - files = ( - OBJ_143 /* Ed25519.framework in Frameworks */, - OBJ_144 /* CEd25519.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - OBJ_156 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 0; - files = ( - OBJ_157 /* CEd25519.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - OBJ_173 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 0; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 381C95D72003E4360002FBC4 /* Responses */ = { - isa = PBXGroup; - children = ( - 381C95D82003E44E0002FBC4 /* DelegatesResponse.swift */, - ); - path = Responses; - sourceTree = ""; - }; - 381C95E22003EC300002FBC4 /* Delegates */ = { - isa = PBXGroup; - children = ( - 381C95E52003ECE70002FBC4 /* DelegatesGetTests.swift */, - 381C95E92003EE440002FBC4 /* DelegatesListTests.swift */, - ); - path = Delegates; - sourceTree = ""; - }; - 381C95EB2003F4430002FBC4 /* Peers */ = { - isa = PBXGroup; - children = ( - 381C95EE2003F4940002FBC4 /* Models */, - 381C95F12003F5C10002FBC4 /* Responses */, - 381C95EC2003F4580002FBC4 /* Peers.swift */, - ); - path = Peers; - sourceTree = ""; - }; - 381C95EE2003F4940002FBC4 /* Models */ = { - isa = PBXGroup; - children = ( - 381C95EF2003F4A10002FBC4 /* PeerModel.swift */, - ); - path = Models; - sourceTree = ""; - }; - 381C95F12003F5C10002FBC4 /* Responses */ = { - isa = PBXGroup; - children = ( - 381C95F22003F5CF0002FBC4 /* PeersResponse.swift */, - ); - path = Responses; - sourceTree = ""; - }; - 381C95F62003FA700002FBC4 /* Peers */ = { - isa = PBXGroup; - children = ( - 381C95F92003FACE0002FBC4 /* PeersGetTests.swift */, - 381C95FB2003FC0D0002FBC4 /* PeersListTests.swift */, - ); - path = Peers; - sourceTree = ""; - }; - 385C827E201AF4FD00012D71 /* Crypto */ = { - isa = PBXGroup; - children = ( - 385C827F201AF52000012D71 /* MnemonicPassphraseTests.swift */, - ); - path = Crypto; - sourceTree = ""; - }; - 3874AB991FFC82260008C527 /* Transactions */ = { - isa = PBXGroup; - children = ( - 38C55B9120067F7A00C0CCA4 /* Asset */, - 3874AB9F1FFC830E0008C527 /* Models */, - 3874AB9C1FFC82B20008C527 /* Responses */, - 3874AB9A1FFC82490008C527 /* Transactions.swift */, - 3883A8C220029BE500460A9B /* LocalTransaction.swift */, - ); - path = Transactions; - sourceTree = ""; - }; - 3874AB9C1FFC82B20008C527 /* Responses */ = { - isa = PBXGroup; - children = ( - 3874AB9D1FFC82C50008C527 /* TransactionsResponse.swift */, - 3883A8C92003BED900460A9B /* TransactionBroadcastResponse.swift */, - ); - path = Responses; - sourceTree = ""; - }; - 3874AB9F1FFC830E0008C527 /* Models */ = { - isa = PBXGroup; - children = ( - 3874ABA01FFC831B0008C527 /* TransactionModel.swift */, - ); - path = Models; - sourceTree = ""; - }; - 3874ABA21FFC8E550008C527 /* Transactions */ = { - isa = PBXGroup; - children = ( - 3874ABA31FFC8E6C0008C527 /* TransactionsGetTests.swift */, - 3874ABA51FFC8EEE0008C527 /* TransactionsListTest.swift */, - 3883A8BD2002929800460A9B /* TransactionsSigningTest.swift */, - 3883A8C72002DC4E00460A9B /* TransactionsTransferTests.swift */, - ); - path = Transactions; - sourceTree = ""; - }; - 38B8E21C2006722C0067BA8E /* Signatures */ = { - isa = PBXGroup; - children = ( - 38FB2B12207EAF6800F13CFE /* Models */, - 38B8E21F2006725C0067BA8E /* Responses */, - 38B8E21D2006723B0067BA8E /* Signatures.swift */, - ); - path = Signatures; - sourceTree = ""; - }; - 38B8E21F2006725C0067BA8E /* Responses */ = { - isa = PBXGroup; - children = ( - 38B8E220200672730067BA8E /* SignatureBroadcastResponse.swift */, - ); - path = Responses; - sourceTree = ""; - }; - 38C55B9120067F7A00C0CCA4 /* Asset */ = { - isa = PBXGroup; - children = ( - ); - path = Asset; - sourceTree = ""; - }; - 38C55B94200684EE00C0CCA4 /* Signatures */ = { - isa = PBXGroup; - children = ( - 38C55B972006854000C0CCA4 /* SignaturesRegisterTests.swift */, - ); - path = Signatures; - sourceTree = ""; - }; - 38C66D7920051FA7007B2FA1 /* Blocks */ = { - isa = PBXGroup; - children = ( - 38C66D7C20051FE1007B2FA1 /* Models */, - 38C66D7D20051FE6007B2FA1 /* Responses */, - 38C66D7A20051FB8007B2FA1 /* Blocks.swift */, - ); - path = Blocks; - sourceTree = ""; - }; - 38C66D7C20051FE1007B2FA1 /* Models */ = { - isa = PBXGroup; - children = ( - 38C66D7E20051FF8007B2FA1 /* BlockModel.swift */, - ); - path = Models; - sourceTree = ""; - }; - 38C66D7D20051FE6007B2FA1 /* Responses */ = { - isa = PBXGroup; - children = ( - 38C66D82200523F2007B2FA1 /* BlocksResponse.swift */, - ); - path = Responses; - sourceTree = ""; - }; - 38C66D9E20053D25007B2FA1 /* Blocks */ = { - isa = PBXGroup; - children = ( - 38C66DA120053DEE007B2FA1 /* BlocksGetTests.swift */, - 38C66DA320053F55007B2FA1 /* BlocksListTests.swift */, - ); - path = Blocks; - sourceTree = ""; - }; - 38FB2B02207EA6C600F13CFE /* Models */ = { - isa = PBXGroup; - children = ( - 38FB2B07207EA81900F13CFE /* NodeConstantsModel.swift */, - 38FB2B03207EA6D400F13CFE /* NodeStatusModel.swift */, - ); - path = Models; - sourceTree = ""; - }; - 38FB2B09207EA99F00F13CFE /* Dapps */ = { - isa = PBXGroup; - children = ( - 38FB2B0C207EA9E000F13CFE /* Models */, - 38FB2B0D207EA9E400F13CFE /* Responses */, - 38FB2B0A207EA9AC00F13CFE /* Dapps.swift */, - ); - path = Dapps; - sourceTree = ""; - }; - 38FB2B0C207EA9E000F13CFE /* Models */ = { - isa = PBXGroup; - children = ( - 38FB2B10207EA9FC00F13CFE /* DappModel.swift */, - ); - path = Models; - sourceTree = ""; - }; - 38FB2B0D207EA9E400F13CFE /* Responses */ = { - isa = PBXGroup; - children = ( - 38FB2B0E207EA9F400F13CFE /* DappsResponse.swift */, - ); - path = Responses; - sourceTree = ""; - }; - 38FB2B12207EAF6800F13CFE /* Models */ = { - isa = PBXGroup; - children = ( - 38FB2B13207EAF7200F13CFE /* SignatureModel.swift */, - ); - path = Models; - sourceTree = ""; - }; - OBJ_11 /* Models */ = { - isa = PBXGroup; - children = ( - OBJ_12 /* AccountModel.swift */, - ); - path = Models; - sourceTree = ""; - }; - OBJ_13 /* Responses */ = { - isa = PBXGroup; - children = ( - OBJ_14 /* AccountsResponse.swift */, - ); - path = Responses; - sourceTree = ""; - }; - OBJ_18 /* Delegates */ = { - isa = PBXGroup; - children = ( - OBJ_20 /* Models */, - 381C95D72003E4360002FBC4 /* Responses */, - OBJ_19 /* Delegates.swift */, - ); - path = Delegates; - sourceTree = ""; - }; - OBJ_20 /* Models */ = { - isa = PBXGroup; - children = ( - OBJ_21 /* DelegateModel.swift */, - ); - path = Models; - sourceTree = ""; - }; - OBJ_22 /* Node */ = { - isa = PBXGroup; - children = ( - 38FB2B02207EA6C600F13CFE /* Models */, - OBJ_24 /* Responses */, - OBJ_23 /* Node.swift */, - ); - path = Node; - sourceTree = ""; - }; - OBJ_24 /* Responses */ = { - isa = PBXGroup; - children = ( - 38FB2B05207EA7EF00F13CFE /* NodeConstantsResponse.swift */, - OBJ_26 /* NodeStatusResponse.swift */, - ); - path = Responses; - sourceTree = ""; - }; - OBJ_29 /* Core */ = { - isa = PBXGroup; - children = ( - OBJ_30 /* APIClient.swift */, - OBJ_35 /* APIError.swift */, - 38C66D8020052032007B2FA1 /* APIModel.swift */, - OBJ_31 /* APINethash.swift */, - OBJ_32 /* APINode.swift */, - OBJ_33 /* APIOptions.swift */, - 38FB2AFF207E9E8500F13CFE /* APIRequest.swift */, - OBJ_34 /* APIResponse.swift */, - 381C95DC2003E6D50002FBC4 /* APIService.swift */, - ); - path = Core; - sourceTree = ""; - }; - OBJ_36 /* Crypto */ = { - isa = PBXGroup; - children = ( - 3883A8BF20029A4000460A9B /* BytePacker.swift */, - OBJ_37 /* Crypto.swift */, - 385C827B201AF2B000012D71 /* MnemonicPassphrase.swift */, - 3809038A2013AB9D00E80537 /* Random.swift */, - OBJ_38 /* SHA256.swift */, - ); - path = Crypto; - sourceTree = ""; - }; - OBJ_39 /* Tests */ = { - isa = PBXGroup; - children = ( - OBJ_40 /* API */, - 385C827E201AF4FD00012D71 /* Crypto */, - OBJ_51 /* LiskTestCase.swift */, - ); - path = Tests; - sourceTree = SOURCE_ROOT; - }; - OBJ_40 /* API */ = { - isa = PBXGroup; - children = ( - OBJ_41 /* Accounts */, - 38C66D9E20053D25007B2FA1 /* Blocks */, - 381C95E22003EC300002FBC4 /* Delegates */, - 381C95F62003FA700002FBC4 /* Peers */, - 38C55B94200684EE00C0CCA4 /* Signatures */, - 3874ABA21FFC8E550008C527 /* Transactions */, - ); - path = API; - sourceTree = ""; - }; - OBJ_41 /* Accounts */ = { - isa = PBXGroup; - children = ( - OBJ_42 /* AccountsAccountTests.swift */, - OBJ_45 /* AccountsOpenTests.swift */, - OBJ_46 /* AccountsPublicKeyTests.swift */, - ); - path = Accounts; - sourceTree = ""; - }; - OBJ_5 = { - isa = PBXGroup; - children = ( - OBJ_6 /* Package.swift */, - OBJ_7 /* Sources */, - OBJ_39 /* Tests */, - OBJ_53 /* Dependencies */, - OBJ_76 /* Products */, - ); - sourceTree = ""; - }; - OBJ_53 /* Dependencies */ = { - isa = PBXGroup; - children = ( - OBJ_54 /* Ed25519 0.2.0 */, - ); - name = Dependencies; - sourceTree = ""; - }; - OBJ_54 /* Ed25519 0.2.0 */ = { - isa = PBXGroup; - children = ( - OBJ_55 /* CEd25519 */, - OBJ_69 /* Ed25519 */, - OBJ_75 /* Package.swift */, - ); - name = "Ed25519 0.2.0"; - sourceTree = SOURCE_ROOT; - }; - OBJ_55 /* CEd25519 */ = { - isa = PBXGroup; - children = ( - OBJ_56 /* add_scalar.c */, - OBJ_57 /* fe.c */, - OBJ_58 /* ge.c */, - OBJ_59 /* key_exchange.c */, - OBJ_60 /* keypair.c */, - OBJ_61 /* sc.c */, - OBJ_62 /* seed.c */, - OBJ_63 /* sha512.c */, - OBJ_64 /* sign.c */, - OBJ_65 /* verify.c */, - OBJ_66 /* include */, - ); - name = CEd25519; - path = ".build/checkouts/ed25519.git-6274347002403739230/Sources/CEd25519"; - sourceTree = SOURCE_ROOT; - }; - OBJ_66 /* include */ = { - isa = PBXGroup; - children = ( - OBJ_67 /* ed25519.h */, - OBJ_68 /* module.modulemap */, - ); - path = include; - sourceTree = ""; - }; - OBJ_69 /* Ed25519 */ = { - isa = PBXGroup; - children = ( - OBJ_70 /* Error.swift */, - OBJ_71 /* KeyPair.swift */, - OBJ_72 /* PrivateKey.swift */, - OBJ_73 /* PublicKey.swift */, - OBJ_74 /* Seed.swift */, - ); - name = Ed25519; - path = ".build/checkouts/ed25519.git-6274347002403739230/Sources/Ed25519"; - sourceTree = SOURCE_ROOT; - }; - OBJ_7 /* Sources */ = { - isa = PBXGroup; - children = ( - OBJ_28 /* Constants.swift */, - OBJ_8 /* API */, - OBJ_29 /* Core */, - OBJ_36 /* Crypto */, - ); - path = Sources; - sourceTree = SOURCE_ROOT; - }; - OBJ_76 /* Products */ = { - isa = PBXGroup; - children = ( - "Lisk::LiskTests::Product" /* LiskTests.xctest */, - "Lisk::Lisk::Product" /* Lisk.framework */, - "Ed25519::Ed25519::Product" /* Ed25519.framework */, - "Ed25519::CEd25519::Product" /* CEd25519.framework */, - ); - name = Products; - sourceTree = BUILT_PRODUCTS_DIR; - }; - OBJ_8 /* API */ = { - isa = PBXGroup; - children = ( - OBJ_9 /* Accounts */, - 38C66D7920051FA7007B2FA1 /* Blocks */, - 38FB2B09207EA99F00F13CFE /* Dapps */, - OBJ_18 /* Delegates */, - OBJ_22 /* Node */, - 381C95EB2003F4430002FBC4 /* Peers */, - 38B8E21C2006722C0067BA8E /* Signatures */, - 3874AB991FFC82260008C527 /* Transactions */, - ); - path = API; - sourceTree = ""; - }; - OBJ_9 /* Accounts */ = { - isa = PBXGroup; - children = ( - OBJ_11 /* Models */, - OBJ_13 /* Responses */, - OBJ_10 /* Accounts.swift */, - ); - path = Accounts; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - "Ed25519::CEd25519" /* CEd25519 */ = { - isa = PBXNativeTarget; - buildConfigurationList = OBJ_159 /* Build configuration list for PBXNativeTarget "CEd25519" */; - buildPhases = ( - OBJ_162 /* Sources */, - OBJ_173 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = CEd25519; - productName = CEd25519; - productReference = "Ed25519::CEd25519::Product" /* CEd25519.framework */; - productType = "com.apple.product-type.framework"; - }; - "Ed25519::Ed25519" /* Ed25519 */ = { - isa = PBXNativeTarget; - buildConfigurationList = OBJ_147 /* Build configuration list for PBXNativeTarget "Ed25519" */; - buildPhases = ( - OBJ_150 /* Sources */, - OBJ_156 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - OBJ_158 /* PBXTargetDependency */, - ); - name = Ed25519; - productName = Ed25519; - productReference = "Ed25519::Ed25519::Product" /* Ed25519.framework */; - productType = "com.apple.product-type.framework"; - }; - "Ed25519::SwiftPMPackageDescription" /* Ed25519PackageDescription */ = { - isa = PBXNativeTarget; - buildConfigurationList = OBJ_88 /* Build configuration list for PBXNativeTarget "Ed25519PackageDescription" */; - buildPhases = ( - OBJ_91 /* Sources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Ed25519PackageDescription; - productName = Ed25519PackageDescription; - productType = "com.apple.product-type.framework"; - }; - "Lisk::Lisk" /* Lisk */ = { - isa = PBXNativeTarget; - buildConfigurationList = OBJ_117 /* Build configuration list for PBXNativeTarget "Lisk" */; - buildPhases = ( - OBJ_120 /* Sources */, - OBJ_142 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - OBJ_145 /* PBXTargetDependency */, - OBJ_146 /* PBXTargetDependency */, - ); - name = Lisk; - productName = Lisk; - productReference = "Lisk::Lisk::Product" /* Lisk.framework */; - productType = "com.apple.product-type.framework"; - }; - "Lisk::LiskTests" /* LiskTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = OBJ_94 /* Build configuration list for PBXNativeTarget "LiskTests" */; - buildPhases = ( - OBJ_97 /* Sources */, - OBJ_107 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - OBJ_111 /* PBXTargetDependency */, - OBJ_113 /* PBXTargetDependency */, - OBJ_115 /* PBXTargetDependency */, - ); - name = LiskTests; - productName = LiskTests; - productReference = "Lisk::LiskTests::Product" /* LiskTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - "Lisk::SwiftPMPackageDescription" /* LiskPackageDescription */ = { - isa = PBXNativeTarget; - buildConfigurationList = OBJ_82 /* Build configuration list for PBXNativeTarget "LiskPackageDescription" */; - buildPhases = ( - OBJ_85 /* Sources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = LiskPackageDescription; - productName = LiskPackageDescription; - productType = "com.apple.product-type.framework"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - OBJ_1 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 9999; - }; - buildConfigurationList = OBJ_2 /* Build configuration list for PBXProject "Lisk" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = OBJ_5; - productRefGroup = OBJ_76 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - "Lisk::SwiftPMPackageDescription" /* LiskPackageDescription */, - "Ed25519::SwiftPMPackageDescription" /* Ed25519PackageDescription */, - "Lisk::LiskTests" /* LiskTests */, - "Lisk::Lisk" /* Lisk */, - "Ed25519::Ed25519" /* Ed25519 */, - "Ed25519::CEd25519" /* CEd25519 */, - "Lisk::LiskPackageTests::ProductTarget" /* LiskPackageTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - OBJ_120 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 0; - files = ( - 3874ABA11FFC831B0008C527 /* TransactionModel.swift in Sources */, - 38C66D7F20051FF8007B2FA1 /* BlockModel.swift in Sources */, - OBJ_121 /* Accounts.swift in Sources */, - 38FB2B08207EA81900F13CFE /* NodeConstantsModel.swift in Sources */, - 38C66D7B20051FB8007B2FA1 /* Blocks.swift in Sources */, - 381C95ED2003F4580002FBC4 /* Peers.swift in Sources */, - OBJ_122 /* AccountModel.swift in Sources */, - OBJ_123 /* AccountsResponse.swift in Sources */, - OBJ_127 /* Delegates.swift in Sources */, - OBJ_128 /* DelegateModel.swift in Sources */, - OBJ_129 /* Node.swift in Sources */, - 38FB2B14207EAF7200F13CFE /* SignatureModel.swift in Sources */, - 385C827C201AF2B000012D71 /* MnemonicPassphrase.swift in Sources */, - 381C95F02003F4A10002FBC4 /* PeerModel.swift in Sources */, - 3883A8C120029A9700460A9B /* BytePacker.swift in Sources */, - 3809038C2013AC1B00E80537 /* Random.swift in Sources */, - OBJ_131 /* NodeStatusResponse.swift in Sources */, - 381C95F32003F5CF0002FBC4 /* PeersResponse.swift in Sources */, - OBJ_133 /* Constants.swift in Sources */, - 381C95DD2003E6D50002FBC4 /* APIService.swift in Sources */, - OBJ_134 /* APIClient.swift in Sources */, - 38FB2B0F207EA9F400F13CFE /* DappsResponse.swift in Sources */, - OBJ_135 /* APINethash.swift in Sources */, - 38FB2B01207E9ED700F13CFE /* APIRequest.swift in Sources */, - 3883A8CA2003BED900460A9B /* TransactionBroadcastResponse.swift in Sources */, - OBJ_136 /* APINode.swift in Sources */, - 38FB2B06207EA7EF00F13CFE /* NodeConstantsResponse.swift in Sources */, - 38B8E222200672780067BA8E /* SignatureBroadcastResponse.swift in Sources */, - 38C66D8120052032007B2FA1 /* APIModel.swift in Sources */, - 38FB2B04207EA6D400F13CFE /* NodeStatusModel.swift in Sources */, - 3874AB9B1FFC82490008C527 /* Transactions.swift in Sources */, - 3883A8C320029BE500460A9B /* LocalTransaction.swift in Sources */, - 38FB2B0B207EA9AC00F13CFE /* Dapps.swift in Sources */, - 38B8E2232006728A0067BA8E /* Signatures.swift in Sources */, - OBJ_137 /* APIOptions.swift in Sources */, - 381C95D92003E44E0002FBC4 /* DelegatesResponse.swift in Sources */, - 38FB2B11207EA9FC00F13CFE /* DappModel.swift in Sources */, - OBJ_138 /* APIResponse.swift in Sources */, - OBJ_139 /* APIError.swift in Sources */, - 38C66D83200523F2007B2FA1 /* BlocksResponse.swift in Sources */, - OBJ_140 /* Crypto.swift in Sources */, - OBJ_141 /* SHA256.swift in Sources */, - 3874AB9E1FFC82C50008C527 /* TransactionsResponse.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - OBJ_150 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 0; - files = ( - OBJ_151 /* Error.swift in Sources */, - OBJ_152 /* KeyPair.swift in Sources */, - OBJ_153 /* PrivateKey.swift in Sources */, - OBJ_154 /* PublicKey.swift in Sources */, - OBJ_155 /* Seed.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - OBJ_162 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 0; - files = ( - OBJ_163 /* add_scalar.c in Sources */, - OBJ_164 /* fe.c in Sources */, - OBJ_165 /* ge.c in Sources */, - OBJ_166 /* key_exchange.c in Sources */, - OBJ_167 /* keypair.c in Sources */, - OBJ_168 /* sc.c in Sources */, - OBJ_169 /* seed.c in Sources */, - OBJ_170 /* sha512.c in Sources */, - OBJ_171 /* sign.c in Sources */, - OBJ_172 /* verify.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - OBJ_85 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 0; - files = ( - OBJ_86 /* Package.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - OBJ_91 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 0; - files = ( - OBJ_92 /* Package.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - OBJ_97 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 0; - files = ( - OBJ_98 /* AccountsAccountTests.swift in Sources */, - 3874ABA41FFC8E6C0008C527 /* TransactionsGetTests.swift in Sources */, - 38C66DA420053F55007B2FA1 /* BlocksListTests.swift in Sources */, - 385C8280201AF52000012D71 /* MnemonicPassphraseTests.swift in Sources */, - 381C95FA2003FACE0002FBC4 /* PeersGetTests.swift in Sources */, - 381C95FE2003FC710002FBC4 /* PeersListTests.swift in Sources */, - 3883A8C62002D8AC00460A9B /* TransactionsSigningTest.swift in Sources */, - 381C95EA2003EE440002FBC4 /* DelegatesListTests.swift in Sources */, - OBJ_101 /* AccountsOpenTests.swift in Sources */, - OBJ_102 /* AccountsPublicKeyTests.swift in Sources */, - 3883A8C82002DC4E00460A9B /* TransactionsTransferTests.swift in Sources */, - 38C66DA220053DEE007B2FA1 /* BlocksGetTests.swift in Sources */, - 3874ABA61FFC8EEE0008C527 /* TransactionsListTest.swift in Sources */, - OBJ_106 /* LiskTestCase.swift in Sources */, - 38C55B982006854000C0CCA4 /* SignaturesRegisterTests.swift in Sources */, - 381C95E62003ECE70002FBC4 /* DelegatesGetTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - OBJ_111 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = "Lisk::Lisk" /* Lisk */; - targetProxy = 38434E5B1FFADA1400AA3540 /* PBXContainerItemProxy */; - }; - OBJ_113 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = "Ed25519::Ed25519" /* Ed25519 */; - targetProxy = 38434E5C1FFADA1400AA3540 /* PBXContainerItemProxy */; - }; - OBJ_115 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = "Ed25519::CEd25519" /* CEd25519 */; - targetProxy = 38434E5D1FFADA1400AA3540 /* PBXContainerItemProxy */; - }; - OBJ_145 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = "Ed25519::Ed25519" /* Ed25519 */; - targetProxy = 38434E581FFADA1400AA3540 /* PBXContainerItemProxy */; - }; - OBJ_146 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = "Ed25519::CEd25519" /* CEd25519 */; - targetProxy = 38434E5A1FFADA1400AA3540 /* PBXContainerItemProxy */; - }; - OBJ_158 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = "Ed25519::CEd25519" /* CEd25519 */; - targetProxy = 38434E591FFADA1400AA3540 /* PBXContainerItemProxy */; - }; - OBJ_178 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = "Lisk::LiskTests" /* LiskTests */; - targetProxy = 38434E5E1FFADA1500AA3540 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - OBJ_118 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PLATFORM_DIR)/Developer/Library/Frameworks", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/.build/checkouts/ed25519.git-6274347002403739230/Sources/CEd25519/include", - "$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519", - ); - INFOPLIST_FILE = Lisk.xcodeproj/Lisk_Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(TOOLCHAIN_DIR)/usr/lib/swift/macosx"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -fmodule-map-file=$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519/module.modulemap"; - PRODUCT_BUNDLE_IDENTIFIER = Lisk; - PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_VERSION = 4.0; - TARGET_NAME = Lisk; - }; - name = Debug; - }; - OBJ_119 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PLATFORM_DIR)/Developer/Library/Frameworks", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/.build/checkouts/ed25519.git-6274347002403739230/Sources/CEd25519/include", - "$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519", - ); - INFOPLIST_FILE = Lisk.xcodeproj/Lisk_Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(TOOLCHAIN_DIR)/usr/lib/swift/macosx"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -fmodule-map-file=$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519/module.modulemap"; - PRODUCT_BUNDLE_IDENTIFIER = Lisk; - PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_VERSION = 4.0; - TARGET_NAME = Lisk; - }; - name = Release; - }; - OBJ_148 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PLATFORM_DIR)/Developer/Library/Frameworks", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/.build/checkouts/ed25519.git-6274347002403739230/Sources/CEd25519/include", - "$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519", - ); - INFOPLIST_FILE = Lisk.xcodeproj/Ed25519_Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(TOOLCHAIN_DIR)/usr/lib/swift/macosx"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -fmodule-map-file=$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519/module.modulemap"; - PRODUCT_BUNDLE_IDENTIFIER = Ed25519; - PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - TARGET_NAME = Ed25519; - }; - name = Debug; - }; - OBJ_149 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PLATFORM_DIR)/Developer/Library/Frameworks", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/.build/checkouts/ed25519.git-6274347002403739230/Sources/CEd25519/include", - "$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519", - ); - INFOPLIST_FILE = Lisk.xcodeproj/Ed25519_Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(TOOLCHAIN_DIR)/usr/lib/swift/macosx"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -fmodule-map-file=$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519/module.modulemap"; - PRODUCT_BUNDLE_IDENTIFIER = Ed25519; - PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - TARGET_NAME = Ed25519; - }; - name = Release; - }; - OBJ_160 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - DEFINES_MODULE = NO; - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PLATFORM_DIR)/Developer/Library/Frameworks", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/.build/checkouts/ed25519.git-6274347002403739230/Sources/CEd25519/include", - ); - INFOPLIST_FILE = Lisk.xcodeproj/CEd25519_Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(TOOLCHAIN_DIR)/usr/lib/swift/macosx"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited)"; - PRODUCT_BUNDLE_IDENTIFIER = CEd25519; - PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - TARGET_NAME = CEd25519; - }; - name = Debug; - }; - OBJ_161 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - DEFINES_MODULE = NO; - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PLATFORM_DIR)/Developer/Library/Frameworks", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/.build/checkouts/ed25519.git-6274347002403739230/Sources/CEd25519/include", - ); - INFOPLIST_FILE = Lisk.xcodeproj/CEd25519_Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(TOOLCHAIN_DIR)/usr/lib/swift/macosx"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited)"; - PRODUCT_BUNDLE_IDENTIFIER = CEd25519; - PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - TARGET_NAME = CEd25519; - }; - name = Release; - }; - OBJ_176 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - }; - name = Debug; - }; - OBJ_177 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - }; - name = Release; - }; - OBJ_3 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_ARC = YES; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_NS_ASSERTIONS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - MACOSX_DEPLOYMENT_TARGET = 10.10; - ONLY_ACTIVE_ARCH = YES; - OTHER_SWIFT_FLAGS = "-DXcode"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = macosx; - SUPPORTED_PLATFORMS = "macosx iphoneos iphonesimulator appletvos appletvsimulator watchos watchsimulator"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = SWIFT_PACKAGE; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - USE_HEADERMAP = NO; - }; - name = Debug; - }; - OBJ_4 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_ARC = YES; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_OPTIMIZATION_LEVEL = s; - MACOSX_DEPLOYMENT_TARGET = 10.10; - OTHER_SWIFT_FLAGS = "-DXcode"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = macosx; - SUPPORTED_PLATFORMS = "macosx iphoneos iphonesimulator appletvos appletvsimulator watchos watchsimulator"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = SWIFT_PACKAGE; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - USE_HEADERMAP = NO; - }; - name = Release; - }; - OBJ_83 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - LD = /usr/bin/true; - OTHER_SWIFT_FLAGS = "-swift-version 4 -I /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/pm/4 -target x86_64-apple-macosx10.10 -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk"; - SWIFT_VERSION = 4.0; - }; - name = Debug; - }; - OBJ_84 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - LD = /usr/bin/true; - OTHER_SWIFT_FLAGS = "-swift-version 4 -I /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/pm/4 -target x86_64-apple-macosx10.10 -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk"; - SWIFT_VERSION = 4.0; - }; - name = Release; - }; - OBJ_89 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - LD = /usr/bin/true; - OTHER_SWIFT_FLAGS = "-swift-version 3 -I /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/pm/3 -target x86_64-apple-macosx10.10 -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk"; - SWIFT_VERSION = 3.0; - }; - name = Debug; - }; - OBJ_90 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - LD = /usr/bin/true; - OTHER_SWIFT_FLAGS = "-swift-version 3 -I /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/pm/3 -target x86_64-apple-macosx10.10 -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk"; - SWIFT_VERSION = 3.0; - }; - name = Release; - }; - OBJ_95 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - EMBEDDED_CONTENT_CONTAINS_SWIFT = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PLATFORM_DIR)/Developer/Library/Frameworks", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/.build/checkouts/ed25519.git-6274347002403739230/Sources/CEd25519/include", - "$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519", - ); - INFOPLIST_FILE = Lisk.xcodeproj/LiskTests_Info.plist; - LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks @loader_path/Frameworks"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -fmodule-map-file=$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519/module.modulemap"; - SWIFT_VERSION = 4.0; - TARGET_NAME = LiskTests; - }; - name = Debug; - }; - OBJ_96 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - EMBEDDED_CONTENT_CONTAINS_SWIFT = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PLATFORM_DIR)/Developer/Library/Frameworks", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/.build/checkouts/ed25519.git-6274347002403739230/Sources/CEd25519/include", - "$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519", - ); - INFOPLIST_FILE = Lisk.xcodeproj/LiskTests_Info.plist; - LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks @loader_path/Frameworks"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -fmodule-map-file=$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519/module.modulemap"; - SWIFT_VERSION = 4.0; - TARGET_NAME = LiskTests; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - OBJ_117 /* Build configuration list for PBXNativeTarget "Lisk" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - OBJ_118 /* Debug */, - OBJ_119 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - OBJ_147 /* Build configuration list for PBXNativeTarget "Ed25519" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - OBJ_148 /* Debug */, - OBJ_149 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - OBJ_159 /* Build configuration list for PBXNativeTarget "CEd25519" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - OBJ_160 /* Debug */, - OBJ_161 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - OBJ_175 /* Build configuration list for PBXAggregateTarget "LiskPackageTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - OBJ_176 /* Debug */, - OBJ_177 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - OBJ_2 /* Build configuration list for PBXProject "Lisk" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - OBJ_3 /* Debug */, - OBJ_4 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - OBJ_82 /* Build configuration list for PBXNativeTarget "LiskPackageDescription" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - OBJ_83 /* Debug */, - OBJ_84 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - OBJ_88 /* Build configuration list for PBXNativeTarget "Ed25519PackageDescription" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - OBJ_89 /* Debug */, - OBJ_90 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - OBJ_94 /* Build configuration list for PBXNativeTarget "LiskTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - OBJ_95 /* Debug */, - OBJ_96 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; -/* End XCConfigurationList section */ - }; - rootObject = OBJ_1 /* Project object */; + archiveVersion = "1"; + objectVersion = "46"; + objects = { + "Ed25519::CEd25519" = { + isa = "PBXNativeTarget"; + buildConfigurationList = "OBJ_133"; + buildPhases = ( + "OBJ_136", + "OBJ_147", + ); + dependencies = ( + ); + name = "CEd25519"; + productName = "CEd25519"; + productReference = "Ed25519::CEd25519::Product"; + productType = "com.apple.product-type.framework"; + }; + "Ed25519::CEd25519::Product" = { + isa = "PBXFileReference"; + path = "CEd25519.framework"; + sourceTree = "BUILT_PRODUCTS_DIR"; + }; + "Ed25519::Ed25519" = { + isa = "PBXNativeTarget"; + buildConfigurationList = "OBJ_149"; + buildPhases = ( + "OBJ_152", + "OBJ_158", + ); + dependencies = ( + "OBJ_160", + ); + name = "Ed25519"; + productName = "Ed25519"; + productReference = "Ed25519::Ed25519::Product"; + productType = "com.apple.product-type.framework"; + }; + "Ed25519::Ed25519::Product" = { + isa = "PBXFileReference"; + path = "Ed25519.framework"; + sourceTree = "BUILT_PRODUCTS_DIR"; + }; + "Ed25519::SwiftPMPackageDescription" = { + isa = "PBXNativeTarget"; + buildConfigurationList = "OBJ_162"; + buildPhases = ( + "OBJ_165", + ); + dependencies = ( + ); + name = "Ed25519PackageDescription"; + productName = "Ed25519PackageDescription"; + productType = "com.apple.product-type.framework"; + }; + "Lisk::Lisk" = { + isa = "PBXNativeTarget"; + buildConfigurationList = "OBJ_168"; + buildPhases = ( + "OBJ_171", + "OBJ_215", + ); + dependencies = ( + "OBJ_218", + "OBJ_219", + ); + name = "Lisk"; + productName = "Lisk"; + productReference = "Lisk::Lisk::Product"; + productType = "com.apple.product-type.framework"; + }; + "Lisk::Lisk::Product" = { + isa = "PBXFileReference"; + path = "Lisk.framework"; + sourceTree = "BUILT_PRODUCTS_DIR"; + }; + "Lisk::LiskPackageTests::ProductTarget" = { + isa = "PBXAggregateTarget"; + buildConfigurationList = "OBJ_227"; + buildPhases = ( + ); + dependencies = ( + "OBJ_230", + ); + name = "LiskPackageTests"; + productName = "LiskPackageTests"; + }; + "Lisk::LiskTests" = { + isa = "PBXNativeTarget"; + buildConfigurationList = "OBJ_232"; + buildPhases = ( + "OBJ_235", + "OBJ_252", + ); + dependencies = ( + "OBJ_256", + "OBJ_257", + "OBJ_258", + ); + name = "LiskTests"; + productName = "LiskTests"; + productReference = "Lisk::LiskTests::Product"; + productType = "com.apple.product-type.bundle.unit-test"; + }; + "Lisk::LiskTests::Product" = { + isa = "PBXFileReference"; + path = "LiskTests.xctest"; + sourceTree = "BUILT_PRODUCTS_DIR"; + }; + "Lisk::SwiftPMPackageDescription" = { + isa = "PBXNativeTarget"; + buildConfigurationList = "OBJ_221"; + buildPhases = ( + "OBJ_224", + ); + dependencies = ( + ); + name = "LiskPackageDescription"; + productName = "LiskPackageDescription"; + productType = "com.apple.product-type.framework"; + }; + "OBJ_1" = { + isa = "PBXProject"; + attributes = { + LastUpgradeCheck = "9999"; + }; + buildConfigurationList = "OBJ_2"; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = "English"; + hasScannedForEncodings = "0"; + knownRegions = ( + "en", + ); + mainGroup = "OBJ_5"; + productRefGroup = "OBJ_127"; + projectDirPath = "."; + targets = ( + "Ed25519::CEd25519", + "Ed25519::Ed25519", + "Ed25519::SwiftPMPackageDescription", + "Lisk::Lisk", + "Lisk::SwiftPMPackageDescription", + "Lisk::LiskPackageTests::ProductTarget", + "Lisk::LiskTests", + ); + }; + "OBJ_10" = { + isa = "PBXFileReference"; + path = "Accounts.swift"; + sourceTree = ""; + }; + "OBJ_100" = { + isa = "PBXGroup"; + children = ( + "OBJ_101", + ); + name = "Crypto"; + path = "Crypto"; + sourceTree = ""; + }; + "OBJ_101" = { + isa = "PBXFileReference"; + path = "MnemonicPassphraseTests.swift"; + sourceTree = ""; + }; + "OBJ_102" = { + isa = "PBXFileReference"; + path = "LiskTestCase.swift"; + sourceTree = ""; + }; + "OBJ_103" = { + isa = "PBXFileReference"; + path = "docs"; + sourceTree = "SOURCE_ROOT"; + }; + "OBJ_104" = { + isa = "PBXGroup"; + children = ( + "OBJ_105", + ); + name = "Dependencies"; + path = ""; + sourceTree = ""; + }; + "OBJ_105" = { + isa = "PBXGroup"; + children = ( + "OBJ_106", + "OBJ_120", + "OBJ_126", + ); + name = "Ed25519 0.2.0"; + path = ""; + sourceTree = "SOURCE_ROOT"; + }; + "OBJ_106" = { + isa = "PBXGroup"; + children = ( + "OBJ_107", + "OBJ_108", + "OBJ_109", + "OBJ_110", + "OBJ_111", + "OBJ_112", + "OBJ_113", + "OBJ_114", + "OBJ_115", + "OBJ_116", + "OBJ_117", + ); + name = "CEd25519"; + path = ".build/checkouts/ed25519.git-6274347002403739230/Sources/CEd25519"; + sourceTree = "SOURCE_ROOT"; + }; + "OBJ_107" = { + isa = "PBXFileReference"; + path = "add_scalar.c"; + sourceTree = ""; + }; + "OBJ_108" = { + isa = "PBXFileReference"; + path = "fe.c"; + sourceTree = ""; + }; + "OBJ_109" = { + isa = "PBXFileReference"; + path = "ge.c"; + sourceTree = ""; + }; + "OBJ_11" = { + isa = "PBXGroup"; + children = ( + "OBJ_12", + ); + name = "Models"; + path = "Models"; + sourceTree = ""; + }; + "OBJ_110" = { + isa = "PBXFileReference"; + path = "key_exchange.c"; + sourceTree = ""; + }; + "OBJ_111" = { + isa = "PBXFileReference"; + path = "keypair.c"; + sourceTree = ""; + }; + "OBJ_112" = { + isa = "PBXFileReference"; + path = "sc.c"; + sourceTree = ""; + }; + "OBJ_113" = { + isa = "PBXFileReference"; + path = "seed.c"; + sourceTree = ""; + }; + "OBJ_114" = { + isa = "PBXFileReference"; + path = "sha512.c"; + sourceTree = ""; + }; + "OBJ_115" = { + isa = "PBXFileReference"; + path = "sign.c"; + sourceTree = ""; + }; + "OBJ_116" = { + isa = "PBXFileReference"; + path = "verify.c"; + sourceTree = ""; + }; + "OBJ_117" = { + isa = "PBXGroup"; + children = ( + "OBJ_118", + "OBJ_119", + ); + name = "include"; + path = "include"; + sourceTree = ""; + }; + "OBJ_118" = { + isa = "PBXFileReference"; + path = "ed25519.h"; + sourceTree = ""; + }; + "OBJ_119" = { + isa = "PBXFileReference"; + name = "module.modulemap"; + path = "/Users/andrewbarba/Code/Lisk/lisk-swift/Lisk.xcodeproj/GeneratedModuleMap/CEd25519/module.modulemap"; + sourceTree = ""; + }; + "OBJ_12" = { + isa = "PBXFileReference"; + path = "AccountModel.swift"; + sourceTree = ""; + }; + "OBJ_120" = { + isa = "PBXGroup"; + children = ( + "OBJ_121", + "OBJ_122", + "OBJ_123", + "OBJ_124", + "OBJ_125", + ); + name = "Ed25519"; + path = ".build/checkouts/ed25519.git-6274347002403739230/Sources/Ed25519"; + sourceTree = "SOURCE_ROOT"; + }; + "OBJ_121" = { + isa = "PBXFileReference"; + path = "Error.swift"; + sourceTree = ""; + }; + "OBJ_122" = { + isa = "PBXFileReference"; + path = "KeyPair.swift"; + sourceTree = ""; + }; + "OBJ_123" = { + isa = "PBXFileReference"; + path = "PrivateKey.swift"; + sourceTree = ""; + }; + "OBJ_124" = { + isa = "PBXFileReference"; + path = "PublicKey.swift"; + sourceTree = ""; + }; + "OBJ_125" = { + isa = "PBXFileReference"; + path = "Seed.swift"; + sourceTree = ""; + }; + "OBJ_126" = { + isa = "PBXFileReference"; + explicitFileType = "sourcecode.swift"; + name = "Package.swift"; + path = "/Users/andrewbarba/Code/Lisk/lisk-swift/.build/checkouts/ed25519.git-6274347002403739230/Package.swift"; + sourceTree = ""; + }; + "OBJ_127" = { + isa = "PBXGroup"; + children = ( + "Ed25519::CEd25519::Product", + "Ed25519::Ed25519::Product", + "Lisk::Lisk::Product", + "Lisk::LiskTests::Product", + ); + name = "Products"; + path = ""; + sourceTree = "BUILT_PRODUCTS_DIR"; + }; + "OBJ_13" = { + isa = "PBXGroup"; + children = ( + "OBJ_14", + ); + name = "Responses"; + path = "Responses"; + sourceTree = ""; + }; + "OBJ_133" = { + isa = "XCConfigurationList"; + buildConfigurations = ( + "OBJ_134", + "OBJ_135", + ); + defaultConfigurationIsVisible = "0"; + defaultConfigurationName = "Release"; + }; + "OBJ_134" = { + isa = "XCBuildConfiguration"; + buildSettings = { + DEFINES_MODULE = "NO"; + ENABLE_TESTABILITY = "YES"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PLATFORM_DIR)/Developer/Library/Frameworks", + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/.build/checkouts/ed25519.git-6274347002403739230/Sources/CEd25519/include", + ); + INFOPLIST_FILE = "Lisk.xcodeproj/CEd25519_Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "$(TOOLCHAIN_DIR)/usr/lib/swift/macosx", + ); + OTHER_CFLAGS = ( + "$(inherited)", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + ); + OTHER_SWIFT_FLAGS = ( + "$(inherited)", + ); + PRODUCT_BUNDLE_IDENTIFIER = "CEd25519"; + PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = "YES"; + TARGET_NAME = "CEd25519"; + }; + name = "Debug"; + }; + "OBJ_135" = { + isa = "XCBuildConfiguration"; + buildSettings = { + DEFINES_MODULE = "NO"; + ENABLE_TESTABILITY = "YES"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PLATFORM_DIR)/Developer/Library/Frameworks", + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/.build/checkouts/ed25519.git-6274347002403739230/Sources/CEd25519/include", + ); + INFOPLIST_FILE = "Lisk.xcodeproj/CEd25519_Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "$(TOOLCHAIN_DIR)/usr/lib/swift/macosx", + ); + OTHER_CFLAGS = ( + "$(inherited)", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + ); + OTHER_SWIFT_FLAGS = ( + "$(inherited)", + ); + PRODUCT_BUNDLE_IDENTIFIER = "CEd25519"; + PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = "YES"; + TARGET_NAME = "CEd25519"; + }; + name = "Release"; + }; + "OBJ_136" = { + isa = "PBXSourcesBuildPhase"; + files = ( + "OBJ_137", + "OBJ_138", + "OBJ_139", + "OBJ_140", + "OBJ_141", + "OBJ_142", + "OBJ_143", + "OBJ_144", + "OBJ_145", + "OBJ_146", + ); + }; + "OBJ_137" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_107"; + }; + "OBJ_138" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_108"; + }; + "OBJ_139" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_109"; + }; + "OBJ_14" = { + isa = "PBXFileReference"; + path = "AccountsResponse.swift"; + sourceTree = ""; + }; + "OBJ_140" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_110"; + }; + "OBJ_141" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_111"; + }; + "OBJ_142" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_112"; + }; + "OBJ_143" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_113"; + }; + "OBJ_144" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_114"; + }; + "OBJ_145" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_115"; + }; + "OBJ_146" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_116"; + }; + "OBJ_147" = { + isa = "PBXFrameworksBuildPhase"; + files = ( + ); + }; + "OBJ_149" = { + isa = "XCConfigurationList"; + buildConfigurations = ( + "OBJ_150", + "OBJ_151", + ); + defaultConfigurationIsVisible = "0"; + defaultConfigurationName = "Release"; + }; + "OBJ_15" = { + isa = "PBXGroup"; + children = ( + "OBJ_16", + "OBJ_17", + "OBJ_19", + ); + name = "Blocks"; + path = "Blocks"; + sourceTree = ""; + }; + "OBJ_150" = { + isa = "XCBuildConfiguration"; + buildSettings = { + ENABLE_TESTABILITY = "YES"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PLATFORM_DIR)/Developer/Library/Frameworks", + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/.build/checkouts/ed25519.git-6274347002403739230/Sources/CEd25519/include", + "$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519", + ); + INFOPLIST_FILE = "Lisk.xcodeproj/Ed25519_Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "$(TOOLCHAIN_DIR)/usr/lib/swift/macosx", + ); + OTHER_CFLAGS = ( + "$(inherited)", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + ); + OTHER_SWIFT_FLAGS = ( + "$(inherited)", + "-Xcc", + "-fmodule-map-file=$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519/module.modulemap", + ); + PRODUCT_BUNDLE_IDENTIFIER = "Ed25519"; + PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = "YES"; + SWIFT_VERSION = "3.0"; + TARGET_NAME = "Ed25519"; + }; + name = "Debug"; + }; + "OBJ_151" = { + isa = "XCBuildConfiguration"; + buildSettings = { + ENABLE_TESTABILITY = "YES"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PLATFORM_DIR)/Developer/Library/Frameworks", + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/.build/checkouts/ed25519.git-6274347002403739230/Sources/CEd25519/include", + "$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519", + ); + INFOPLIST_FILE = "Lisk.xcodeproj/Ed25519_Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "$(TOOLCHAIN_DIR)/usr/lib/swift/macosx", + ); + OTHER_CFLAGS = ( + "$(inherited)", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + ); + OTHER_SWIFT_FLAGS = ( + "$(inherited)", + "-Xcc", + "-fmodule-map-file=$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519/module.modulemap", + ); + PRODUCT_BUNDLE_IDENTIFIER = "Ed25519"; + PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = "YES"; + SWIFT_VERSION = "3.0"; + TARGET_NAME = "Ed25519"; + }; + name = "Release"; + }; + "OBJ_152" = { + isa = "PBXSourcesBuildPhase"; + files = ( + "OBJ_153", + "OBJ_154", + "OBJ_155", + "OBJ_156", + "OBJ_157", + ); + }; + "OBJ_153" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_121"; + }; + "OBJ_154" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_122"; + }; + "OBJ_155" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_123"; + }; + "OBJ_156" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_124"; + }; + "OBJ_157" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_125"; + }; + "OBJ_158" = { + isa = "PBXFrameworksBuildPhase"; + files = ( + "OBJ_159", + ); + }; + "OBJ_159" = { + isa = "PBXBuildFile"; + fileRef = "Ed25519::CEd25519::Product"; + }; + "OBJ_16" = { + isa = "PBXFileReference"; + path = "Blocks.swift"; + sourceTree = ""; + }; + "OBJ_160" = { + isa = "PBXTargetDependency"; + target = "Ed25519::CEd25519"; + }; + "OBJ_162" = { + isa = "XCConfigurationList"; + buildConfigurations = ( + "OBJ_163", + "OBJ_164", + ); + defaultConfigurationIsVisible = "0"; + defaultConfigurationName = "Release"; + }; + "OBJ_163" = { + isa = "XCBuildConfiguration"; + buildSettings = { + LD = "/usr/bin/true"; + OTHER_SWIFT_FLAGS = ( + "-swift-version", + "3", + "-I", + "$(TOOLCHAIN_DIR)/usr/lib/swift/pm/3", + "-target", + "x86_64-apple-macosx10.10", + "-sdk", + "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk", + ); + SWIFT_VERSION = "3.0"; + }; + name = "Debug"; + }; + "OBJ_164" = { + isa = "XCBuildConfiguration"; + buildSettings = { + LD = "/usr/bin/true"; + OTHER_SWIFT_FLAGS = ( + "-swift-version", + "3", + "-I", + "$(TOOLCHAIN_DIR)/usr/lib/swift/pm/3", + "-target", + "x86_64-apple-macosx10.10", + "-sdk", + "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk", + ); + SWIFT_VERSION = "3.0"; + }; + name = "Release"; + }; + "OBJ_165" = { + isa = "PBXSourcesBuildPhase"; + files = ( + "OBJ_166", + ); + }; + "OBJ_166" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_126"; + }; + "OBJ_168" = { + isa = "XCConfigurationList"; + buildConfigurations = ( + "OBJ_169", + "OBJ_170", + ); + defaultConfigurationIsVisible = "0"; + defaultConfigurationName = "Release"; + }; + "OBJ_169" = { + isa = "XCBuildConfiguration"; + buildSettings = { + ENABLE_TESTABILITY = "YES"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PLATFORM_DIR)/Developer/Library/Frameworks", + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/.build/checkouts/ed25519.git-6274347002403739230/Sources/CEd25519/include", + "$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519", + ); + INFOPLIST_FILE = "Lisk.xcodeproj/Lisk_Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "$(TOOLCHAIN_DIR)/usr/lib/swift/macosx", + ); + OTHER_CFLAGS = ( + "$(inherited)", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + ); + OTHER_SWIFT_FLAGS = ( + "$(inherited)", + "-Xcc", + "-fmodule-map-file=$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519/module.modulemap", + ); + PRODUCT_BUNDLE_IDENTIFIER = "Lisk"; + PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = "YES"; + SWIFT_VERSION = "4.0"; + TARGET_NAME = "Lisk"; + }; + name = "Debug"; + }; + "OBJ_17" = { + isa = "PBXGroup"; + children = ( + "OBJ_18", + ); + name = "Models"; + path = "Models"; + sourceTree = ""; + }; + "OBJ_170" = { + isa = "XCBuildConfiguration"; + buildSettings = { + ENABLE_TESTABILITY = "YES"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PLATFORM_DIR)/Developer/Library/Frameworks", + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/.build/checkouts/ed25519.git-6274347002403739230/Sources/CEd25519/include", + "$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519", + ); + INFOPLIST_FILE = "Lisk.xcodeproj/Lisk_Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "$(TOOLCHAIN_DIR)/usr/lib/swift/macosx", + ); + OTHER_CFLAGS = ( + "$(inherited)", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + ); + OTHER_SWIFT_FLAGS = ( + "$(inherited)", + "-Xcc", + "-fmodule-map-file=$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519/module.modulemap", + ); + PRODUCT_BUNDLE_IDENTIFIER = "Lisk"; + PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = "YES"; + SWIFT_VERSION = "4.0"; + TARGET_NAME = "Lisk"; + }; + name = "Release"; + }; + "OBJ_171" = { + isa = "PBXSourcesBuildPhase"; + files = ( + "OBJ_172", + "OBJ_173", + "OBJ_174", + "OBJ_175", + "OBJ_176", + "OBJ_177", + "OBJ_178", + "OBJ_179", + "OBJ_180", + "OBJ_181", + "OBJ_182", + "OBJ_183", + "OBJ_184", + "OBJ_185", + "OBJ_186", + "OBJ_187", + "OBJ_188", + "OBJ_189", + "OBJ_190", + "OBJ_191", + "OBJ_192", + "OBJ_193", + "OBJ_194", + "OBJ_195", + "OBJ_196", + "OBJ_197", + "OBJ_198", + "OBJ_199", + "OBJ_200", + "OBJ_201", + "OBJ_202", + "OBJ_203", + "OBJ_204", + "OBJ_205", + "OBJ_206", + "OBJ_207", + "OBJ_208", + "OBJ_209", + "OBJ_210", + "OBJ_211", + "OBJ_212", + "OBJ_213", + "OBJ_214", + ); + }; + "OBJ_172" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_10"; + }; + "OBJ_173" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_12"; + }; + "OBJ_174" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_14"; + }; + "OBJ_175" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_16"; + }; + "OBJ_176" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_18"; + }; + "OBJ_177" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_20"; + }; + "OBJ_178" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_22"; + }; + "OBJ_179" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_24"; + }; + "OBJ_18" = { + isa = "PBXFileReference"; + path = "BlockModel.swift"; + sourceTree = ""; + }; + "OBJ_180" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_26"; + }; + "OBJ_181" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_28"; + }; + "OBJ_182" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_30"; + }; + "OBJ_183" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_32"; + }; + "OBJ_184" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_35"; + }; + "OBJ_185" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_36"; + }; + "OBJ_186" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_37"; + }; + "OBJ_187" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_39"; + }; + "OBJ_188" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_40"; + }; + "OBJ_189" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_43"; + }; + "OBJ_19" = { + isa = "PBXGroup"; + children = ( + "OBJ_20", + ); + name = "Responses"; + path = "Responses"; + sourceTree = ""; + }; + "OBJ_190" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_44"; + }; + "OBJ_191" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_46"; + }; + "OBJ_192" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_49"; + }; + "OBJ_193" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_51"; + }; + "OBJ_194" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_52"; + }; + "OBJ_195" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_54"; + }; + "OBJ_196" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_56"; + }; + "OBJ_197" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_58"; + }; + "OBJ_198" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_59"; + }; + "OBJ_199" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_60"; + }; + "OBJ_2" = { + isa = "XCConfigurationList"; + buildConfigurations = ( + "OBJ_3", + "OBJ_4", + ); + defaultConfigurationIsVisible = "0"; + defaultConfigurationName = "Release"; + }; + "OBJ_20" = { + isa = "PBXFileReference"; + path = "BlocksResponse.swift"; + sourceTree = ""; + }; + "OBJ_200" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_61"; + }; + "OBJ_201" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_63"; + }; + "OBJ_202" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_64"; + }; + "OBJ_203" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_65"; + }; + "OBJ_204" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_66"; + }; + "OBJ_205" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_67"; + }; + "OBJ_206" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_68"; + }; + "OBJ_207" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_69"; + }; + "OBJ_208" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_70"; + }; + "OBJ_209" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_71"; + }; + "OBJ_21" = { + isa = "PBXGroup"; + children = ( + "OBJ_22", + "OBJ_23", + "OBJ_25", + ); + name = "Dapps"; + path = "Dapps"; + sourceTree = ""; + }; + "OBJ_210" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_73"; + }; + "OBJ_211" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_74"; + }; + "OBJ_212" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_75"; + }; + "OBJ_213" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_76"; + }; + "OBJ_214" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_77"; + }; + "OBJ_215" = { + isa = "PBXFrameworksBuildPhase"; + files = ( + "OBJ_216", + "OBJ_217", + ); + }; + "OBJ_216" = { + isa = "PBXBuildFile"; + fileRef = "Ed25519::Ed25519::Product"; + }; + "OBJ_217" = { + isa = "PBXBuildFile"; + fileRef = "Ed25519::CEd25519::Product"; + }; + "OBJ_218" = { + isa = "PBXTargetDependency"; + target = "Ed25519::Ed25519"; + }; + "OBJ_219" = { + isa = "PBXTargetDependency"; + target = "Ed25519::CEd25519"; + }; + "OBJ_22" = { + isa = "PBXFileReference"; + path = "Dapps.swift"; + sourceTree = ""; + }; + "OBJ_221" = { + isa = "XCConfigurationList"; + buildConfigurations = ( + "OBJ_222", + "OBJ_223", + ); + defaultConfigurationIsVisible = "0"; + defaultConfigurationName = "Release"; + }; + "OBJ_222" = { + isa = "XCBuildConfiguration"; + buildSettings = { + LD = "/usr/bin/true"; + OTHER_SWIFT_FLAGS = ( + "-swift-version", + "4", + "-I", + "$(TOOLCHAIN_DIR)/usr/lib/swift/pm/4", + "-target", + "x86_64-apple-macosx10.10", + "-sdk", + "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk", + ); + SWIFT_VERSION = "4.0"; + }; + name = "Debug"; + }; + "OBJ_223" = { + isa = "XCBuildConfiguration"; + buildSettings = { + LD = "/usr/bin/true"; + OTHER_SWIFT_FLAGS = ( + "-swift-version", + "4", + "-I", + "$(TOOLCHAIN_DIR)/usr/lib/swift/pm/4", + "-target", + "x86_64-apple-macosx10.10", + "-sdk", + "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk", + ); + SWIFT_VERSION = "4.0"; + }; + name = "Release"; + }; + "OBJ_224" = { + isa = "PBXSourcesBuildPhase"; + files = ( + "OBJ_225", + ); + }; + "OBJ_225" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_6"; + }; + "OBJ_227" = { + isa = "XCConfigurationList"; + buildConfigurations = ( + "OBJ_228", + "OBJ_229", + ); + defaultConfigurationIsVisible = "0"; + defaultConfigurationName = "Release"; + }; + "OBJ_228" = { + isa = "XCBuildConfiguration"; + buildSettings = { + }; + name = "Debug"; + }; + "OBJ_229" = { + isa = "XCBuildConfiguration"; + buildSettings = { + }; + name = "Release"; + }; + "OBJ_23" = { + isa = "PBXGroup"; + children = ( + "OBJ_24", + ); + name = "Models"; + path = "Models"; + sourceTree = ""; + }; + "OBJ_230" = { + isa = "PBXTargetDependency"; + target = "Lisk::LiskTests"; + }; + "OBJ_232" = { + isa = "XCConfigurationList"; + buildConfigurations = ( + "OBJ_233", + "OBJ_234", + ); + defaultConfigurationIsVisible = "0"; + defaultConfigurationName = "Release"; + }; + "OBJ_233" = { + isa = "XCBuildConfiguration"; + buildSettings = { + EMBEDDED_CONTENT_CONTAINS_SWIFT = "YES"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PLATFORM_DIR)/Developer/Library/Frameworks", + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/.build/checkouts/ed25519.git-6274347002403739230/Sources/CEd25519/include", + "$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519", + ); + INFOPLIST_FILE = "Lisk.xcodeproj/LiskTests_Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@loader_path/../Frameworks", + "@loader_path/Frameworks", + ); + OTHER_CFLAGS = ( + "$(inherited)", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + ); + OTHER_SWIFT_FLAGS = ( + "$(inherited)", + "-Xcc", + "-fmodule-map-file=$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519/module.modulemap", + ); + SWIFT_VERSION = "4.0"; + TARGET_NAME = "LiskTests"; + }; + name = "Debug"; + }; + "OBJ_234" = { + isa = "XCBuildConfiguration"; + buildSettings = { + EMBEDDED_CONTENT_CONTAINS_SWIFT = "YES"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PLATFORM_DIR)/Developer/Library/Frameworks", + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/.build/checkouts/ed25519.git-6274347002403739230/Sources/CEd25519/include", + "$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519", + ); + INFOPLIST_FILE = "Lisk.xcodeproj/LiskTests_Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@loader_path/../Frameworks", + "@loader_path/Frameworks", + ); + OTHER_CFLAGS = ( + "$(inherited)", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + ); + OTHER_SWIFT_FLAGS = ( + "$(inherited)", + "-Xcc", + "-fmodule-map-file=$(SRCROOT)/Lisk.xcodeproj/GeneratedModuleMap/CEd25519/module.modulemap", + ); + SWIFT_VERSION = "4.0"; + TARGET_NAME = "LiskTests"; + }; + name = "Release"; + }; + "OBJ_235" = { + isa = "PBXSourcesBuildPhase"; + files = ( + "OBJ_236", + "OBJ_237", + "OBJ_238", + "OBJ_239", + "OBJ_240", + "OBJ_241", + "OBJ_242", + "OBJ_243", + "OBJ_244", + "OBJ_245", + "OBJ_246", + "OBJ_247", + "OBJ_248", + "OBJ_249", + "OBJ_250", + "OBJ_251", + ); + }; + "OBJ_236" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_81"; + }; + "OBJ_237" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_82"; + }; + "OBJ_238" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_83"; + }; + "OBJ_239" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_85"; + }; + "OBJ_24" = { + isa = "PBXFileReference"; + path = "DappModel.swift"; + sourceTree = ""; + }; + "OBJ_240" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_86"; + }; + "OBJ_241" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_88"; + }; + "OBJ_242" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_89"; + }; + "OBJ_243" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_91"; + }; + "OBJ_244" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_92"; + }; + "OBJ_245" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_94"; + }; + "OBJ_246" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_96"; + }; + "OBJ_247" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_97"; + }; + "OBJ_248" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_98"; + }; + "OBJ_249" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_99"; + }; + "OBJ_25" = { + isa = "PBXGroup"; + children = ( + "OBJ_26", + ); + name = "Responses"; + path = "Responses"; + sourceTree = ""; + }; + "OBJ_250" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_101"; + }; + "OBJ_251" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_102"; + }; + "OBJ_252" = { + isa = "PBXFrameworksBuildPhase"; + files = ( + "OBJ_253", + "OBJ_254", + "OBJ_255", + ); + }; + "OBJ_253" = { + isa = "PBXBuildFile"; + fileRef = "Lisk::Lisk::Product"; + }; + "OBJ_254" = { + isa = "PBXBuildFile"; + fileRef = "Ed25519::Ed25519::Product"; + }; + "OBJ_255" = { + isa = "PBXBuildFile"; + fileRef = "Ed25519::CEd25519::Product"; + }; + "OBJ_256" = { + isa = "PBXTargetDependency"; + target = "Lisk::Lisk"; + }; + "OBJ_257" = { + isa = "PBXTargetDependency"; + target = "Ed25519::Ed25519"; + }; + "OBJ_258" = { + isa = "PBXTargetDependency"; + target = "Ed25519::CEd25519"; + }; + "OBJ_26" = { + isa = "PBXFileReference"; + path = "DappsResponse.swift"; + sourceTree = ""; + }; + "OBJ_27" = { + isa = "PBXGroup"; + children = ( + "OBJ_28", + "OBJ_29", + "OBJ_31", + ); + name = "Delegates"; + path = "Delegates"; + sourceTree = ""; + }; + "OBJ_28" = { + isa = "PBXFileReference"; + path = "Delegates.swift"; + sourceTree = ""; + }; + "OBJ_29" = { + isa = "PBXGroup"; + children = ( + "OBJ_30", + ); + name = "Models"; + path = "Models"; + sourceTree = ""; + }; + "OBJ_3" = { + isa = "XCBuildConfiguration"; + buildSettings = { + CLANG_ENABLE_OBJC_ARC = "YES"; + COMBINE_HIDPI_IMAGES = "YES"; + COPY_PHASE_STRIP = "NO"; + DEBUG_INFORMATION_FORMAT = "dwarf"; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_NS_ASSERTIONS = "YES"; + GCC_OPTIMIZATION_LEVEL = "0"; + MACOSX_DEPLOYMENT_TARGET = "10.10"; + ONLY_ACTIVE_ARCH = "YES"; + OTHER_SWIFT_FLAGS = ( + "-DXcode", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = "macosx"; + SUPPORTED_PLATFORMS = ( + "macosx", + "iphoneos", + "iphonesimulator", + "appletvos", + "appletvsimulator", + "watchos", + "watchsimulator", + ); + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "SWIFT_PACKAGE"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + USE_HEADERMAP = "NO"; + }; + name = "Debug"; + }; + "OBJ_30" = { + isa = "PBXFileReference"; + path = "DelegateModel.swift"; + sourceTree = ""; + }; + "OBJ_31" = { + isa = "PBXGroup"; + children = ( + "OBJ_32", + ); + name = "Responses"; + path = "Responses"; + sourceTree = ""; + }; + "OBJ_32" = { + isa = "PBXFileReference"; + path = "DelegatesResponse.swift"; + sourceTree = ""; + }; + "OBJ_33" = { + isa = "PBXGroup"; + children = ( + "OBJ_34", + "OBJ_37", + "OBJ_38", + ); + name = "Node"; + path = "Node"; + sourceTree = ""; + }; + "OBJ_34" = { + isa = "PBXGroup"; + children = ( + "OBJ_35", + "OBJ_36", + ); + name = "Models"; + path = "Models"; + sourceTree = ""; + }; + "OBJ_35" = { + isa = "PBXFileReference"; + path = "NodeConstantsModel.swift"; + sourceTree = ""; + }; + "OBJ_36" = { + isa = "PBXFileReference"; + path = "NodeStatusModel.swift"; + sourceTree = ""; + }; + "OBJ_37" = { + isa = "PBXFileReference"; + path = "Node.swift"; + sourceTree = ""; + }; + "OBJ_38" = { + isa = "PBXGroup"; + children = ( + "OBJ_39", + "OBJ_40", + ); + name = "Responses"; + path = "Responses"; + sourceTree = ""; + }; + "OBJ_39" = { + isa = "PBXFileReference"; + path = "NodeConstantsResponse.swift"; + sourceTree = ""; + }; + "OBJ_4" = { + isa = "XCBuildConfiguration"; + buildSettings = { + CLANG_ENABLE_OBJC_ARC = "YES"; + COMBINE_HIDPI_IMAGES = "YES"; + COPY_PHASE_STRIP = "YES"; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_OPTIMIZATION_LEVEL = "s"; + MACOSX_DEPLOYMENT_TARGET = "10.10"; + OTHER_SWIFT_FLAGS = ( + "-DXcode", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = "macosx"; + SUPPORTED_PLATFORMS = ( + "macosx", + "iphoneos", + "iphonesimulator", + "appletvos", + "appletvsimulator", + "watchos", + "watchsimulator", + ); + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "SWIFT_PACKAGE"; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + USE_HEADERMAP = "NO"; + }; + name = "Release"; + }; + "OBJ_40" = { + isa = "PBXFileReference"; + path = "NodeStatusResponse.swift"; + sourceTree = ""; + }; + "OBJ_41" = { + isa = "PBXGroup"; + children = ( + "OBJ_42", + "OBJ_44", + "OBJ_45", + ); + name = "Peers"; + path = "Peers"; + sourceTree = ""; + }; + "OBJ_42" = { + isa = "PBXGroup"; + children = ( + "OBJ_43", + ); + name = "Models"; + path = "Models"; + sourceTree = ""; + }; + "OBJ_43" = { + isa = "PBXFileReference"; + path = "PeerModel.swift"; + sourceTree = ""; + }; + "OBJ_44" = { + isa = "PBXFileReference"; + path = "Peers.swift"; + sourceTree = ""; + }; + "OBJ_45" = { + isa = "PBXGroup"; + children = ( + "OBJ_46", + ); + name = "Responses"; + path = "Responses"; + sourceTree = ""; + }; + "OBJ_46" = { + isa = "PBXFileReference"; + path = "PeersResponse.swift"; + sourceTree = ""; + }; + "OBJ_47" = { + isa = "PBXGroup"; + children = ( + "OBJ_48", + "OBJ_50", + "OBJ_52", + ); + name = "Signatures"; + path = "Signatures"; + sourceTree = ""; + }; + "OBJ_48" = { + isa = "PBXGroup"; + children = ( + "OBJ_49", + ); + name = "Models"; + path = "Models"; + sourceTree = ""; + }; + "OBJ_49" = { + isa = "PBXFileReference"; + path = "SignatureModel.swift"; + sourceTree = ""; + }; + "OBJ_5" = { + isa = "PBXGroup"; + children = ( + "OBJ_6", + "OBJ_7", + "OBJ_78", + "OBJ_103", + "OBJ_104", + "OBJ_127", + ); + path = ""; + sourceTree = ""; + }; + "OBJ_50" = { + isa = "PBXGroup"; + children = ( + "OBJ_51", + ); + name = "Responses"; + path = "Responses"; + sourceTree = ""; + }; + "OBJ_51" = { + isa = "PBXFileReference"; + path = "SignatureBroadcastResponse.swift"; + sourceTree = ""; + }; + "OBJ_52" = { + isa = "PBXFileReference"; + path = "Signatures.swift"; + sourceTree = ""; + }; + "OBJ_53" = { + isa = "PBXGroup"; + children = ( + "OBJ_54", + "OBJ_55", + "OBJ_57", + "OBJ_60", + ); + name = "Transactions"; + path = "Transactions"; + sourceTree = ""; + }; + "OBJ_54" = { + isa = "PBXFileReference"; + path = "LocalTransaction.swift"; + sourceTree = ""; + }; + "OBJ_55" = { + isa = "PBXGroup"; + children = ( + "OBJ_56", + ); + name = "Models"; + path = "Models"; + sourceTree = ""; + }; + "OBJ_56" = { + isa = "PBXFileReference"; + path = "TransactionModel.swift"; + sourceTree = ""; + }; + "OBJ_57" = { + isa = "PBXGroup"; + children = ( + "OBJ_58", + "OBJ_59", + ); + name = "Responses"; + path = "Responses"; + sourceTree = ""; + }; + "OBJ_58" = { + isa = "PBXFileReference"; + path = "TransactionBroadcastResponse.swift"; + sourceTree = ""; + }; + "OBJ_59" = { + isa = "PBXFileReference"; + path = "TransactionsResponse.swift"; + sourceTree = ""; + }; + "OBJ_6" = { + isa = "PBXFileReference"; + explicitFileType = "sourcecode.swift"; + path = "Package.swift"; + sourceTree = ""; + }; + "OBJ_60" = { + isa = "PBXFileReference"; + path = "Transactions.swift"; + sourceTree = ""; + }; + "OBJ_61" = { + isa = "PBXFileReference"; + path = "Constants.swift"; + sourceTree = ""; + }; + "OBJ_62" = { + isa = "PBXGroup"; + children = ( + "OBJ_63", + "OBJ_64", + "OBJ_65", + "OBJ_66", + "OBJ_67", + "OBJ_68", + "OBJ_69", + "OBJ_70", + "OBJ_71", + ); + name = "Core"; + path = "Core"; + sourceTree = ""; + }; + "OBJ_63" = { + isa = "PBXFileReference"; + path = "APIClient.swift"; + sourceTree = ""; + }; + "OBJ_64" = { + isa = "PBXFileReference"; + path = "APIError.swift"; + sourceTree = ""; + }; + "OBJ_65" = { + isa = "PBXFileReference"; + path = "APIModel.swift"; + sourceTree = ""; + }; + "OBJ_66" = { + isa = "PBXFileReference"; + path = "APINethash.swift"; + sourceTree = ""; + }; + "OBJ_67" = { + isa = "PBXFileReference"; + path = "APINode.swift"; + sourceTree = ""; + }; + "OBJ_68" = { + isa = "PBXFileReference"; + path = "APIOptions.swift"; + sourceTree = ""; + }; + "OBJ_69" = { + isa = "PBXFileReference"; + path = "APIRequest.swift"; + sourceTree = ""; + }; + "OBJ_7" = { + isa = "PBXGroup"; + children = ( + "OBJ_8", + "OBJ_61", + "OBJ_62", + "OBJ_72", + ); + name = "Sources"; + path = "Sources"; + sourceTree = "SOURCE_ROOT"; + }; + "OBJ_70" = { + isa = "PBXFileReference"; + path = "APIResponse.swift"; + sourceTree = ""; + }; + "OBJ_71" = { + isa = "PBXFileReference"; + path = "APIService.swift"; + sourceTree = ""; + }; + "OBJ_72" = { + isa = "PBXGroup"; + children = ( + "OBJ_73", + "OBJ_74", + "OBJ_75", + "OBJ_76", + "OBJ_77", + ); + name = "Crypto"; + path = "Crypto"; + sourceTree = ""; + }; + "OBJ_73" = { + isa = "PBXFileReference"; + path = "BytePacker.swift"; + sourceTree = ""; + }; + "OBJ_74" = { + isa = "PBXFileReference"; + path = "Crypto.swift"; + sourceTree = ""; + }; + "OBJ_75" = { + isa = "PBXFileReference"; + path = "MnemonicPassphrase.swift"; + sourceTree = ""; + }; + "OBJ_76" = { + isa = "PBXFileReference"; + path = "Random.swift"; + sourceTree = ""; + }; + "OBJ_77" = { + isa = "PBXFileReference"; + path = "SHA256.swift"; + sourceTree = ""; + }; + "OBJ_78" = { + isa = "PBXGroup"; + children = ( + "OBJ_79", + "OBJ_100", + "OBJ_102", + ); + name = "Tests"; + path = "Tests"; + sourceTree = "SOURCE_ROOT"; + }; + "OBJ_79" = { + isa = "PBXGroup"; + children = ( + "OBJ_80", + "OBJ_84", + "OBJ_87", + "OBJ_90", + "OBJ_93", + "OBJ_95", + ); + name = "API"; + path = "API"; + sourceTree = ""; + }; + "OBJ_8" = { + isa = "PBXGroup"; + children = ( + "OBJ_9", + "OBJ_15", + "OBJ_21", + "OBJ_27", + "OBJ_33", + "OBJ_41", + "OBJ_47", + "OBJ_53", + ); + name = "API"; + path = "API"; + sourceTree = ""; + }; + "OBJ_80" = { + isa = "PBXGroup"; + children = ( + "OBJ_81", + "OBJ_82", + "OBJ_83", + ); + name = "Accounts"; + path = "Accounts"; + sourceTree = ""; + }; + "OBJ_81" = { + isa = "PBXFileReference"; + path = "AccountsAccountTests.swift"; + sourceTree = ""; + }; + "OBJ_82" = { + isa = "PBXFileReference"; + path = "AccountsOpenTests.swift"; + sourceTree = ""; + }; + "OBJ_83" = { + isa = "PBXFileReference"; + path = "AccountsPublicKeyTests.swift"; + sourceTree = ""; + }; + "OBJ_84" = { + isa = "PBXGroup"; + children = ( + "OBJ_85", + "OBJ_86", + ); + name = "Blocks"; + path = "Blocks"; + sourceTree = ""; + }; + "OBJ_85" = { + isa = "PBXFileReference"; + path = "BlocksGetTests.swift"; + sourceTree = ""; + }; + "OBJ_86" = { + isa = "PBXFileReference"; + path = "BlocksListTests.swift"; + sourceTree = ""; + }; + "OBJ_87" = { + isa = "PBXGroup"; + children = ( + "OBJ_88", + "OBJ_89", + ); + name = "Delegates"; + path = "Delegates"; + sourceTree = ""; + }; + "OBJ_88" = { + isa = "PBXFileReference"; + path = "DelegatesGetTests.swift"; + sourceTree = ""; + }; + "OBJ_89" = { + isa = "PBXFileReference"; + path = "DelegatesListTests.swift"; + sourceTree = ""; + }; + "OBJ_9" = { + isa = "PBXGroup"; + children = ( + "OBJ_10", + "OBJ_11", + "OBJ_13", + ); + name = "Accounts"; + path = "Accounts"; + sourceTree = ""; + }; + "OBJ_90" = { + isa = "PBXGroup"; + children = ( + "OBJ_91", + "OBJ_92", + ); + name = "Peers"; + path = "Peers"; + sourceTree = ""; + }; + "OBJ_91" = { + isa = "PBXFileReference"; + path = "PeersGetTests.swift"; + sourceTree = ""; + }; + "OBJ_92" = { + isa = "PBXFileReference"; + path = "PeersListTests.swift"; + sourceTree = ""; + }; + "OBJ_93" = { + isa = "PBXGroup"; + children = ( + "OBJ_94", + ); + name = "Signatures"; + path = "Signatures"; + sourceTree = ""; + }; + "OBJ_94" = { + isa = "PBXFileReference"; + path = "SignaturesRegisterTests.swift"; + sourceTree = ""; + }; + "OBJ_95" = { + isa = "PBXGroup"; + children = ( + "OBJ_96", + "OBJ_97", + "OBJ_98", + "OBJ_99", + ); + name = "Transactions"; + path = "Transactions"; + sourceTree = ""; + }; + "OBJ_96" = { + isa = "PBXFileReference"; + path = "TransactionsGetTests.swift"; + sourceTree = ""; + }; + "OBJ_97" = { + isa = "PBXFileReference"; + path = "TransactionsListTest.swift"; + sourceTree = ""; + }; + "OBJ_98" = { + isa = "PBXFileReference"; + path = "TransactionsSigningTest.swift"; + sourceTree = ""; + }; + "OBJ_99" = { + isa = "PBXFileReference"; + path = "TransactionsTransferTests.swift"; + sourceTree = ""; + }; + }; + rootObject = "OBJ_1"; } diff --git a/Lisk.xcodeproj/xcshareddata/xcschemes/Lisk-Package.xcscheme b/Lisk.xcodeproj/xcshareddata/xcschemes/Lisk-Package.xcscheme index 51a845b..fd118e4 100644 --- a/Lisk.xcodeproj/xcshareddata/xcschemes/Lisk-Package.xcscheme +++ b/Lisk.xcodeproj/xcshareddata/xcschemes/Lisk-Package.xcscheme @@ -28,9 +28,9 @@ buildForAnalyzing = "YES"> @@ -42,9 +42,9 @@ buildForAnalyzing = "YES"> @@ -54,9 +54,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - language = "" - shouldUseLaunchSchemeArgsEnv = "YES" - codeCoverageEnabled = "YES"> + shouldUseLaunchSchemeArgsEnv = "YES"> @@ -76,7 +74,6 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/Lisk.xcodeproj/xcuserdata/andrewbarba.xcuserdatad/xcschemes/xcschememanagement.plist b/Lisk.xcodeproj/xcuserdata/andrewbarba.xcuserdatad/xcschemes/xcschememanagement.plist index 22a4cfd..d128bd1 100644 --- a/Lisk.xcodeproj/xcuserdata/andrewbarba.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Lisk.xcodeproj/xcuserdata/andrewbarba.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ Ed25519PackageDescription.xcscheme orderHint - 2 + 1 Lisk-Package.xcscheme_^#shared#^_ @@ -17,7 +17,7 @@ LiskPackageDescription.xcscheme orderHint - 1 + 2 LiskPackageTests.xcscheme diff --git a/Package.resolved b/Package.resolved index 8eea317..6b53bce 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,24 +1,6 @@ { "object": { "pins": [ - { - "package": "Bluebird", - "repositoryURL": "https://github.com/AndrewBarba/Bluebird.swift.git", - "state": { - "branch": null, - "revision": "932ddc12b9f331e52c3dcf08b6ad9c95c986897f", - "version": "2.0.1" - } - }, - { - "package": "CryptoSwift", - "repositoryURL": "https://github.com/krzyzanowskim/CryptoSwift.git", - "state": { - "branch": null, - "revision": "d0084e4a6fe9490b3baab3d3c2aad58d3a852daf", - "version": "0.8.0" - } - }, { "package": "Ed25519", "repositoryURL": "https://github.com/vzsg/ed25519.git", diff --git a/Package.swift b/Package.swift index 7ffc33c..170dea7 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:4.0 +// swift-tools-version:4.1 import PackageDescription diff --git a/README.md b/README.md index 0068ef1..cc1d13c 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Lisk Swift is heavily inspired by [Lisk JS](https://github.com/LiskHQ/lisk-js) - [x] Local Signing for maximum security - [x] Targets Lisk 1.0.0 API - [x] Directly based on lisk-js -- [x] Swift 4.0 +- [x] Swift 4.1 - [x] Unit Tests (87% coverage) - [x] Documentation @@ -23,8 +23,9 @@ Lisk Swift is heavily inspired by [Lisk JS](https://github.com/LiskHQ/lisk-js) - [Accounts](https://andrewbarba.github.io/lisk-swift/Structs/Accounts.html) - [Blocks](https://andrewbarba.github.io/lisk-swift/Structs/Blocks.html) +- [Dapps](https://andrewbarba.github.io/lisk-swift/Structs/Dapps.html) - [Delegates](https://andrewbarba.github.io/lisk-swift/Structs/Delegates.html) -- [Loader](https://andrewbarba.github.io/lisk-swift/Structs/Loader.html) +- [Node](https://andrewbarba.github.io/lisk-swift/Structs/Node.html) - [Peers](https://andrewbarba.github.io/lisk-swift/Structs/Peers.html) - [Signatures](https://andrewbarba.github.io/lisk-swift/Structs/Signatures.html) - [Transactions](https://andrewbarba.github.io/lisk-swift/Structs/Transactions.html) @@ -108,30 +109,30 @@ let transactions = Transactions() ### Swift Package Manager ```swift -// swift-tools-version:4.0 +// swift-tools-version:4.1 import PackageDescription let package = Package( name: "My Lisk App", dependencies: [ - .package(url: "https://github.com/AndrewBarba/lisk-swift.git", from: "1.0.0-beta") + .package(url: "https://github.com/AndrewBarba/lisk-swift.git", from: "1.0.0.beta") ] ) ``` ### CocoaPods -> CocoaPods 1.1.0+ is required to build lisk-swift +> CocoaPods 1.5.0+ is required to build lisk-swift ```ruby -pod 'Lisk', '~> 1.0.0-beta' +pod 'Lisk', '~> 1.0.0.beta' ``` ### Carthage ```ogdl -github "AndrewBarba/lisk-swift" ~> 1.0.0-beta +github "AndrewBarba/lisk-swift" ~> 1.0.0.beta ``` ## Thank You diff --git a/Sources/API/Accounts/Models/AccountModel.swift b/Sources/API/Accounts/Models/AccountModel.swift index 0e56dae..2c3f996 100644 --- a/Sources/API/Accounts/Models/AccountModel.swift +++ b/Sources/API/Accounts/Models/AccountModel.swift @@ -22,5 +22,15 @@ extension Accounts { public let secondPublicKey: String? public let delegate: Delegates.DelegateModel? + + // MARK: - Hashable + + public static func == (lhs: AccountModel, rhs: AccountModel) -> Bool { + return lhs.address == rhs.address + } + + public var hashValue: Int { + return address.hashValue + } } } diff --git a/Sources/API/Blocks/Models/BlockModel.swift b/Sources/API/Blocks/Models/BlockModel.swift index 672a106..f55c9d1 100644 --- a/Sources/API/Blocks/Models/BlockModel.swift +++ b/Sources/API/Blocks/Models/BlockModel.swift @@ -42,5 +42,15 @@ extension Blocks { public let reward: String public let totalForged: String + + // MARK: - Hashable + + public static func == (lhs: BlockModel, rhs: BlockModel) -> Bool { + return lhs.id == rhs.id + } + + public var hashValue: Int { + return id.hashValue + } } } diff --git a/Sources/API/Dapps/Models/DappModel.swift b/Sources/API/Dapps/Models/DappModel.swift index 0b0a62a..7544c38 100644 --- a/Sources/API/Dapps/Models/DappModel.swift +++ b/Sources/API/Dapps/Models/DappModel.swift @@ -26,5 +26,15 @@ extension Dapps { public let description: String? public let name: String + + // MARK: - Hashable + + public static func == (lhs: DappModel, rhs: DappModel) -> Bool { + return lhs.name == rhs.name + } + + public var hashValue: Int { + return name.hashValue + } } } diff --git a/Sources/API/Delegates/Models/DelegateModel.swift b/Sources/API/Delegates/Models/DelegateModel.swift index b5a27e1..5562bed 100644 --- a/Sources/API/Delegates/Models/DelegateModel.swift +++ b/Sources/API/Delegates/Models/DelegateModel.swift @@ -28,5 +28,15 @@ extension Delegates { public let productivity: Double? public let rank: Int? + + // MARK: - Hashable + + public static func == (lhs: DelegateModel, rhs: DelegateModel) -> Bool { + return lhs.username == rhs.username + } + + public var hashValue: Int { + return username.hashValue + } } } diff --git a/Sources/API/Peers/Models/PeerModel.swift b/Sources/API/Peers/Models/PeerModel.swift index 3e4e393..93e1942 100644 --- a/Sources/API/Peers/Models/PeerModel.swift +++ b/Sources/API/Peers/Models/PeerModel.swift @@ -17,7 +17,7 @@ extension Peers { case connected = 2 } - public let ip: String? + public let ip: String public let httpPort: Int? @@ -34,5 +34,15 @@ extension Peers { public let broadhash: String? public let nonce: String? + + // MARK: - Hashable + + public static func == (lhs: PeerModel, rhs: PeerModel) -> Bool { + return lhs.ip == rhs.ip + } + + public var hashValue: Int { + return ip.hashValue + } } } diff --git a/Sources/API/Signatures/Signatures.swift b/Sources/API/Signatures/Signatures.swift index 2407eb1..4ea4c39 100644 --- a/Sources/API/Signatures/Signatures.swift +++ b/Sources/API/Signatures/Signatures.swift @@ -7,7 +7,6 @@ import Foundation -/// Signatures - https://docs.lisk.io/docs/lisk-api-080-signatures public struct Signatures: APIService { /// Client used to send requests diff --git a/Sources/API/Transactions/Models/TransactionModel.swift b/Sources/API/Transactions/Models/TransactionModel.swift index d0d32d1..ee05004 100644 --- a/Sources/API/Transactions/Models/TransactionModel.swift +++ b/Sources/API/Transactions/Models/TransactionModel.swift @@ -36,5 +36,15 @@ extension Transactions { public let signature: String public let confirmations: UInt64 + + // MARK: - Hashable + + public static func == (lhs: TransactionModel, rhs: TransactionModel) -> Bool { + return lhs.id == rhs.id + } + + public var hashValue: Int { + return id.hashValue + } } } diff --git a/Sources/Core/APIModel.swift b/Sources/Core/APIModel.swift index d5982d7..542051e 100644 --- a/Sources/Core/APIModel.swift +++ b/Sources/Core/APIModel.swift @@ -8,7 +8,7 @@ import Foundation /// API model -public protocol APIModel: Decodable { +public protocol APIModel: Decodable, Hashable { } diff --git a/docs/Classes.html b/docs/Classes.html index 94b089c..e92572a 100644 --- a/docs/Classes.html +++ b/docs/Classes.html @@ -13,7 +13,7 @@
-

Lisk Docs (54% documented)

+

Lisk Docs (42% documented)

View on GitHub

@@ -41,12 +41,6 @@ - - @@ -58,6 +52,9 @@