@osimatic/helpers-js 1.1.40 → 1.1.42
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/date_time.js +4 -4
- package/http_client.js +46 -16
- package/network.js +15 -15
- package/package.json +1 -1
package/date_time.js
CHANGED
|
@@ -91,8 +91,8 @@ class DateTime {
|
|
|
91
91
|
static getDateForInputDate(jsDate, timeZone="Europe/Paris") {
|
|
92
92
|
return this.getSqlDate(jsDate, timeZone);
|
|
93
93
|
}
|
|
94
|
-
static getTimeForInputTime(jsDate, timeZone="Europe/Paris") {
|
|
95
|
-
return jsDate.toLocaleTimeString('en-GB', {hour: 'numeric', timeZone: timeZone, hour12: false}).padStart(2, '0')+':'+jsDate.toLocaleTimeString('en-GB', {minute: 'numeric', timeZone: timeZone, hour12: false}).padStart(2, '0');
|
|
94
|
+
static getTimeForInputTime(jsDate, timeZone="Europe/Paris", withSeconds=false) {
|
|
95
|
+
return jsDate.toLocaleTimeString('en-GB', {hour: 'numeric', timeZone: timeZone, hour12: false}).padStart(2, '0')+':'+jsDate.toLocaleTimeString('en-GB', {minute: 'numeric', timeZone: timeZone, hour12: false}).padStart(2, '0')+(withSeconds?':'+jsDate.toLocaleTimeString('en-GB', {second: 'numeric', timeZone: timeZone, hour12: false}).padStart(2, '0'):'');
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
static getTimestamp(jsDate) {
|
|
@@ -362,8 +362,8 @@ class TimestampUnix {
|
|
|
362
362
|
static getDateForInputDate(timestamp, timeZone="Europe/Paris") {
|
|
363
363
|
return DateTime.getDateForInputDate(this.parse(timestamp), timeZone);
|
|
364
364
|
}
|
|
365
|
-
static getTimeForInputTime(timestamp, timeZone="Europe/Paris") {
|
|
366
|
-
return DateTime.getTimeForInputTime(this.parse(timestamp), timeZone);
|
|
365
|
+
static getTimeForInputTime(timestamp, timeZone="Europe/Paris", withSeconds=false) {
|
|
366
|
+
return DateTime.getTimeForInputTime(this.parse(timestamp), timeZone, withSeconds);
|
|
367
367
|
}
|
|
368
368
|
|
|
369
369
|
static isDateEqual(timestamp1, timestamp2) {
|
package/http_client.js
CHANGED
|
@@ -28,14 +28,14 @@ class HTTPClient {
|
|
|
28
28
|
HTTPClient.onInvalidTokenCallback = callback;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
static getHeaders(asObject) {
|
|
31
|
+
static getHeaders(asObject=false, additionalHeaders={}) {
|
|
32
32
|
HTTPClient.setAuthorizationToken(JwtSession.getToken());
|
|
33
33
|
|
|
34
34
|
if (typeof HTTPClient.headers == 'undefined') {
|
|
35
35
|
HTTPClient.headers = {};
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
if (
|
|
38
|
+
if (asObject) {
|
|
39
39
|
return HTTPClient.headers;
|
|
40
40
|
}
|
|
41
41
|
|
|
@@ -44,6 +44,12 @@ class HTTPClient {
|
|
|
44
44
|
httpHeaders.append(key, value);
|
|
45
45
|
});
|
|
46
46
|
|
|
47
|
+
if (typeof additionalHeaders == 'object') {
|
|
48
|
+
for (const [key, value] of Object.entries(additionalHeaders)) {
|
|
49
|
+
httpHeaders.append(key, value);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
47
53
|
return httpHeaders;
|
|
48
54
|
}
|
|
49
55
|
|
|
@@ -137,6 +143,18 @@ class HTTPClient {
|
|
|
137
143
|
return data;
|
|
138
144
|
}
|
|
139
145
|
|
|
146
|
+
static formatJsonData(data) {
|
|
147
|
+
if (typeof data == 'string') {
|
|
148
|
+
return data;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
let formData = HTTPClient.formatFormData(data);
|
|
152
|
+
|
|
153
|
+
let object = {};
|
|
154
|
+
formData.forEach((value, key) => object[key] = value);
|
|
155
|
+
return JSON.stringify(object);
|
|
156
|
+
}
|
|
157
|
+
|
|
140
158
|
static logRequestFailure(response, json) {
|
|
141
159
|
console.error('Request failure. Status: '+response.statusText+' ; HTTP Code : '+response.status, json);
|
|
142
160
|
}
|
|
@@ -176,7 +194,7 @@ class HTTPClient {
|
|
|
176
194
|
JwtSession.logout(HTTPClient.onInvalidTokenRedirectUrl, HTTPClient.onInvalidTokenCallback);
|
|
177
195
|
}
|
|
178
196
|
|
|
179
|
-
static async request(method, url, data, successCallback, errorCallback, formErrorCallback) {
|
|
197
|
+
static async request(method, url, data, successCallback=null, errorCallback=null, formErrorCallback=null, additionalHeaders={}) {
|
|
180
198
|
if (!window.fetch) {
|
|
181
199
|
return;
|
|
182
200
|
}
|
|
@@ -184,14 +202,20 @@ class HTTPClient {
|
|
|
184
202
|
let body = null;
|
|
185
203
|
method = method.toUpperCase();
|
|
186
204
|
|
|
187
|
-
let headers = HTTPClient.getHeaders();
|
|
205
|
+
let headers = HTTPClient.getHeaders(false, additionalHeaders);
|
|
206
|
+
|
|
188
207
|
if ('PATCH' === method) {
|
|
189
208
|
headers.append('Content-Type', 'application/x-www-form-urlencoded');
|
|
190
209
|
// 30/01/2023 : ajout encodeURIComponent() sinon les valeurs contenant des "+" pose pb (signe "+" retiré)
|
|
191
210
|
body = encodeURIComponent(new URLSearchParams(HTTPClient.formatFormData(data)).toString());
|
|
192
211
|
}
|
|
193
212
|
else if ('POST' === method) {
|
|
194
|
-
|
|
213
|
+
if (headers.get('Content-Type') === 'application/json') {
|
|
214
|
+
body = HTTPClient.formatJsonData(data);
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
body = HTTPClient.formatFormData(data);
|
|
218
|
+
}
|
|
195
219
|
}
|
|
196
220
|
else {
|
|
197
221
|
url += (!url.includes('?') ? '?' : '') + HTTPClient.formatQueryString(data);
|
|
@@ -199,11 +223,11 @@ class HTTPClient {
|
|
|
199
223
|
}
|
|
200
224
|
|
|
201
225
|
const requestOptions = {
|
|
226
|
+
method: method,
|
|
202
227
|
headers: headers,
|
|
228
|
+
body: body,
|
|
203
229
|
mode: 'cors',
|
|
204
|
-
cache: 'no-cache'
|
|
205
|
-
method,
|
|
206
|
-
body
|
|
230
|
+
cache: 'no-cache'
|
|
207
231
|
}
|
|
208
232
|
|
|
209
233
|
const response = await fetch(url, requestOptions);
|
|
@@ -215,7 +239,7 @@ class HTTPClient {
|
|
|
215
239
|
}
|
|
216
240
|
|
|
217
241
|
if (HTTPClient.isExpiredToken(response, jsonData)) {
|
|
218
|
-
HTTPClient.refreshToken(() => HTTPClient.request(method, url, data, successCallback, errorCallback, formErrorCallback), errorCallback);
|
|
242
|
+
HTTPClient.refreshToken(() => HTTPClient.request(method, url, data, successCallback, errorCallback, formErrorCallback, additionalHeaders), errorCallback);
|
|
219
243
|
return;
|
|
220
244
|
}
|
|
221
245
|
|
|
@@ -250,15 +274,16 @@ class HTTPClient {
|
|
|
250
274
|
}
|
|
251
275
|
}
|
|
252
276
|
|
|
253
|
-
static download(method, url, data, errorCallback, completeCallback) {
|
|
277
|
+
static download(method, url, data, errorCallback=null, completeCallback=null, additionalHeaders={}) {
|
|
254
278
|
HTTPClient.requestBlob(method, url, data,
|
|
255
279
|
(blobData, response) => File.download(blobData, response.headers.get('content-type'), response.headers.get('content-disposition')),
|
|
256
280
|
errorCallback,
|
|
257
|
-
completeCallback
|
|
281
|
+
completeCallback,
|
|
282
|
+
additionalHeaders
|
|
258
283
|
);
|
|
259
284
|
}
|
|
260
285
|
|
|
261
|
-
static async requestBlob(method, url, data, successCallback, errorCallback, completeCallback) {
|
|
286
|
+
static async requestBlob(method, url, data, successCallback=null, errorCallback=null, completeCallback=null, additionalHeaders={}) {
|
|
262
287
|
if (!window.fetch) {
|
|
263
288
|
return;
|
|
264
289
|
}
|
|
@@ -266,13 +291,18 @@ class HTTPClient {
|
|
|
266
291
|
let body = null;
|
|
267
292
|
method = method.toUpperCase();
|
|
268
293
|
|
|
269
|
-
let headers = HTTPClient.getHeaders();
|
|
294
|
+
let headers = HTTPClient.getHeaders(false, additionalHeaders);
|
|
270
295
|
if ('PATCH' === method) {
|
|
271
296
|
headers.append('Content-Type', 'application/x-www-form-urlencoded');
|
|
272
297
|
body = encodeURIComponent(new URLSearchParams(HTTPClient.formatFormData(data)).toString());
|
|
273
298
|
}
|
|
274
299
|
else if ('POST' === method) {
|
|
275
|
-
|
|
300
|
+
if (headers.get('Content-Type') === 'application/json') {
|
|
301
|
+
body = HTTPClient.formatJsonData(data);
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
body = HTTPClient.formatFormData(data);
|
|
305
|
+
}
|
|
276
306
|
}
|
|
277
307
|
else {
|
|
278
308
|
url += (!url.includes('?') ? '?' : '') + HTTPClient.formatQueryString(data);
|
|
@@ -290,7 +320,7 @@ class HTTPClient {
|
|
|
290
320
|
const response = await fetch(url, requestOptions);
|
|
291
321
|
try {
|
|
292
322
|
if (response.status === 401 && response.statusText === 'Expired JWT Token') {
|
|
293
|
-
HTTPClient.refreshToken(() => HTTPClient.requestBlob(method, url, data, successCallback, errorCallback, completeCallback), errorCallback);
|
|
323
|
+
HTTPClient.refreshToken(() => HTTPClient.requestBlob(method, url, data, successCallback, errorCallback, completeCallback, additionalHeaders), errorCallback);
|
|
294
324
|
return;
|
|
295
325
|
}
|
|
296
326
|
|
|
@@ -323,7 +353,7 @@ class HTTPClient {
|
|
|
323
353
|
}
|
|
324
354
|
}
|
|
325
355
|
|
|
326
|
-
static refreshToken(completeCallback, errorCallback) {
|
|
356
|
+
static refreshToken(completeCallback, errorCallback=null) {
|
|
327
357
|
if (typeof HTTPClient.listCompleteCallbackAfterRefreshTokenFinished == 'undefined') {
|
|
328
358
|
HTTPClient.listCompleteCallbackAfterRefreshTokenFinished = [];
|
|
329
359
|
}
|
package/network.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
class Cookie {
|
|
2
|
-
static set(
|
|
3
|
-
|
|
4
|
-
d.setTime(d.getTime() + (
|
|
5
|
-
|
|
6
|
-
document.cookie =
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
static get(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
for (
|
|
14
|
-
|
|
2
|
+
static set(name, value, nbValidityDays=30) {
|
|
3
|
+
let d = new Date();
|
|
4
|
+
d.setTime(d.getTime() + (nbValidityDays * 24 * 60 * 60 * 1000));
|
|
5
|
+
let expires = "expires=" + d.toUTCString();
|
|
6
|
+
document.cookie = name + "=" + value + ";" + expires + ";path=/";
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
static get(name) {
|
|
10
|
+
let nameWithSeparator = name + "=";
|
|
11
|
+
let decodedCookie = decodeURIComponent(document.cookie);
|
|
12
|
+
let ca = decodedCookie.split(';');
|
|
13
|
+
for (let i = 0; i < ca.length; i++) {
|
|
14
|
+
let c = ca[i];
|
|
15
15
|
while (c.charAt(0) == ' ') {
|
|
16
16
|
c = c.substring(1);
|
|
17
17
|
}
|
|
18
|
-
if (c.indexOf(
|
|
19
|
-
return c.substring(
|
|
18
|
+
if (c.indexOf(nameWithSeparator) === 0) {
|
|
19
|
+
return c.substring(nameWithSeparator.length, c.length);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
return null;
|