@osimatic/helpers-js 1.0.25 → 1.0.26

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.
package/changelog.txt CHANGED
@@ -31,3 +31,6 @@ getDateObjectSelected(lien) -> getSelectedDate(lien.closest('.form-group')
31
31
  selectFormDate(lien) -> setSelectedDate(lien.closest('.form-group')
32
32
  majSelectPeriode() / majSelectCompare() -> updatePeriodSelect(form)
33
33
 
34
+ let URL_REFRESH = ... -> HTTPRequest.setRefreshTokenUrl(URL_REFRESH)
35
+ let _httpHeaders = {...} -> HTTPRequest.setHeader(key, value);
36
+ let httpHeaders = {...} -> HTTPRequest.setHeader(key, value);
package/network.js CHANGED
@@ -1,5 +1,35 @@
1
1
 
2
2
  class HTTPRequest {
3
+ static setRefreshTokenUrl(url) {
4
+ this.refreshTokenUrl = url;
5
+ }
6
+ static setRefreshTokenCallback(callback) {
7
+ this.refreshTokenCallback = callback;
8
+ }
9
+
10
+ static setHeader(key, value) {
11
+ if (typeof this.headers == 'undefined') {
12
+ this.headers = {};
13
+ }
14
+ this.headers[key] = value;
15
+ }
16
+
17
+ static getHeaders() {
18
+ //if (typeof httpHeaders != 'undefined') {
19
+ // return httpHeaders;
20
+ //}
21
+
22
+ if (typeof this.headers == 'undefined') {
23
+ this.headers = {};
24
+ }
25
+
26
+ let httpHeaders = new Headers();
27
+ Object.entries(this.headers).forEach(([key, value]) => {
28
+ httpHeaders.append(key, value);
29
+ });
30
+ return httpHeaders;
31
+ }
32
+
3
33
  static async get(url, data, successCallback, errorCallback) {
4
34
  if (data == null) {
5
35
  data = '';
@@ -14,7 +44,7 @@ class HTTPRequest {
14
44
  if (window.fetch) {
15
45
  let requestInit = {
16
46
  method: 'GET',
17
- headers: _httpHeaders,
47
+ headers: HTTPRequest.getHeaders(),
18
48
  mode: 'cors',
19
49
  cache: 'no-cache'
20
50
  }
@@ -24,9 +54,10 @@ class HTTPRequest {
24
54
  try {
25
55
  jsonData = await response.json();
26
56
  //console.log(url, jsonData);
57
+ //console.log(response.status, response.statusText, jsonData['error']);
27
58
 
28
- if (response.status == 401 && response.statusText == "Expired JWT Token") {
29
- HTTPRequest.refreshToken(URL_REFRESH, () => HTTPRequest.get(url, data, successCallback, errorCallback));
59
+ if (response.status == 401 && (response.statusText == "Expired JWT Token" || typeof jsonData['error'] != 'undefined' && jsonData['error'] === 'expired_token')) {
60
+ HTTPRequest.refreshToken(() => HTTPRequest.get(url, data, successCallback, errorCallback));
30
61
  return;
31
62
  }
32
63
 
@@ -49,13 +80,13 @@ class HTTPRequest {
49
80
  $.ajax({
50
81
  type: 'GET',
51
82
  url: url + (!url.includes('?') ? '?' : '') + data,
52
- headers: httpHeaders,
83
+ headers: HTTPRequest.getHeaders(),
53
84
  dataType: 'json',
54
85
  cache: false,
55
86
  success: (data) => successCallback(data),
56
87
  error: (jqxhr, status, exception) => {
57
88
  if (typeof jqxhr.responseJSON != 'undefined' && jqxhr.responseJSON.code == 401 && jqxhr.responseJSON.message == "Expired JWT Token") {
58
- HTTPRequest.refreshToken(URL_REFRESH, () => HTTPRequest.get(url, data, successCallback, errorCallback));
89
+ HTTPRequest.refreshToken(() => HTTPRequest.get(url, data, successCallback, errorCallback));
59
90
  } else {
60
91
  errorCallback(jqxhr, status, exception);
61
92
  }
@@ -78,7 +109,7 @@ class HTTPRequest {
78
109
  if (window.fetch) {
79
110
  let requestInit = {
80
111
  method: 'GET',
81
- headers: _httpHeaders,
112
+ headers: HTTPRequest.getHeaders(),
82
113
  mode: 'cors',
83
114
  cache: 'no-cache'
84
115
  }
@@ -90,7 +121,7 @@ class HTTPRequest {
90
121
  console.log(blobData);*/
91
122
 
92
123
  if (response.status == 401 && response.statusText == "Expired JWT Token") {
93
- HTTPRequest.refreshToken(URL_REFRESH, () => HTTPRequest.download(url, data, errorCallback, completeCallback));
124
+ HTTPRequest.refreshToken(() => HTTPRequest.download(url, data, errorCallback, completeCallback));
94
125
  return;
95
126
  }
96
127
 
@@ -118,7 +149,7 @@ class HTTPRequest {
118
149
  $.ajax({
119
150
  type: 'GET',
120
151
  url: url + (!url.includes('?') ? '?' : '') + data,
121
- headers: httpHeaders,
152
+ headers: HTTPRequest.getHeaders(),
122
153
  cache: false,
123
154
  xhrFields: {
124
155
  responseType: 'blob'
@@ -126,7 +157,7 @@ class HTTPRequest {
126
157
  success: (data, status, jqxhr) => File.download(data, jqxhr.getResponseHeader('Content-Type'), jqxhr.getResponseHeader('Content-Disposition')),
127
158
  error: (jqxhr, status, exception) => {
128
159
  if (typeof jqxhr.responseJSON != 'undefined' && jqxhr.responseJSON.code == 401 && jqxhr.responseJSON.message == "Expired JWT Token") {
129
- HTTPRequest.refreshToken(URL_REFRESH, () => HTTPRequest.download(url, data, errorCallback, completeCallback));
160
+ HTTPRequest.refreshToken(() => HTTPRequest.download(url, data, errorCallback, completeCallback));
130
161
  } else if (typeof errorCallback != 'undefined' && errorCallback != null) {
131
162
  errorCallback(jqxhr, status, exception);
132
163
  }
@@ -144,7 +175,7 @@ class HTTPRequest {
144
175
  let requestInit = {
145
176
  method: 'POST',
146
177
  body: formData,
147
- headers: _httpHeaders,
178
+ headers: HTTPRequest.getHeaders(),
148
179
  mode: 'cors',
149
180
  cache: 'no-cache'
150
181
  };
@@ -156,8 +187,8 @@ class HTTPRequest {
156
187
  jsonData = await response.json();
157
188
  //console.log(url, jsonData);
158
189
 
159
- if (response.status == 401 && response.statusText == "Expired JWT Token") {
160
- HTTPRequest.refreshToken(URL_REFRESH, () => HTTPRequest.post(url, formData, successCallback, errorCallback, formErrorCallback));
190
+ if (response.status == 401 && (response.statusText == "Expired JWT Token" || typeof jsonData['error'] != 'undefined' && jsonData['error'] === 'expired_token')) {
191
+ HTTPRequest.refreshToken(() => HTTPRequest.post(url, formData, successCallback, errorCallback, formErrorCallback));
161
192
  return;
162
193
  }
163
194
 
@@ -186,7 +217,7 @@ class HTTPRequest {
186
217
  $.ajax({
187
218
  type: 'POST',
188
219
  url: url,
189
- headers: httpHeaders,
220
+ headers: HTTPRequest.getHeaders(),
190
221
  dataType: 'json', // 22/09/2020 : à voir si cette ligne pose pb (utilisé pour requete import et peut être d'autres
191
222
  data: formData,
192
223
  cache: false,
@@ -195,7 +226,7 @@ class HTTPRequest {
195
226
  success: (data) => successCallback(data),
196
227
  error: (jqxhr, status, exception) => {
197
228
  if (typeof jqxhr.responseJSON != 'undefined' && jqxhr.responseJSON.code == 401 && jqxhr.responseJSON.message == "Expired JWT Token") {
198
- HTTPRequest.refreshToken(URL_REFRESH, () => HTTPRequest.post(url, formData, successCallback, errorCallback, formErrorCallback));
229
+ HTTPRequest.refreshToken(() => HTTPRequest.post(url, formData, successCallback, errorCallback, formErrorCallback));
199
230
  } else if (jqxhr.status == 400 && typeof formErrorCallback != 'undefined' && formErrorCallback != null) {
200
231
  formErrorCallback(jqxhr, status, exception);
201
232
  } else {
@@ -205,16 +236,27 @@ class HTTPRequest {
205
236
  });
206
237
  }
207
238
 
208
- static refreshToken(url, onCompleteCallback) {
239
+ static refreshToken(onCompleteCallback) {
240
+ if (typeof this.refreshTokenCallback == 'function') {
241
+ this.refreshTokenCallback(onCompleteCallback);
242
+ return;
243
+ }
244
+
245
+ if (typeof this.refreshTokenUrl == 'undefined') {
246
+ console.error('URL refresh token non définie. Appeler HTTPRequest.setRefreshTokenUrl(url)');
247
+ return;
248
+ }
249
+
209
250
  let payload = new FormData();
210
251
  payload.append('refresh_token', JwtSession.getRefreshToken());
211
252
 
212
- HTTPRequest.post(url, payload,
253
+ HTTPRequest.post(this.refreshTokenUrl, payload,
213
254
  (data) => {
214
255
  JwtSession.setToken(data.token);
215
256
  JwtSession.setRefreshToken(data.refresh_token);
216
257
  onCompleteCallback();
217
- }, (jqxhr, status, exception) => {
258
+ },
259
+ (jqxhr, status, exception) => {
218
260
  console.log(exception);
219
261
  JwtSession.logout();
220
262
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osimatic/helpers-js",
3
- "version": "1.0.25",
3
+ "version": "1.0.26",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"