diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2018-06-13 15:01:30 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2018-06-14 11:22:29 -0300 |
| commit | 2ade9a84077d79863e4a870d44ff0b5458bcf8b6 (patch) | |
| tree | 06576b6715a75c8b4f02c6331a092f7e1e2c78bf | |
| parent | 8471c7bfd8ffdf9b0452d00cf7826660be41b569 (diff) | |
| download | mullvadvpn-2ade9a84077d79863e4a870d44ff0b5458bcf8b6.tar.xz mullvadvpn-2ade9a84077d79863e4a870d44ff0b5458bcf8b6.zip | |
Create `JsonRpcError` type
And rename the previous existing type into `JsonRpcErrorMessage`.
| -rw-r--r-- | app/lib/jsonrpc-ws-ipc.js | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/app/lib/jsonrpc-ws-ipc.js b/app/lib/jsonrpc-ws-ipc.js index ff73f4cc88..84dec96c77 100644 --- a/app/lib/jsonrpc-ws-ipc.js +++ b/app/lib/jsonrpc-ws-ipc.js @@ -11,11 +11,12 @@ export type UnansweredRequest = { message: Object, }; -export type JsonRpcError = { +export type JsonRpcErrorResponse = { type: 'error', payload: { id: string, error: { + code: number, message: string, }, }, @@ -37,7 +38,26 @@ export type JsonRpcSuccess = { result: mixed, }, }; -export type JsonRpcMessage = JsonRpcError | JsonRpcNotification | JsonRpcSuccess; +export type JsonRpcMessage = JsonRpcErrorResponse | JsonRpcNotification | JsonRpcSuccess; + +export class JsonRpcError extends Error { + _code: number; + _details: string; + + constructor(code: number, details: string) { + super(`Remote JSON-RPC error ${code}: ${details}`); + this._code = code; + this._details = details; + } + + get code(): number { + return this._code; + } + + get details(): string { + return this._details; + } +} export class TimeOutError extends Error { jsonRpcMessage: Object; @@ -200,7 +220,7 @@ export default class Ipc { } } - _onReply(message: JsonRpcError | JsonRpcSuccess) { + _onReply(message: JsonRpcErrorResponse | JsonRpcSuccess) { const id = message.payload.id; const request = this._unansweredRequests.get(id); this._unansweredRequests.delete(id); @@ -215,7 +235,8 @@ export default class Ipc { clearTimeout(request.timerId); if (message.type === 'error') { - request.reject(message.payload.error); + const error = message.payload.error; + request.reject(new JsonRpcError(error.code, error.message)); } else { const reply = message.payload.result; request.resolve(reply); |
