Skip to content

Commit 68f1f9a

Browse files
authored
add error response callback (#29)
* add unauthorized handler * build * fix unauthorizedHandler param * rename to errorResponseHandler * rename to errorResponseCallback
1 parent bd70c65 commit 68f1f9a

File tree

9 files changed

+49
-15
lines changed

9 files changed

+49
-15
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
Version 3.1.1
2+
=============
3+
* add error response callback
4+
* revert package name to @commaai/api
5+
16
Version 3.1.0
27
=============
38
* rename package to @comma/api

build.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/usr/bin/env bash
2+
set -e
3+
4+
cd "$(dirname "$0")"
5+
docker run --rm --name comma-api-build -v $(pwd):/app -w /app node:16-alpine sh -c "yarn install --immutable --immutable-cache --check-cache && yarn lint && yarn build && yarn generate"

dist/athena.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import Config from './config';
44
import ConfigRequest from './instance';
55
var request = new ConfigRequest(Config.ATHENA_URL_ROOT);
66
export function configure(accessToken) {
7-
request.configure(accessToken);
7+
var errorResponseCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
8+
request.configure(accessToken, errorResponseCallback);
89
}
910
export function postJsonRpcPayload(_x, _x2) {
1011
return _postJsonRpcPayload.apply(this, arguments);

dist/billing.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import Config from './config';
44
import ConfigRequest from './instance';
55
var request = new ConfigRequest(Config.BILLING_URL_ROOT);
66
export function configure(accessToken) {
7-
request.configure(accessToken);
7+
var errorResponseCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
8+
request.configure(accessToken, errorResponseCallback);
89
}
910
export function getSubscription(_x) {
1011
return _getSubscription.apply(this, arguments);

dist/instance.js

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,18 @@ var ConfigRequest = /*#__PURE__*/function () {
3434
'Content-Type': 'application/json'
3535
};
3636
this.baseUrl = baseUrl + (!baseUrl.endsWith('/') ? '/' : '');
37+
this.errorResponseCallback = null;
3738
}
3839
_createClass(ConfigRequest, [{
3940
key: "configure",
4041
value: function configure(accessToken) {
42+
var errorResponseCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
4143
if (accessToken) {
4244
this.defaultHeaders.Authorization = "JWT ".concat(accessToken);
4345
}
46+
if (errorResponseCallback) {
47+
this.errorResponseCallback = errorResponseCallback;
48+
}
4449
}
4550
}, {
4651
key: "request",
@@ -83,23 +88,32 @@ var ConfigRequest = /*#__PURE__*/function () {
8388
case 8:
8489
resp = _context.sent;
8590
if (resp.ok) {
91+
_context.next = 18;
92+
break;
93+
}
94+
if (!this.errorResponseCallback) {
8695
_context.next = 14;
8796
break;
8897
}
89-
_context.next = 12;
98+
_context.next = 13;
99+
return this.errorResponseCallback(resp);
100+
case 13:
101+
return _context.abrupt("return", null);
102+
case 14:
103+
_context.next = 16;
90104
return resp.text();
91-
case 12:
105+
case 16:
92106
error = _context.sent;
93107
throw new RequestError(resp, "".concat(resp.status, ": ").concat(error));
94-
case 14:
108+
case 18:
95109
if (respJson) {
96-
_context.next = 16;
110+
_context.next = 20;
97111
break;
98112
}
99113
return _context.abrupt("return", resp);
100-
case 16:
114+
case 20:
101115
return _context.abrupt("return", resp.json());
102-
case 17:
116+
case 21:
103117
case "end":
104118
return _context.stop();
105119
}

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"name": "@comma/api",
3-
"version": "3.1.0",
2+
"name": "@commaai/api",
3+
"version": "3.1.1",
44
"main": "src/index.js",
55
"browser": "dist/index.js",
66
"types": "index.d.ts",

src/athena.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import ConfigRequest from './instance';
44

55
const request = new ConfigRequest(Config.ATHENA_URL_ROOT);
66

7-
export function configure(accessToken) {
8-
request.configure(accessToken);
7+
export function configure(accessToken, errorResponseCallback = null) {
8+
request.configure(accessToken, errorResponseCallback);
99
}
1010

1111
export async function postJsonRpcPayload(dongleId, payload) {

src/billing.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import ConfigRequest from './instance';
44

55
const request = new ConfigRequest(Config.BILLING_URL_ROOT);
66

7-
export function configure(accessToken) {
8-
request.configure(accessToken);
7+
export function configure(accessToken, errorResponseCallback = null) {
8+
request.configure(accessToken, errorResponseCallback);
99
}
1010

1111
export async function getSubscription(dongle_id) {

src/instance.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,16 @@ export default class ConfigRequest {
1414
'Content-Type': 'application/json',
1515
};
1616
this.baseUrl = baseUrl + (!baseUrl.endsWith('/') ? '/' : '');
17+
this.errorResponseCallback = null;
1718
}
1819

19-
configure(accessToken) {
20+
configure(accessToken, errorResponseCallback = null) {
2021
if (accessToken) {
2122
this.defaultHeaders.Authorization = `JWT ${accessToken}`;
2223
}
24+
if (errorResponseCallback) {
25+
this.errorResponseCallback = errorResponseCallback;
26+
}
2327
}
2428

2529
async request(method, endpoint, params, dataJson = true, respJson = true) {
@@ -42,6 +46,10 @@ export default class ConfigRequest {
4246

4347
const resp = await fetch(requestUrl, { method, headers, body });
4448
if (!resp.ok) {
49+
if (this.errorResponseCallback) {
50+
await this.errorResponseCallback(resp);
51+
return null;
52+
}
4553
const error = await resp.text();
4654
throw new RequestError(resp, `${resp.status}: ${error}`);
4755
}

0 commit comments

Comments
 (0)