diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2019-12-23 13:05:24 +0100 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2020-01-03 11:40:30 +0100 |
| commit | f9f4b83df67081af4758a8a8d8f796803c055705 (patch) | |
| tree | 2fd16adc9bb7772a37abf26039ff690a30f48615 | |
| parent | f424194d3a57c1f6c4dcb349ee8b93c138f3c1f3 (diff) | |
| download | mullvadvpn-f9f4b83df67081af4758a8a8d8f796803c055705.tar.xz mullvadvpn-f9f4b83df67081af4758a8a8d8f796803c055705.zip | |
Add ResponseCode type to JsonRpcResponse
| -rw-r--r-- | ios/MullvadVPN/JsonRpc.swift | 17 |
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)) } } } |
