2019-04-30 06:27:39 +02:00
|
|
|
import PromiseKit
|
|
|
|
|
2019-05-06 08:13:32 +02:00
|
|
|
@objc public final class LokiMessagingAPI : NSObject {
|
2019-04-30 06:27:39 +02:00
|
|
|
|
2019-05-03 02:10:11 +02:00
|
|
|
private static var baseURL: String { return textSecureServerURL }
|
2019-04-30 06:27:39 +02:00
|
|
|
private static var port: String { return "8080" }
|
|
|
|
private static var apiVersion: String { return "v1" }
|
|
|
|
|
|
|
|
// MARK: Types
|
|
|
|
private enum Method : String {
|
|
|
|
case retrieveAllMessages = "retrieve"
|
2019-05-06 08:13:32 +02:00
|
|
|
case sendMessage = "store"
|
2019-04-30 06:27:39 +02:00
|
|
|
}
|
|
|
|
|
2019-05-06 08:13:32 +02:00
|
|
|
public typealias RawResponse = TSNetworkManager.NetworkManagerResult
|
2019-04-30 06:27:39 +02:00
|
|
|
|
|
|
|
// MARK: Lifecycle
|
2019-05-06 08:13:32 +02:00
|
|
|
override private init() { }
|
2019-04-30 06:27:39 +02:00
|
|
|
|
|
|
|
// MARK: API
|
2019-05-06 08:13:32 +02:00
|
|
|
private static func invoke(_ method: Method, parameters: [String:String] = [:]) -> (request: TSRequest, promise: Promise<RawResponse>) {
|
2019-05-03 02:10:11 +02:00
|
|
|
let url = URL(string: "\(baseURL):\(port)/\(apiVersion)/storage_rpc")!
|
2019-04-30 06:27:39 +02:00
|
|
|
let request = TSRequest(url: url, method: "POST", parameters: [ "method" : method.rawValue, "params" : parameters ])
|
2019-05-06 08:13:32 +02:00
|
|
|
return (request, TSNetworkManager.shared().makePromise(request: request))
|
2019-04-30 06:27:39 +02:00
|
|
|
}
|
2019-05-06 08:13:32 +02:00
|
|
|
|
|
|
|
@objc public static func sendMessage(_ message: [String:String]) -> TSRequest {
|
|
|
|
return invoke(.sendMessage, parameters: message).request
|
2019-04-30 06:27:39 +02:00
|
|
|
}
|
|
|
|
|
2019-05-06 08:13:32 +02:00
|
|
|
public static func retrieveAllMessages() -> Promise<RawResponse> {
|
2019-04-30 07:12:15 +02:00
|
|
|
let parameters = [
|
|
|
|
"pubKey" : OWSIdentityManager.shared().identityKeyPair()!.hexEncodedPublicKey,
|
2019-05-06 08:13:32 +02:00
|
|
|
"lastHash" : "" // TODO: Implement
|
2019-04-30 07:12:15 +02:00
|
|
|
]
|
2019-05-06 08:13:32 +02:00
|
|
|
return invoke(.retrieveAllMessages, parameters: parameters).promise
|
2019-04-30 06:27:39 +02:00
|
|
|
}
|
|
|
|
}
|