@osimatic/helpers-js 1.0.106 → 1.0.107
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 +4 -1
- package/data_table.js +1 -1
- package/network.js +399 -381
- package/package.json +1 -1
package/CHANGELOG
CHANGED
|
@@ -56,4 +56,7 @@ var intlTelInputUtilsPath = 'xxx'; -> TelephoneNumber.setIntlTelInputUtilsPath('
|
|
|
56
56
|
1.0.99
|
|
57
57
|
JwtSession.isSimulationConnexion() -> JwtSession.simulateLogin() (fonctionnement différent)
|
|
58
58
|
JwtSession.cancelSimulationConnexion() -> JwtSession.cancelSimulatedLogin() (fonctionnement différent)
|
|
59
|
-
HTTPRequest -> HTTPClient
|
|
59
|
+
HTTPRequest -> HTTPClient
|
|
60
|
+
|
|
61
|
+
1.0.106
|
|
62
|
+
UrlAndQueryString.getPath() -> UrlAndQueryString.getHostAndPath()
|
package/data_table.js
CHANGED
|
@@ -204,7 +204,7 @@ class DataTable {
|
|
|
204
204
|
queryString = queryString.includes('?') ? queryString.substring(1) : queryString;
|
|
205
205
|
//console.log('new queryString', queryString);
|
|
206
206
|
|
|
207
|
-
let newUrl = UrlAndQueryString.
|
|
207
|
+
let newUrl = UrlAndQueryString.getHostAndPath(url) + '?' + queryString;
|
|
208
208
|
window.history.pushState("", "", newUrl);
|
|
209
209
|
}
|
|
210
210
|
|
package/network.js
CHANGED
|
@@ -1,131 +1,442 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
class Cookie {
|
|
2
|
+
static set(cname, cvalue, exdays) {
|
|
3
|
+
var d = new Date();
|
|
4
|
+
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
|
|
5
|
+
var expires = "expires=" + d.toUTCString();
|
|
6
|
+
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
|
|
5
7
|
}
|
|
6
8
|
|
|
7
|
-
static
|
|
8
|
-
|
|
9
|
+
static get(cname) {
|
|
10
|
+
var name = cname + "=";
|
|
11
|
+
var decodedCookie = decodeURIComponent(document.cookie);
|
|
12
|
+
var ca = decodedCookie.split(';');
|
|
13
|
+
for (var i = 0; i < ca.length; i++) {
|
|
14
|
+
var c = ca[i];
|
|
15
|
+
while (c.charAt(0) == ' ') {
|
|
16
|
+
c = c.substring(1);
|
|
17
|
+
}
|
|
18
|
+
if (c.indexOf(name) === 0) {
|
|
19
|
+
return c.substring(name.length, c.length);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
9
23
|
}
|
|
10
24
|
|
|
11
|
-
static
|
|
12
|
-
|
|
25
|
+
static erase(name) {
|
|
26
|
+
Cookie.set(name, "", -1);
|
|
13
27
|
}
|
|
28
|
+
}
|
|
14
29
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
30
|
+
class UrlAndQueryString {
|
|
31
|
+
static displayUrl(url, withLink) {
|
|
32
|
+
return '<a href="'+url+'">'+UrlAndQueryString.getHost(url, false)+'</a>';
|
|
33
|
+
}
|
|
19
34
|
|
|
20
|
-
|
|
21
|
-
|
|
35
|
+
static getHost(url, withProtocol) {
|
|
36
|
+
withProtocol = typeof withProtocol == 'undefined' ? true : withProtocol;
|
|
37
|
+
if (typeof url == 'undefined') {
|
|
38
|
+
return withProtocol ? window.location.origin : window.location.host;
|
|
22
39
|
}
|
|
40
|
+
url = new URL(url);
|
|
41
|
+
return (withProtocol?url.protocol+'//':'') + url.host;
|
|
42
|
+
}
|
|
23
43
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
return
|
|
44
|
+
static getPath(url) {
|
|
45
|
+
if (typeof url == 'undefined') {
|
|
46
|
+
return window.location.pathname;
|
|
47
|
+
}
|
|
48
|
+
url = new URL(url);
|
|
49
|
+
return url.pathname;
|
|
30
50
|
}
|
|
31
51
|
|
|
32
|
-
static
|
|
33
|
-
if (typeof
|
|
34
|
-
|
|
52
|
+
static getQueryString(url) {
|
|
53
|
+
if (typeof url == 'undefined') {
|
|
54
|
+
return window.location.search;
|
|
35
55
|
}
|
|
56
|
+
url = new URL(url);
|
|
57
|
+
return url.search;
|
|
58
|
+
}
|
|
36
59
|
|
|
37
|
-
|
|
60
|
+
static getHostAndPath(url, withProtocol) {
|
|
61
|
+
return UrlAndQueryString.getHost(url, withProtocol) + UrlAndQueryString.getPath(url);
|
|
62
|
+
|
|
63
|
+
//let strpos = url.indexOf('?');
|
|
64
|
+
//if (strpos === -1) {
|
|
65
|
+
// return url;
|
|
66
|
+
//}
|
|
67
|
+
//return url.substr(0, strpos);
|
|
38
68
|
}
|
|
39
69
|
|
|
40
|
-
static
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
this.headers[key] = value;
|
|
70
|
+
static getParam(key, url) {
|
|
71
|
+
let searchParams = new URLSearchParams(UrlAndQueryString.getQueryString(url));
|
|
72
|
+
return searchParams.get(key);
|
|
46
73
|
}
|
|
47
74
|
|
|
48
|
-
static
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
75
|
+
static setParam(queryString, name, value) {
|
|
76
|
+
// cette solution ne fonctionne pas avec les tableau
|
|
77
|
+
//let params = new URLSearchParams(queryString);
|
|
78
|
+
//params.set(name, value);
|
|
79
|
+
//return params.toString();
|
|
52
80
|
|
|
53
|
-
|
|
81
|
+
let params = UrlAndQueryString.parseQuery(queryString);
|
|
82
|
+
//console.log(params);
|
|
83
|
+
params[name] = value;
|
|
84
|
+
return decodeURI($.param(params));
|
|
85
|
+
}
|
|
86
|
+
static setParamOfUrl(name, value, url) {
|
|
87
|
+
let queryString = UrlAndQueryString.setParam(UrlAndQueryString.getQueryString(url), name, value);
|
|
88
|
+
return UrlAndQueryString.getHostAndPath(url) + '?' + queryString;
|
|
54
89
|
}
|
|
55
90
|
|
|
56
|
-
static
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
// return formData;
|
|
91
|
+
static deleteParam(queryString, name) {
|
|
92
|
+
let params = new URLSearchParams(queryString);
|
|
93
|
+
params.delete(name);
|
|
94
|
+
return decodeURI(params.toString());
|
|
61
95
|
|
|
62
|
-
|
|
96
|
+
//let params = UrlAndQueryString.parseQuery(queryString);
|
|
97
|
+
//params[name] = null;
|
|
98
|
+
//return $.param(params);
|
|
99
|
+
}
|
|
100
|
+
static deleteParamOfUrl(name, url) {
|
|
101
|
+
let queryString = UrlAndQueryString.deleteParam(UrlAndQueryString.getQueryString(url), name);
|
|
102
|
+
return UrlAndQueryString.getHostAndPath(url) + '?' + queryString;
|
|
103
|
+
}
|
|
104
|
+
static deleteParamsOfUrl(names, url) {
|
|
105
|
+
let queryString = UrlAndQueryString.getQueryString(url);
|
|
106
|
+
names.forEach((name => queryString = UrlAndQueryString.deleteParam(queryString, name)));
|
|
107
|
+
return UrlAndQueryString.getHostAndPath(url) + '?' + queryString;
|
|
108
|
+
}
|
|
63
109
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
110
|
+
static parseQuery(queryString) {
|
|
111
|
+
var params = {};
|
|
112
|
+
|
|
113
|
+
function buildParamFromString(param) {
|
|
114
|
+
var p = decodeURIComponent(param);
|
|
115
|
+
var strpos = p.indexOf('=');
|
|
116
|
+
// Si on trouve pas de signe =, on met la valeur ''
|
|
117
|
+
if (strpos === -1) {
|
|
118
|
+
params[p] = '';
|
|
119
|
+
//params.length++;
|
|
120
|
+
return true;
|
|
69
121
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
122
|
+
var name = p.substr(0, strpos);
|
|
123
|
+
var value = p.substr(strpos + 1, p.length);
|
|
124
|
+
var openBracket = name.indexOf('[');
|
|
125
|
+
var closeBracket = name.indexOf(']');
|
|
126
|
+
// On traite les paramètre qui ne sont pas sous forme de tableau
|
|
127
|
+
if (openBracket === -1 || closeBracket === -1) {
|
|
128
|
+
if (!(openBracket === -1 && closeBracket === -1)) {
|
|
129
|
+
name = name.replace(new RegExp('[\\[\\]]'), '_');
|
|
73
130
|
}
|
|
131
|
+
params[name] = value;
|
|
132
|
+
return true;
|
|
74
133
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
134
|
+
var matches = name.match(new RegExp('\\[.*?\\]', 'g'));
|
|
135
|
+
name = name.substr(0, openBracket);
|
|
136
|
+
p = 'params';
|
|
137
|
+
var key = name;
|
|
138
|
+
for (let i in matches) {
|
|
139
|
+
if (typeof (matches[i]) == 'function') {
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
p += '[\'' + key + '\']';
|
|
144
|
+
if (eval(p) == undefined || typeof (eval(p)) != 'object') {
|
|
145
|
+
eval(p + '= new Array();');
|
|
146
|
+
}
|
|
147
|
+
key = matches[i].substr(1, matches[i].length - 2);
|
|
148
|
+
// si la clé est null on met la longueur du tableau
|
|
149
|
+
if (key == '') {
|
|
150
|
+
key = eval(p).length;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/*
|
|
154
|
+
p += '[\''+key+'\']';
|
|
155
|
+
if(eval(p) == undefined || typeof(eval(p)) != 'object') {
|
|
156
|
+
eval(p +'= new Array();');
|
|
157
|
+
}
|
|
158
|
+
if (typeof(matches[i]) != 'function') {
|
|
159
|
+
key = matches[i].substr(1,matches[i].length-2);
|
|
160
|
+
// si la clé est null on met la longueur du tableau
|
|
161
|
+
if (key == '') {
|
|
162
|
+
key = eval(p).length;
|
|
83
163
|
}
|
|
84
164
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
if (data !== null && typeof data !== 'undefined') {
|
|
88
|
-
formData.append(root, data);
|
|
165
|
+
else {
|
|
166
|
+
key = eval(p).length;
|
|
89
167
|
}
|
|
168
|
+
*/
|
|
90
169
|
}
|
|
170
|
+
p += '[\'' + key + '\']';
|
|
171
|
+
eval(p + '= \'' + value + '\';');
|
|
91
172
|
}
|
|
92
173
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
static formatQueryString(data) {
|
|
99
|
-
if (data == null) {
|
|
100
|
-
return '';
|
|
174
|
+
var str = queryString;
|
|
175
|
+
if (str.includes('?')) {
|
|
176
|
+
str = str.substring(1);
|
|
101
177
|
}
|
|
102
|
-
if (
|
|
103
|
-
|
|
178
|
+
if (str === '') {
|
|
179
|
+
return {};
|
|
104
180
|
}
|
|
105
|
-
|
|
106
|
-
|
|
181
|
+
str = str.replace(new RegExp('&'), '&');
|
|
182
|
+
//params.length = 0;
|
|
183
|
+
str = str.split('&');
|
|
184
|
+
//var p = '';
|
|
185
|
+
//var startPos = -1;
|
|
186
|
+
//var endPos = -1;
|
|
187
|
+
//var arrayName = '';
|
|
188
|
+
//var arrayKey = '';
|
|
189
|
+
for (let i = 0; i < str.length; i++) {
|
|
190
|
+
buildParamFromString(str[i]);
|
|
107
191
|
}
|
|
108
|
-
return
|
|
192
|
+
// return JSON.parse(JSON.stringify(this.params));
|
|
193
|
+
return params;
|
|
109
194
|
}
|
|
110
195
|
|
|
111
|
-
static
|
|
112
|
-
|
|
113
|
-
|
|
196
|
+
static buildQuery(object) {
|
|
197
|
+
var params = [];
|
|
198
|
+
|
|
199
|
+
function buildStringFromParam(object, prefix) {
|
|
200
|
+
var p = '';
|
|
201
|
+
var value = '';
|
|
202
|
+
if (prefix !== undefined) {
|
|
203
|
+
p = prefix;
|
|
204
|
+
}
|
|
205
|
+
if (typeof (object) == 'object') {
|
|
206
|
+
for (var name in object) {
|
|
207
|
+
value = object[name];
|
|
208
|
+
// 06/06/2022 : ajout de ce if pour éviter bug sur fonction HTTPRequest.formatQueryString
|
|
209
|
+
if (typeof (value) == 'undefined') {
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
// 14/01/2020 : les tableaux avec param[0], param[1] en query string fonctionne pas, il faut mettre param[]=x¶m[]=y
|
|
213
|
+
//name = p == '' ? name : '['+name+']';
|
|
214
|
+
name = p == '' ? name : '[]';
|
|
215
|
+
if (typeof (value) == 'object') {
|
|
216
|
+
buildStringFromParam(value, p + name);
|
|
217
|
+
}
|
|
218
|
+
// 06/06/2022 : ajout null !== value pour éviter bug sur fonction HTTPRequest.formatQueryString
|
|
219
|
+
else if (null !== value && typeof (value) != 'function' && name != '') {
|
|
220
|
+
// 27/01/2020 : correction bug boolean affiché en string true/false
|
|
221
|
+
if (typeof (value) == 'boolean') {
|
|
222
|
+
value = (value ? 1 : 0);
|
|
223
|
+
}
|
|
224
|
+
params[params.length] = p + name + '=' + value;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
114
228
|
}
|
|
115
|
-
return data;
|
|
116
|
-
}
|
|
117
229
|
|
|
118
|
-
|
|
119
|
-
|
|
230
|
+
buildStringFromParam(object);
|
|
231
|
+
return params.join('&');
|
|
120
232
|
}
|
|
121
233
|
|
|
122
|
-
static logJqueryRequestFailure(jqxhr, status, errorThrown) {
|
|
123
|
-
console.error('Request failure. Status: '+status+' ; HTTP Code: '+jqxhr.status+(null!=errorThrown && ''!==errorThrown ? ' ; Error message: '+errorThrown : ''), jqxhr.responseJSON);
|
|
124
|
-
}
|
|
125
234
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
// deprecated
|
|
253
|
+
|
|
254
|
+
/** @deprecated **/
|
|
255
|
+
static parseQueryString(string) {
|
|
256
|
+
if (string === "" || string == null) return {};
|
|
257
|
+
if (string.charAt(0) === "?") string = string.slice(1);
|
|
258
|
+
var entries = string.split("&"), counters = {}, data0 = {};
|
|
259
|
+
for (var i = 0; i < entries.length; i++) {
|
|
260
|
+
var entry = entries[i].split("=");
|
|
261
|
+
var key5 = decodeURIComponent(entry[0]);
|
|
262
|
+
var value2 = entry.length === 2 ? decodeURIComponent(entry[1]) : "";
|
|
263
|
+
if (value2 === "true") value2 = true;
|
|
264
|
+
else if (value2 === "false") value2 = false;
|
|
265
|
+
var levels = key5.split(/\]\[?|\[/);
|
|
266
|
+
var cursor = data0;
|
|
267
|
+
if (key5.indexOf("[") > -1) levels.pop();
|
|
268
|
+
for (var j0 = 0; j0 < levels.length; j0++) {
|
|
269
|
+
var level = levels[j0], nextLevel = levels[j0 + 1];
|
|
270
|
+
var isNumber = nextLevel == "" || !isNaN(parseInt(nextLevel, 10));
|
|
271
|
+
if (level === "") {
|
|
272
|
+
var key5 = levels.slice(0, j0).join();
|
|
273
|
+
if (counters[key5] == null) {
|
|
274
|
+
counters[key5] = Array.isArray(cursor) ? cursor.length : 0;
|
|
275
|
+
}
|
|
276
|
+
level = counters[key5]++;
|
|
277
|
+
}
|
|
278
|
+
// Disallow direct prototype pollution
|
|
279
|
+
else if (level === "__proto__") break;
|
|
280
|
+
if (j0 === levels.length - 1) cursor[level] = value2;
|
|
281
|
+
else {
|
|
282
|
+
// Read own properties exclusively to disallow indirect
|
|
283
|
+
// prototype pollution
|
|
284
|
+
var desc = Object.getOwnPropertyDescriptor(cursor, level);
|
|
285
|
+
if (desc != null) desc = desc.value;
|
|
286
|
+
if (desc == null) cursor[level] = desc = isNumber ? [] : {};
|
|
287
|
+
cursor = desc;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
return data0;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/** @deprecated **/
|
|
295
|
+
static getQuery(url) {
|
|
296
|
+
var str = url;
|
|
297
|
+
var strpos = str.indexOf('?');
|
|
298
|
+
// Si on ne trouve pas de queryString on retourne une chaine vide
|
|
299
|
+
if (strpos === -1) {
|
|
300
|
+
return '';
|
|
301
|
+
}
|
|
302
|
+
str = str.substr(strpos + 1, str.length);
|
|
303
|
+
// Maintenant on verifie si on a une anchor ou pas (#) et si c'est le cas on arrete la querystring avant
|
|
304
|
+
strpos = str.indexOf('#');
|
|
305
|
+
if (strpos === -1) {
|
|
306
|
+
return str;
|
|
307
|
+
}
|
|
308
|
+
return str.substr(0, strpos);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
}
|
|
312
|
+
/** @deprecated */
|
|
313
|
+
class HTTPRequest {
|
|
314
|
+
static init() {
|
|
315
|
+
require('whatwg-fetch'); //fetch polyfill loaded in window.fetch
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
static setRefreshTokenUrl(url) {
|
|
319
|
+
this.refreshTokenUrl = url;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
static setRefreshTokenCallback(callback) {
|
|
323
|
+
this.refreshTokenCallback = callback;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
static getHeaders(asObject) {
|
|
327
|
+
if (typeof this.headers == 'undefined') {
|
|
328
|
+
this.headers = {};
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
if (typeof asObject != 'undefined' && asObject) {
|
|
332
|
+
return this.headers;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
let httpHeaders = new Headers();
|
|
336
|
+
Object.entries(this.headers).forEach(([key, value]) => {
|
|
337
|
+
httpHeaders.append(key, value);
|
|
338
|
+
});
|
|
339
|
+
|
|
340
|
+
return httpHeaders;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
static getHeader(key) {
|
|
344
|
+
if (typeof this.headers == 'undefined') {
|
|
345
|
+
this.headers = {};
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
return this.headers[key];
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
static setHeader(key, value) {
|
|
352
|
+
if (typeof this.headers == 'undefined') {
|
|
353
|
+
this.headers = {};
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
this.headers[key] = value;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
static setAuthorizationHeader(accessToken) {
|
|
360
|
+
if (typeof this.headers == 'undefined') {
|
|
361
|
+
this.headers = {};
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
this.headers['Authorization'] = 'Bearer ' + accessToken;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
static convertObjectToFormData(obj) {
|
|
368
|
+
// 30/05/2022 : ancienne version, qui ne fonctionne pas avec des tableaux
|
|
369
|
+
// let formData = new FormData();
|
|
370
|
+
// Object.entries(data).forEach(([key, value]) => formData.append(key, value));
|
|
371
|
+
// return formData;
|
|
372
|
+
|
|
373
|
+
var formData = new FormData();
|
|
374
|
+
|
|
375
|
+
function appendFormData(data, root) {
|
|
376
|
+
//console.log('appendFormData', data, root);
|
|
377
|
+
root = root || '';
|
|
378
|
+
if (data instanceof File) {
|
|
379
|
+
formData.append(root, data);
|
|
380
|
+
}
|
|
381
|
+
else if (Array.isArray(data)) {
|
|
382
|
+
for (var i = 0; i < data.length; i++) {
|
|
383
|
+
appendFormData(data[i], root + '[' + i + ']');
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
else if (typeof data === 'object' && data) {
|
|
387
|
+
for (var key in data) {
|
|
388
|
+
if (data.hasOwnProperty(key)) {
|
|
389
|
+
if (root === '') {
|
|
390
|
+
appendFormData(data[key], key);
|
|
391
|
+
} else {
|
|
392
|
+
appendFormData(data[key], root + '.' + key);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
if (data !== null && typeof data !== 'undefined') {
|
|
399
|
+
formData.append(root, data);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
appendFormData(obj);
|
|
405
|
+
|
|
406
|
+
return formData;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
static formatQueryString(data) {
|
|
410
|
+
if (data == null) {
|
|
411
|
+
return '';
|
|
412
|
+
}
|
|
413
|
+
if (typeof data == 'object') {
|
|
414
|
+
data = UrlAndQueryString.buildQuery(data);
|
|
415
|
+
}
|
|
416
|
+
if (data !== '' && data.substring(0, 1) !== '&') {
|
|
417
|
+
data = '&' + data;
|
|
418
|
+
}
|
|
419
|
+
return data;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
static formatFormData(data) {
|
|
423
|
+
if (!(data instanceof FormData)) {
|
|
424
|
+
return HTTPRequest.convertObjectToFormData(data);
|
|
425
|
+
}
|
|
426
|
+
return data;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
static logRequestFailure(response, json) {
|
|
430
|
+
console.error('Request failure. Status: '+response.statusText+' ; HTTP Code : '+response.status, json);
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
static logJqueryRequestFailure(jqxhr, status, errorThrown) {
|
|
434
|
+
console.error('Request failure. Status: '+status+' ; HTTP Code: '+jqxhr.status+(null!=errorThrown && ''!==errorThrown ? ' ; Error message: '+errorThrown : ''), jqxhr.responseJSON);
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
static isExpiredToken(response, json) {
|
|
438
|
+
if (response.status !== 401) {
|
|
439
|
+
return false;
|
|
129
440
|
}
|
|
130
441
|
|
|
131
442
|
return (
|
|
@@ -400,7 +711,7 @@ class HTTPRequest {
|
|
|
400
711
|
HTTPRequest.setAuthorizationHeader(JwtSession.getToken());
|
|
401
712
|
|
|
402
713
|
onCompleteCallback();
|
|
403
|
-
},
|
|
714
|
+
},
|
|
404
715
|
() => {
|
|
405
716
|
JwtSession.logout();
|
|
406
717
|
errorCallback();
|
|
@@ -451,297 +762,4 @@ class HTTPRequest {
|
|
|
451
762
|
}
|
|
452
763
|
}
|
|
453
764
|
|
|
454
|
-
class Cookie {
|
|
455
|
-
static set(cname, cvalue, exdays) {
|
|
456
|
-
var d = new Date();
|
|
457
|
-
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
|
|
458
|
-
var expires = "expires=" + d.toUTCString();
|
|
459
|
-
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
static get(cname) {
|
|
463
|
-
var name = cname + "=";
|
|
464
|
-
var decodedCookie = decodeURIComponent(document.cookie);
|
|
465
|
-
var ca = decodedCookie.split(';');
|
|
466
|
-
for (var i = 0; i < ca.length; i++) {
|
|
467
|
-
var c = ca[i];
|
|
468
|
-
while (c.charAt(0) == ' ') {
|
|
469
|
-
c = c.substring(1);
|
|
470
|
-
}
|
|
471
|
-
if (c.indexOf(name) === 0) {
|
|
472
|
-
return c.substring(name.length, c.length);
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
return null;
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
static erase(name) {
|
|
479
|
-
Cookie.set(name, "", -1);
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
|
|
483
|
-
class UrlAndQueryString {
|
|
484
|
-
static getPath(url) {
|
|
485
|
-
if (typeof url == 'undefined') {
|
|
486
|
-
return window.location.origin + window.location.pathname;
|
|
487
|
-
}
|
|
488
|
-
let strpos = url.indexOf('?');
|
|
489
|
-
// Si on ne trouve pas de queryString on retourne une chaine vide
|
|
490
|
-
if (strpos === -1) {
|
|
491
|
-
return url;
|
|
492
|
-
}
|
|
493
|
-
return url.substr(0, strpos);
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
static getQueryString(url) {
|
|
497
|
-
if (typeof url == 'undefined') {
|
|
498
|
-
return window.location.search;
|
|
499
|
-
}
|
|
500
|
-
let urlObj = new URL(url);
|
|
501
|
-
return urlObj.search;
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
static getParam(key, url) {
|
|
505
|
-
var searchParams = new URLSearchParams(UrlAndQueryString.getQueryString(url));
|
|
506
|
-
return searchParams.get(key);
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
static setParam(queryString, name, value) {
|
|
510
|
-
// cette solution ne fonctionne pas avec les tableau
|
|
511
|
-
//let params = new URLSearchParams(queryString);
|
|
512
|
-
//params.set(name, value);
|
|
513
|
-
//return params.toString();
|
|
514
|
-
|
|
515
|
-
let params = UrlAndQueryString.parseQuery(queryString);
|
|
516
|
-
//console.log(params);
|
|
517
|
-
params[name] = value;
|
|
518
|
-
return decodeURI($.param(params));
|
|
519
|
-
}
|
|
520
|
-
static setParamOfUrl(name, value, url) {
|
|
521
|
-
let queryString = UrlAndQueryString.setParam(UrlAndQueryString.getQueryString(url), name, value);
|
|
522
|
-
return UrlAndQueryString.getPath(url) + '?' + queryString;
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
static deleteParam(queryString, name) {
|
|
526
|
-
let params = new URLSearchParams(queryString);
|
|
527
|
-
params.delete(name);
|
|
528
|
-
return decodeURI(params.toString());
|
|
529
|
-
|
|
530
|
-
//let params = UrlAndQueryString.parseQuery(queryString);
|
|
531
|
-
//params[name] = null;
|
|
532
|
-
//return $.param(params);
|
|
533
|
-
}
|
|
534
|
-
static deleteParamOfUrl(name, url) {
|
|
535
|
-
let queryString = UrlAndQueryString.deleteParam(UrlAndQueryString.getQueryString(url), name);
|
|
536
|
-
return UrlAndQueryString.getPath(url) + '?' + queryString;
|
|
537
|
-
}
|
|
538
|
-
static deleteParamsOfUrl(names, url) {
|
|
539
|
-
let queryString = UrlAndQueryString.getQueryString(url);
|
|
540
|
-
names.forEach((name => queryString = UrlAndQueryString.deleteParam(queryString, name)));
|
|
541
|
-
return UrlAndQueryString.getPath(url) + '?' + queryString;
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
static parseQuery(queryString) {
|
|
545
|
-
var params = {};
|
|
546
|
-
|
|
547
|
-
function buildParamFromString(param) {
|
|
548
|
-
var p = decodeURIComponent(param);
|
|
549
|
-
var strpos = p.indexOf('=');
|
|
550
|
-
// Si on trouve pas de signe =, on met la valeur ''
|
|
551
|
-
if (strpos === -1) {
|
|
552
|
-
params[p] = '';
|
|
553
|
-
//params.length++;
|
|
554
|
-
return true;
|
|
555
|
-
}
|
|
556
|
-
var name = p.substr(0, strpos);
|
|
557
|
-
var value = p.substr(strpos + 1, p.length);
|
|
558
|
-
var openBracket = name.indexOf('[');
|
|
559
|
-
var closeBracket = name.indexOf(']');
|
|
560
|
-
// On traite les paramètre qui ne sont pas sous forme de tableau
|
|
561
|
-
if (openBracket === -1 || closeBracket === -1) {
|
|
562
|
-
if (!(openBracket === -1 && closeBracket === -1)) {
|
|
563
|
-
name = name.replace(new RegExp('[\\[\\]]'), '_');
|
|
564
|
-
}
|
|
565
|
-
params[name] = value;
|
|
566
|
-
return true;
|
|
567
|
-
}
|
|
568
|
-
var matches = name.match(new RegExp('\\[.*?\\]', 'g'));
|
|
569
|
-
name = name.substr(0, openBracket);
|
|
570
|
-
p = 'params';
|
|
571
|
-
var key = name;
|
|
572
|
-
for (let i in matches) {
|
|
573
|
-
if (typeof (matches[i]) == 'function') {
|
|
574
|
-
continue;
|
|
575
|
-
}
|
|
576
|
-
|
|
577
|
-
p += '[\'' + key + '\']';
|
|
578
|
-
if (eval(p) == undefined || typeof (eval(p)) != 'object') {
|
|
579
|
-
eval(p + '= new Array();');
|
|
580
|
-
}
|
|
581
|
-
key = matches[i].substr(1, matches[i].length - 2);
|
|
582
|
-
// si la clé est null on met la longueur du tableau
|
|
583
|
-
if (key == '') {
|
|
584
|
-
key = eval(p).length;
|
|
585
|
-
}
|
|
586
|
-
|
|
587
|
-
/*
|
|
588
|
-
p += '[\''+key+'\']';
|
|
589
|
-
if(eval(p) == undefined || typeof(eval(p)) != 'object') {
|
|
590
|
-
eval(p +'= new Array();');
|
|
591
|
-
}
|
|
592
|
-
if (typeof(matches[i]) != 'function') {
|
|
593
|
-
key = matches[i].substr(1,matches[i].length-2);
|
|
594
|
-
// si la clé est null on met la longueur du tableau
|
|
595
|
-
if (key == '') {
|
|
596
|
-
key = eval(p).length;
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
else {
|
|
600
|
-
key = eval(p).length;
|
|
601
|
-
}
|
|
602
|
-
*/
|
|
603
|
-
}
|
|
604
|
-
p += '[\'' + key + '\']';
|
|
605
|
-
eval(p + '= \'' + value + '\';');
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
var str = queryString;
|
|
609
|
-
if (str.includes('?')) {
|
|
610
|
-
str = str.substring(1);
|
|
611
|
-
}
|
|
612
|
-
if (str === '') {
|
|
613
|
-
return {};
|
|
614
|
-
}
|
|
615
|
-
str = str.replace(new RegExp('&'), '&');
|
|
616
|
-
//params.length = 0;
|
|
617
|
-
str = str.split('&');
|
|
618
|
-
//var p = '';
|
|
619
|
-
//var startPos = -1;
|
|
620
|
-
//var endPos = -1;
|
|
621
|
-
//var arrayName = '';
|
|
622
|
-
//var arrayKey = '';
|
|
623
|
-
for (let i = 0; i < str.length; i++) {
|
|
624
|
-
buildParamFromString(str[i]);
|
|
625
|
-
}
|
|
626
|
-
// return JSON.parse(JSON.stringify(this.params));
|
|
627
|
-
return params;
|
|
628
|
-
}
|
|
629
|
-
|
|
630
|
-
static buildQuery(object) {
|
|
631
|
-
var params = [];
|
|
632
|
-
|
|
633
|
-
function buildStringFromParam(object, prefix) {
|
|
634
|
-
var p = '';
|
|
635
|
-
var value = '';
|
|
636
|
-
if (prefix !== undefined) {
|
|
637
|
-
p = prefix;
|
|
638
|
-
}
|
|
639
|
-
if (typeof (object) == 'object') {
|
|
640
|
-
for (var name in object) {
|
|
641
|
-
value = object[name];
|
|
642
|
-
// 06/06/2022 : ajout de ce if pour éviter bug sur fonction HTTPRequest.formatQueryString
|
|
643
|
-
if (typeof (value) == 'undefined') {
|
|
644
|
-
continue;
|
|
645
|
-
}
|
|
646
|
-
// 14/01/2020 : les tableaux avec param[0], param[1] en query string fonctionne pas, il faut mettre param[]=x¶m[]=y
|
|
647
|
-
//name = p == '' ? name : '['+name+']';
|
|
648
|
-
name = p == '' ? name : '[]';
|
|
649
|
-
if (typeof (value) == 'object') {
|
|
650
|
-
buildStringFromParam(value, p + name);
|
|
651
|
-
}
|
|
652
|
-
// 06/06/2022 : ajout null !== value pour éviter bug sur fonction HTTPRequest.formatQueryString
|
|
653
|
-
else if (null !== value && typeof (value) != 'function' && name != '') {
|
|
654
|
-
// 27/01/2020 : correction bug boolean affiché en string true/false
|
|
655
|
-
if (typeof (value) == 'boolean') {
|
|
656
|
-
value = (value ? 1 : 0);
|
|
657
|
-
}
|
|
658
|
-
params[params.length] = p + name + '=' + value;
|
|
659
|
-
}
|
|
660
|
-
}
|
|
661
|
-
}
|
|
662
|
-
}
|
|
663
|
-
|
|
664
|
-
buildStringFromParam(object);
|
|
665
|
-
return params.join('&');
|
|
666
|
-
}
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
// deprecated
|
|
687
|
-
|
|
688
|
-
/** @deprecated **/
|
|
689
|
-
static parseQueryString(string) {
|
|
690
|
-
if (string === "" || string == null) return {};
|
|
691
|
-
if (string.charAt(0) === "?") string = string.slice(1);
|
|
692
|
-
var entries = string.split("&"), counters = {}, data0 = {};
|
|
693
|
-
for (var i = 0; i < entries.length; i++) {
|
|
694
|
-
var entry = entries[i].split("=");
|
|
695
|
-
var key5 = decodeURIComponent(entry[0]);
|
|
696
|
-
var value2 = entry.length === 2 ? decodeURIComponent(entry[1]) : "";
|
|
697
|
-
if (value2 === "true") value2 = true;
|
|
698
|
-
else if (value2 === "false") value2 = false;
|
|
699
|
-
var levels = key5.split(/\]\[?|\[/);
|
|
700
|
-
var cursor = data0;
|
|
701
|
-
if (key5.indexOf("[") > -1) levels.pop();
|
|
702
|
-
for (var j0 = 0; j0 < levels.length; j0++) {
|
|
703
|
-
var level = levels[j0], nextLevel = levels[j0 + 1];
|
|
704
|
-
var isNumber = nextLevel == "" || !isNaN(parseInt(nextLevel, 10));
|
|
705
|
-
if (level === "") {
|
|
706
|
-
var key5 = levels.slice(0, j0).join();
|
|
707
|
-
if (counters[key5] == null) {
|
|
708
|
-
counters[key5] = Array.isArray(cursor) ? cursor.length : 0;
|
|
709
|
-
}
|
|
710
|
-
level = counters[key5]++;
|
|
711
|
-
}
|
|
712
|
-
// Disallow direct prototype pollution
|
|
713
|
-
else if (level === "__proto__") break;
|
|
714
|
-
if (j0 === levels.length - 1) cursor[level] = value2;
|
|
715
|
-
else {
|
|
716
|
-
// Read own properties exclusively to disallow indirect
|
|
717
|
-
// prototype pollution
|
|
718
|
-
var desc = Object.getOwnPropertyDescriptor(cursor, level);
|
|
719
|
-
if (desc != null) desc = desc.value;
|
|
720
|
-
if (desc == null) cursor[level] = desc = isNumber ? [] : {};
|
|
721
|
-
cursor = desc;
|
|
722
|
-
}
|
|
723
|
-
}
|
|
724
|
-
}
|
|
725
|
-
return data0;
|
|
726
|
-
}
|
|
727
|
-
|
|
728
|
-
/** @deprecated **/
|
|
729
|
-
static getQuery(url) {
|
|
730
|
-
var str = url;
|
|
731
|
-
var strpos = str.indexOf('?');
|
|
732
|
-
// Si on ne trouve pas de queryString on retourne une chaine vide
|
|
733
|
-
if (strpos === -1) {
|
|
734
|
-
return '';
|
|
735
|
-
}
|
|
736
|
-
str = str.substr(strpos + 1, str.length);
|
|
737
|
-
// Maintenant on verifie si on a une anchor ou pas (#) et si c'est le cas on arrete la querystring avant
|
|
738
|
-
strpos = str.indexOf('#');
|
|
739
|
-
if (strpos === -1) {
|
|
740
|
-
return str;
|
|
741
|
-
}
|
|
742
|
-
return str.substr(0, strpos);
|
|
743
|
-
}
|
|
744
|
-
|
|
745
|
-
}
|
|
746
|
-
|
|
747
765
|
module.exports = { HTTPRequest, Cookie, UrlAndQueryString };
|