@osimatic/helpers-js 1.1.62 → 1.1.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/http_client.js +34 -28
  2. package/package.json +1 -1
package/http_client.js CHANGED
@@ -1,5 +1,9 @@
1
1
 
2
2
  class HTTPClient {
3
+ static setAuthorizationToken(authorizationToken) {
4
+ HTTPClient.authorizationToken = authorizationToken;
5
+ }
6
+
3
7
  // URL appelée pour rafraichir le token. Le token est mis à jour dans JwtSession. En cas de succès, on appelle HTTPClient.onSuccessRefreshTokenCallback et on réexécute toutes les requêtes HTTP en attente de nouveau token. En cas d'échec, on redirige vers HTTPClient.onInvalidRefreshTokenRedirectUrl et/ou on appelle HTTPClient.onInvalidRefreshTokenCallback.
4
8
  static setRefreshTokenUrl(url) {
5
9
  HTTPClient.refreshTokenUrl = url;
@@ -28,11 +32,25 @@ class HTTPClient {
28
32
  HTTPClient.onInvalidTokenCallback = callback;
29
33
  }
30
34
 
31
- static getHeaders(asObject=false, additionalHeaders={}) {
32
- HTTPClient.setAuthorizationToken(JwtSession.getToken());
35
+ static getHeaders(asObject=false, additionalHeaders={}, addAuthorizationHeader=true) {
36
+ let httpHeadersData = {};
33
37
 
34
- if (typeof HTTPClient.headers == 'undefined') {
35
- HTTPClient.headers = {};
38
+ if (typeof HTTPClient.headers != 'undefined' && null != HTTPClient.headers) {
39
+ HTTPClient.headers['Authorization'] = null;
40
+ httpHeadersData = HTTPClient.headers;
41
+ }
42
+
43
+ if (addAuthorizationHeader) {
44
+ const authorizationToken = typeof HTTPClient.authorizationToken != 'undefined' && null != HTTPClient.authorizationToken ? HTTPClient.authorizationToken : JwtSession.getToken();
45
+ if (null != authorizationToken && '' !== authorizationToken) {
46
+ httpHeadersData['Authorization'] = 'Bearer ' + authorizationToken;
47
+ }
48
+ }
49
+
50
+ if (null != additionalHeaders && typeof additionalHeaders == 'object') {
51
+ for (const [key, value] of Object.entries(additionalHeaders)) {
52
+ httpHeadersData[key] = value;
53
+ }
36
54
  }
37
55
 
38
56
  if (asObject) {
@@ -43,13 +61,6 @@ class HTTPClient {
43
61
  Object.entries(HTTPClient.headers).forEach(([key, value]) => {
44
62
  httpHeaders.append(key, value);
45
63
  });
46
-
47
- if (typeof additionalHeaders == 'object') {
48
- for (const [key, value] of Object.entries(additionalHeaders)) {
49
- httpHeaders.append(key, value);
50
- }
51
- }
52
-
53
64
  return httpHeaders;
54
65
  }
55
66
 
@@ -69,18 +80,6 @@ class HTTPClient {
69
80
  HTTPClient.headers[key] = value;
70
81
  }
71
82
 
72
- static setAuthorizationToken(authorizationToken) {
73
- if (typeof HTTPClient.headers == 'undefined') {
74
- HTTPClient.headers = {};
75
- }
76
-
77
- if (typeof authorizationToken == 'undefined' || null == authorizationToken) {
78
- return;
79
- }
80
-
81
- HTTPClient.headers['Authorization'] = 'Bearer ' + authorizationToken;
82
- }
83
-
84
83
  static convertObjectToFormData(obj) {
85
84
  // 30/05/2022 : ancienne version, qui ne fonctionne pas avec des tableaux
86
85
  // let formData = new FormData();
@@ -198,7 +197,7 @@ class HTTPClient {
198
197
  JwtSession.logout(HTTPClient.onInvalidTokenRedirectUrl, HTTPClient.onInvalidTokenCallback);
199
198
  }
200
199
 
201
- static async request(method, url, data, successCallback=null, errorCallback=null, formErrorCallback=null, additionalHeaders={}) {
200
+ static async request(method, url, data, successCallback=null, errorCallback=null, formErrorCallback=null, additionalHeaders={}, sendAuthorizationHeader=true) {
202
201
  if (!window.fetch) {
203
202
  return;
204
203
  }
@@ -206,7 +205,7 @@ class HTTPClient {
206
205
  let body = null;
207
206
  method = method.toUpperCase();
208
207
 
209
- let headers = HTTPClient.getHeaders(false, additionalHeaders);
208
+ let headers = HTTPClient.getHeaders(false, additionalHeaders, sendAuthorizationHeader);
210
209
 
211
210
  if ('PATCH' === method || 'DELETE' === method) {
212
211
  headers.append('Content-Type', 'application/x-www-form-urlencoded');
@@ -345,9 +344,13 @@ class HTTPClient {
345
344
  }
346
345
  }
347
346
  else {
348
- HTTPClient.logRequestFailure(response, null);
347
+ let json = null;
348
+ if (response.headers.get('Content-Type') === 'application/json') {
349
+ json = await response.json();
350
+ }
351
+ HTTPClient.logRequestFailure(response, json);
349
352
  if (typeof errorCallback == 'function') {
350
- errorCallback(response);
353
+ errorCallback(response, json);
351
354
  }
352
355
  }
353
356
  }
@@ -411,7 +414,10 @@ class HTTPClient {
411
414
  if (typeof errorCallback == 'function') {
412
415
  errorCallback();
413
416
  }
414
- }
417
+ },
418
+ null,
419
+ null,
420
+ false
415
421
  );
416
422
  }
417
423
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osimatic/helpers-js",
3
- "version": "1.1.62",
3
+ "version": "1.1.64",
4
4
  "main": "main.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"