summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2019-12-23 13:05:24 +0100
committerAndrej Mihajlov <and@mullvad.net>2020-01-03 11:40:30 +0100
commitf9f4b83df67081af4758a8a8d8f796803c055705 (patch)
tree2fd16adc9bb7772a37abf26039ff690a30f48615
parentf424194d3a57c1f6c4dcb349ee8b93c138f3c1f3 (diff)
downloadmullvadvpn-f9f4b83df67081af4758a8a8d8f796803c055705.tar.xz
mullvadvpn-f9f4b83df67081af4758a8a8d8f796803c055705.zip
Add ResponseCode type to JsonRpcResponse
-rw-r--r--ios/MullvadVPN/JsonRpc.swift17
1 files changed, 11 insertions, 6 deletions
diff --git a/ios/MullvadVPN/JsonRpc.swift b/ios/MullvadVPN/JsonRpc.swift
index 6c54bf6adb..58a6b01827 100644
--- a/ios/MullvadVPN/JsonRpc.swift
+++ b/ios/MullvadVPN/JsonRpc.swift
@@ -38,8 +38,10 @@ struct JsonRpcRequest: Encodable {
}
}
-class JsonRpcResponseError: Error, Decodable {
- let code: Int
+class JsonRpcResponseError<ResponseCode>: Error, Decodable
+ where ResponseCode: Decodable
+{
+ let code: ResponseCode
let message: String
var localizedDescription: String? {
@@ -53,15 +55,18 @@ class JsonRpcResponseError: Error, Decodable {
required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
- code = try container.decode(Int.self, forKey: .code)
+ code = try container.decode(ResponseCode.self, forKey: .code)
message = try container.decode(String.self, forKey: .message)
}
}
-struct JsonRpcResponse<T: Decodable>: Decodable {
+struct JsonRpcResponse<T, ResponseCode>: Decodable
+ where
+ T: Decodable, ResponseCode: Decodable
+{
let version: String
let id: String
- let result: Result<T, JsonRpcResponseError>
+ let result: Result<T, JsonRpcResponseError<ResponseCode>>
private enum CodingKeys: String, CodingKey {
case version = "jsonrpc", id, result, error
@@ -76,7 +81,7 @@ struct JsonRpcResponse<T: Decodable>: Decodable {
if container.contains(.result) {
self.result = .success(try container.decode(T.self, forKey: .result))
} else {
- self.result = .failure(try container.decode(JsonRpcResponseError.self, forKey: .error))
+ self.result = .failure(try container.decode(JsonRpcResponseError<ResponseCode>.self, forKey: .error))
}
}
}