session-ios/SignalServiceKit/src/Loki/LokiMessagingAPI.swift

39 lines
1.5 KiB
Swift
Raw Normal View History

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
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>) {
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
}
}