diff --git a/Pods b/Pods index f48c85741..860a0dd80 160000 --- a/Pods +++ b/Pods @@ -1 +1 @@ -Subproject commit f48c857414ea68734bc786ffcaad77a35ac216a2 +Subproject commit 860a0dd80a10bd514e29f07c973bd97f4c68f00e diff --git a/SignalServiceKit/src/Loki/LokiMessagingAPI.swift b/SignalServiceKit/src/Loki/LokiAPI.swift similarity index 81% rename from SignalServiceKit/src/Loki/LokiMessagingAPI.swift rename to SignalServiceKit/src/Loki/LokiAPI.swift index 145cd2447..25a96b6b4 100644 --- a/SignalServiceKit/src/Loki/LokiMessagingAPI.swift +++ b/SignalServiceKit/src/Loki/LokiAPI.swift @@ -1,9 +1,9 @@ import PromiseKit -@objc public final class LokiMessagingAPI : NSObject { +@objc public final class LokiAPI : NSObject { - private static let apiVersion = "v1" - public static let defaultTTL: UInt64 = 4 * 24 * 60 * 60 + private static let version = "v1" + public static let defaultMessageTTL: UInt64 = 4 * 24 * 60 * 60 // MARK: Types private enum Method : String { @@ -12,7 +12,7 @@ import PromiseKit case getSwarm = "get_snodes_for_pubkey" } - public struct Target { + public struct Target : Hashable { let address: String let port: UInt16 } @@ -34,7 +34,7 @@ import PromiseKit // MARK: API private static func invoke(_ method: Method, on target: Target, with parameters: [String:String] = [:]) -> Promise { - let url = URL(string: "\(target.address):\(target.port)/\(apiVersion)/storage_rpc")! + let url = URL(string: "\(target.address):\(target.port)/\(version)/storage_rpc")! let request = TSRequest(url: url, method: "POST", parameters: [ "method" : method.rawValue, "params" : parameters ]) return TSNetworkManager.shared().makePromise(request: request).map { $0.responseObject } } @@ -50,15 +50,15 @@ import PromiseKit "pubKey" : OWSIdentityManager.shared().identityKeyPair()!.hexEncodedPublicKey, "lastHash" : "" // TODO: Implement ] - return getRandomSnode().then { invoke(.getMessages, on: $0, with: parameters) } // TODO: This shouldn't be a random snode + return getRandomSnode().then { invoke(.getMessages, on: $0, with: parameters) } // TODO: Use getSwarm() } public static func sendMessage(_ lokiMessage: LokiMessage) -> Promise { - return getRandomSnode().then { invoke(.sendMessage, on: $0, with: lokiMessage.toJSON()) } // TODO: This shouldn't be a random snode + return getRandomSnode().then { invoke(.sendMessage, on: $0, with: lokiMessage.toJSON()) } // TODO: Use getSwarm() } - public static func getSwarm(for publicKey: String) -> Promise { - return getRandomSnode().then { invoke(.getSwarm, on: $0, with: [ "pubKey" : publicKey ]) } + public static func getSwarm(for hexEncodedPublicKey: String) -> Promise> { + return getRandomSnode().then { invoke(.getSwarm, on: $0, with: [ "pubKey" : hexEncodedPublicKey ]) }.map { rawResponse in return [] } // TODO: Parse targets from raw response } // MARK: Obj-C API diff --git a/SignalServiceKit/src/Loki/LokiMessage.swift b/SignalServiceKit/src/Loki/LokiMessage.swift index 63285f7a0..8eccefe7f 100644 --- a/SignalServiceKit/src/Loki/LokiMessage.swift +++ b/SignalServiceKit/src/Loki/LokiMessage.swift @@ -25,14 +25,14 @@ public struct LokiMessage { DispatchQueue.global(qos: .default).async { let destination = signalMessage["destination"]! let data = signalMessage["content"]! - let ttl = LokiMessagingAPI.defaultTTL + let ttl = LokiAPI.defaultMessageTTL if isPoWRequired { let timestamp = UInt64(Date().timeIntervalSince1970) if let nonce = ProofOfWork.calculate(data: data, pubKey: destination, timestamp: timestamp, ttl: ttl) { let result = LokiMessage(destination: destination, data: data, ttl: ttl, timestamp: timestamp, nonce: nonce) seal.fulfill(result) } else { - seal.reject(LokiMessagingAPI.Error.proofOfWorkCalculationFailed) + seal.reject(LokiAPI.Error.proofOfWorkCalculationFailed) } } else { let result = LokiMessage(destination: destination, data: data, ttl: ttl, timestamp: nil, nonce: nil) diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index 661736867..bae330cde 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -1111,7 +1111,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; // Convert the message to a Loki message and send it using the Loki messaging API NSDictionary *signalMessage = deviceMessages.firstObject; BOOL isPoWRequired = YES; // TODO: Base on message type - [LokiMessagingAPI sendSignalMessage:signalMessage to:recipient.recipientId requiringPoW:isPoWRequired completionHandler:nil]; + [LokiAPI sendSignalMessage:signalMessage to:recipient.recipientId requiringPoW:isPoWRequired completionHandler:nil]; // Loki: Original code /*