@osimatic/helpers-js 1.0.106 → 1.0.108
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 +403 -380
- 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,130 +1,446 @@
|
|
|
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
|
+
withLink = typeof withLink == 'undefined' ? true : withLink;
|
|
33
|
+
return (withLink?'<a href="'+url+'">':'')+UrlAndQueryString.getHost(url, false)+(withLink?'</a>':'');
|
|
34
|
+
}
|
|
35
|
+
static displayUrlAndPath(url, withLink) {
|
|
36
|
+
withLink = typeof withLink == 'undefined' ? true : withLink;
|
|
37
|
+
return (withLink?'<a href="'+url+'">':'')+UrlAndQueryString.getHostAndPath(url, false)+(withLink?'</a>':'');
|
|
38
|
+
}
|
|
19
39
|
|
|
20
|
-
|
|
21
|
-
|
|
40
|
+
static getHost(url, withProtocol) {
|
|
41
|
+
withProtocol = typeof withProtocol == 'undefined' ? true : withProtocol;
|
|
42
|
+
if (typeof url == 'undefined') {
|
|
43
|
+
return withProtocol ? window.location.origin : window.location.host;
|
|
22
44
|
}
|
|
45
|
+
url = new URL(url);
|
|
46
|
+
return (withProtocol?url.protocol+'//':'') + url.host;
|
|
47
|
+
}
|
|
23
48
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
return
|
|
49
|
+
static getPath(url) {
|
|
50
|
+
if (typeof url == 'undefined') {
|
|
51
|
+
return window.location.pathname;
|
|
52
|
+
}
|
|
53
|
+
url = new URL(url);
|
|
54
|
+
return url.pathname;
|
|
30
55
|
}
|
|
31
56
|
|
|
32
|
-
static
|
|
33
|
-
if (typeof
|
|
34
|
-
|
|
57
|
+
static getQueryString(url) {
|
|
58
|
+
if (typeof url == 'undefined') {
|
|
59
|
+
return window.location.search;
|
|
35
60
|
}
|
|
61
|
+
url = new URL(url);
|
|
62
|
+
return url.search;
|
|
63
|
+
}
|
|
36
64
|
|
|
37
|
-
|
|
65
|
+
static getHostAndPath(url, withProtocol) {
|
|
66
|
+
return UrlAndQueryString.getHost(url, withProtocol) + UrlAndQueryString.getPath(url);
|
|
67
|
+
|
|
68
|
+
//let strpos = url.indexOf('?');
|
|
69
|
+
//if (strpos === -1) {
|
|
70
|
+
// return url;
|
|
71
|
+
//}
|
|
72
|
+
//return url.substr(0, strpos);
|
|
38
73
|
}
|
|
39
74
|
|
|
40
|
-
static
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
this.headers[key] = value;
|
|
75
|
+
static getParam(key, url) {
|
|
76
|
+
let searchParams = new URLSearchParams(UrlAndQueryString.getQueryString(url));
|
|
77
|
+
return searchParams.get(key);
|
|
46
78
|
}
|
|
47
79
|
|
|
48
|
-
static
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
80
|
+
static setParam(queryString, name, value) {
|
|
81
|
+
// cette solution ne fonctionne pas avec les tableau
|
|
82
|
+
//let params = new URLSearchParams(queryString);
|
|
83
|
+
//params.set(name, value);
|
|
84
|
+
//return params.toString();
|
|
52
85
|
|
|
53
|
-
|
|
86
|
+
let params = UrlAndQueryString.parseQuery(queryString);
|
|
87
|
+
//console.log(params);
|
|
88
|
+
params[name] = value;
|
|
89
|
+
return decodeURI($.param(params));
|
|
90
|
+
}
|
|
91
|
+
static setParamOfUrl(name, value, url) {
|
|
92
|
+
let queryString = UrlAndQueryString.setParam(UrlAndQueryString.getQueryString(url), name, value);
|
|
93
|
+
return UrlAndQueryString.getHostAndPath(url) + '?' + queryString;
|
|
54
94
|
}
|
|
55
95
|
|
|
56
|
-
static
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
// return formData;
|
|
96
|
+
static deleteParam(queryString, name) {
|
|
97
|
+
let params = new URLSearchParams(queryString);
|
|
98
|
+
params.delete(name);
|
|
99
|
+
return decodeURI(params.toString());
|
|
61
100
|
|
|
62
|
-
|
|
101
|
+
//let params = UrlAndQueryString.parseQuery(queryString);
|
|
102
|
+
//params[name] = null;
|
|
103
|
+
//return $.param(params);
|
|
104
|
+
}
|
|
105
|
+
static deleteParamOfUrl(name, url) {
|
|
106
|
+
let queryString = UrlAndQueryString.deleteParam(UrlAndQueryString.getQueryString(url), name);
|
|
107
|
+
return UrlAndQueryString.getHostAndPath(url) + '?' + queryString;
|
|
108
|
+
}
|
|
109
|
+
static deleteParamsOfUrl(names, url) {
|
|
110
|
+
let queryString = UrlAndQueryString.getQueryString(url);
|
|
111
|
+
names.forEach((name => queryString = UrlAndQueryString.deleteParam(queryString, name)));
|
|
112
|
+
return UrlAndQueryString.getHostAndPath(url) + '?' + queryString;
|
|
113
|
+
}
|
|
63
114
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
115
|
+
static parseQuery(queryString) {
|
|
116
|
+
var params = {};
|
|
117
|
+
|
|
118
|
+
function buildParamFromString(param) {
|
|
119
|
+
var p = decodeURIComponent(param);
|
|
120
|
+
var strpos = p.indexOf('=');
|
|
121
|
+
// Si on trouve pas de signe =, on met la valeur ''
|
|
122
|
+
if (strpos === -1) {
|
|
123
|
+
params[p] = '';
|
|
124
|
+
//params.length++;
|
|
125
|
+
return true;
|
|
69
126
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
127
|
+
var name = p.substr(0, strpos);
|
|
128
|
+
var value = p.substr(strpos + 1, p.length);
|
|
129
|
+
var openBracket = name.indexOf('[');
|
|
130
|
+
var closeBracket = name.indexOf(']');
|
|
131
|
+
// On traite les paramètre qui ne sont pas sous forme de tableau
|
|
132
|
+
if (openBracket === -1 || closeBracket === -1) {
|
|
133
|
+
if (!(openBracket === -1 && closeBracket === -1)) {
|
|
134
|
+
name = name.replace(new RegExp('[\\[\\]]'), '_');
|
|
73
135
|
}
|
|
136
|
+
params[name] = value;
|
|
137
|
+
return true;
|
|
74
138
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
139
|
+
var matches = name.match(new RegExp('\\[.*?\\]', 'g'));
|
|
140
|
+
name = name.substr(0, openBracket);
|
|
141
|
+
p = 'params';
|
|
142
|
+
var key = name;
|
|
143
|
+
for (let i in matches) {
|
|
144
|
+
if (typeof (matches[i]) == 'function') {
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
p += '[\'' + key + '\']';
|
|
149
|
+
if (eval(p) == undefined || typeof (eval(p)) != 'object') {
|
|
150
|
+
eval(p + '= new Array();');
|
|
151
|
+
}
|
|
152
|
+
key = matches[i].substr(1, matches[i].length - 2);
|
|
153
|
+
// si la clé est null on met la longueur du tableau
|
|
154
|
+
if (key == '') {
|
|
155
|
+
key = eval(p).length;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/*
|
|
159
|
+
p += '[\''+key+'\']';
|
|
160
|
+
if(eval(p) == undefined || typeof(eval(p)) != 'object') {
|
|
161
|
+
eval(p +'= new Array();');
|
|
162
|
+
}
|
|
163
|
+
if (typeof(matches[i]) != 'function') {
|
|
164
|
+
key = matches[i].substr(1,matches[i].length-2);
|
|
165
|
+
// si la clé est null on met la longueur du tableau
|
|
166
|
+
if (key == '') {
|
|
167
|
+
key = eval(p).length;
|
|
83
168
|
}
|
|
84
169
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
if (data !== null && typeof data !== 'undefined') {
|
|
88
|
-
formData.append(root, data);
|
|
170
|
+
else {
|
|
171
|
+
key = eval(p).length;
|
|
89
172
|
}
|
|
173
|
+
*/
|
|
90
174
|
}
|
|
175
|
+
p += '[\'' + key + '\']';
|
|
176
|
+
eval(p + '= \'' + value + '\';');
|
|
91
177
|
}
|
|
92
178
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
static formatQueryString(data) {
|
|
99
|
-
if (data == null) {
|
|
100
|
-
return '';
|
|
179
|
+
var str = queryString;
|
|
180
|
+
if (str.includes('?')) {
|
|
181
|
+
str = str.substring(1);
|
|
101
182
|
}
|
|
102
|
-
if (
|
|
103
|
-
|
|
183
|
+
if (str === '') {
|
|
184
|
+
return {};
|
|
104
185
|
}
|
|
105
|
-
|
|
106
|
-
|
|
186
|
+
str = str.replace(new RegExp('&'), '&');
|
|
187
|
+
//params.length = 0;
|
|
188
|
+
str = str.split('&');
|
|
189
|
+
//var p = '';
|
|
190
|
+
//var startPos = -1;
|
|
191
|
+
//var endPos = -1;
|
|
192
|
+
//var arrayName = '';
|
|
193
|
+
//var arrayKey = '';
|
|
194
|
+
for (let i = 0; i < str.length; i++) {
|
|
195
|
+
buildParamFromString(str[i]);
|
|
107
196
|
}
|
|
108
|
-
return
|
|
197
|
+
// return JSON.parse(JSON.stringify(this.params));
|
|
198
|
+
return params;
|
|
109
199
|
}
|
|
110
200
|
|
|
111
|
-
static
|
|
112
|
-
|
|
113
|
-
|
|
201
|
+
static buildQuery(object) {
|
|
202
|
+
var params = [];
|
|
203
|
+
|
|
204
|
+
function buildStringFromParam(object, prefix) {
|
|
205
|
+
var p = '';
|
|
206
|
+
var value = '';
|
|
207
|
+
if (prefix !== undefined) {
|
|
208
|
+
p = prefix;
|
|
209
|
+
}
|
|
210
|
+
if (typeof (object) == 'object') {
|
|
211
|
+
for (var name in object) {
|
|
212
|
+
value = object[name];
|
|
213
|
+
// 06/06/2022 : ajout de ce if pour éviter bug sur fonction HTTPRequest.formatQueryString
|
|
214
|
+
if (typeof (value) == 'undefined') {
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
// 14/01/2020 : les tableaux avec param[0], param[1] en query string fonctionne pas, il faut mettre param[]=x¶m[]=y
|
|
218
|
+
//name = p == '' ? name : '['+name+']';
|
|
219
|
+
name = p == '' ? name : '[]';
|
|
220
|
+
if (typeof (value) == 'object') {
|
|
221
|
+
buildStringFromParam(value, p + name);
|
|
222
|
+
}
|
|
223
|
+
// 06/06/2022 : ajout null !== value pour éviter bug sur fonction HTTPRequest.formatQueryString
|
|
224
|
+
else if (null !== value && typeof (value) != 'function' && name != '') {
|
|
225
|
+
// 27/01/2020 : correction bug boolean affiché en string true/false
|
|
226
|
+
if (typeof (value) == 'boolean') {
|
|
227
|
+
value = (value ? 1 : 0);
|
|
228
|
+
}
|
|
229
|
+
params[params.length] = p + name + '=' + value;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
114
233
|
}
|
|
115
|
-
return data;
|
|
116
|
-
}
|
|
117
234
|
|
|
118
|
-
|
|
119
|
-
|
|
235
|
+
buildStringFromParam(object);
|
|
236
|
+
return params.join('&');
|
|
120
237
|
}
|
|
121
238
|
|
|
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
239
|
|
|
126
|
-
|
|
127
|
-
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
// deprecated
|
|
258
|
+
|
|
259
|
+
/** @deprecated **/
|
|
260
|
+
static parseQueryString(string) {
|
|
261
|
+
if (string === "" || string == null) return {};
|
|
262
|
+
if (string.charAt(0) === "?") string = string.slice(1);
|
|
263
|
+
var entries = string.split("&"), counters = {}, data0 = {};
|
|
264
|
+
for (var i = 0; i < entries.length; i++) {
|
|
265
|
+
var entry = entries[i].split("=");
|
|
266
|
+
var key5 = decodeURIComponent(entry[0]);
|
|
267
|
+
var value2 = entry.length === 2 ? decodeURIComponent(entry[1]) : "";
|
|
268
|
+
if (value2 === "true") value2 = true;
|
|
269
|
+
else if (value2 === "false") value2 = false;
|
|
270
|
+
var levels = key5.split(/\]\[?|\[/);
|
|
271
|
+
var cursor = data0;
|
|
272
|
+
if (key5.indexOf("[") > -1) levels.pop();
|
|
273
|
+
for (var j0 = 0; j0 < levels.length; j0++) {
|
|
274
|
+
var level = levels[j0], nextLevel = levels[j0 + 1];
|
|
275
|
+
var isNumber = nextLevel == "" || !isNaN(parseInt(nextLevel, 10));
|
|
276
|
+
if (level === "") {
|
|
277
|
+
var key5 = levels.slice(0, j0).join();
|
|
278
|
+
if (counters[key5] == null) {
|
|
279
|
+
counters[key5] = Array.isArray(cursor) ? cursor.length : 0;
|
|
280
|
+
}
|
|
281
|
+
level = counters[key5]++;
|
|
282
|
+
}
|
|
283
|
+
// Disallow direct prototype pollution
|
|
284
|
+
else if (level === "__proto__") break;
|
|
285
|
+
if (j0 === levels.length - 1) cursor[level] = value2;
|
|
286
|
+
else {
|
|
287
|
+
// Read own properties exclusively to disallow indirect
|
|
288
|
+
// prototype pollution
|
|
289
|
+
var desc = Object.getOwnPropertyDescriptor(cursor, level);
|
|
290
|
+
if (desc != null) desc = desc.value;
|
|
291
|
+
if (desc == null) cursor[level] = desc = isNumber ? [] : {};
|
|
292
|
+
cursor = desc;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return data0;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/** @deprecated **/
|
|
300
|
+
static getQuery(url) {
|
|
301
|
+
var str = url;
|
|
302
|
+
var strpos = str.indexOf('?');
|
|
303
|
+
// Si on ne trouve pas de queryString on retourne une chaine vide
|
|
304
|
+
if (strpos === -1) {
|
|
305
|
+
return '';
|
|
306
|
+
}
|
|
307
|
+
str = str.substr(strpos + 1, str.length);
|
|
308
|
+
// Maintenant on verifie si on a une anchor ou pas (#) et si c'est le cas on arrete la querystring avant
|
|
309
|
+
strpos = str.indexOf('#');
|
|
310
|
+
if (strpos === -1) {
|
|
311
|
+
return str;
|
|
312
|
+
}
|
|
313
|
+
return str.substr(0, strpos);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
}
|
|
317
|
+
/** @deprecated */
|
|
318
|
+
class HTTPRequest {
|
|
319
|
+
static init() {
|
|
320
|
+
require('whatwg-fetch'); //fetch polyfill loaded in window.fetch
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
static setRefreshTokenUrl(url) {
|
|
324
|
+
this.refreshTokenUrl = url;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
static setRefreshTokenCallback(callback) {
|
|
328
|
+
this.refreshTokenCallback = callback;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
static getHeaders(asObject) {
|
|
332
|
+
if (typeof this.headers == 'undefined') {
|
|
333
|
+
this.headers = {};
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
if (typeof asObject != 'undefined' && asObject) {
|
|
337
|
+
return this.headers;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
let httpHeaders = new Headers();
|
|
341
|
+
Object.entries(this.headers).forEach(([key, value]) => {
|
|
342
|
+
httpHeaders.append(key, value);
|
|
343
|
+
});
|
|
344
|
+
|
|
345
|
+
return httpHeaders;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
static getHeader(key) {
|
|
349
|
+
if (typeof this.headers == 'undefined') {
|
|
350
|
+
this.headers = {};
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
return this.headers[key];
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
static setHeader(key, value) {
|
|
357
|
+
if (typeof this.headers == 'undefined') {
|
|
358
|
+
this.headers = {};
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
this.headers[key] = value;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
static setAuthorizationHeader(accessToken) {
|
|
365
|
+
if (typeof this.headers == 'undefined') {
|
|
366
|
+
this.headers = {};
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
this.headers['Authorization'] = 'Bearer ' + accessToken;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
static convertObjectToFormData(obj) {
|
|
373
|
+
// 30/05/2022 : ancienne version, qui ne fonctionne pas avec des tableaux
|
|
374
|
+
// let formData = new FormData();
|
|
375
|
+
// Object.entries(data).forEach(([key, value]) => formData.append(key, value));
|
|
376
|
+
// return formData;
|
|
377
|
+
|
|
378
|
+
var formData = new FormData();
|
|
379
|
+
|
|
380
|
+
function appendFormData(data, root) {
|
|
381
|
+
//console.log('appendFormData', data, root);
|
|
382
|
+
root = root || '';
|
|
383
|
+
if (data instanceof File) {
|
|
384
|
+
formData.append(root, data);
|
|
385
|
+
}
|
|
386
|
+
else if (Array.isArray(data)) {
|
|
387
|
+
for (var i = 0; i < data.length; i++) {
|
|
388
|
+
appendFormData(data[i], root + '[' + i + ']');
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
else if (typeof data === 'object' && data) {
|
|
392
|
+
for (var key in data) {
|
|
393
|
+
if (data.hasOwnProperty(key)) {
|
|
394
|
+
if (root === '') {
|
|
395
|
+
appendFormData(data[key], key);
|
|
396
|
+
} else {
|
|
397
|
+
appendFormData(data[key], root + '.' + key);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
if (data !== null && typeof data !== 'undefined') {
|
|
404
|
+
formData.append(root, data);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
appendFormData(obj);
|
|
410
|
+
|
|
411
|
+
return formData;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
static formatQueryString(data) {
|
|
415
|
+
if (data == null) {
|
|
416
|
+
return '';
|
|
417
|
+
}
|
|
418
|
+
if (typeof data == 'object') {
|
|
419
|
+
data = UrlAndQueryString.buildQuery(data);
|
|
420
|
+
}
|
|
421
|
+
if (data !== '' && data.substring(0, 1) !== '&') {
|
|
422
|
+
data = '&' + data;
|
|
423
|
+
}
|
|
424
|
+
return data;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
static formatFormData(data) {
|
|
428
|
+
if (!(data instanceof FormData)) {
|
|
429
|
+
return HTTPRequest.convertObjectToFormData(data);
|
|
430
|
+
}
|
|
431
|
+
return data;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
static logRequestFailure(response, json) {
|
|
435
|
+
console.error('Request failure. Status: '+response.statusText+' ; HTTP Code : '+response.status, json);
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
static logJqueryRequestFailure(jqxhr, status, errorThrown) {
|
|
439
|
+
console.error('Request failure. Status: '+status+' ; HTTP Code: '+jqxhr.status+(null!=errorThrown && ''!==errorThrown ? ' ; Error message: '+errorThrown : ''), jqxhr.responseJSON);
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
static isExpiredToken(response, json) {
|
|
443
|
+
if (response.status !== 401) {
|
|
128
444
|
return false;
|
|
129
445
|
}
|
|
130
446
|
|
|
@@ -400,7 +716,7 @@ class HTTPRequest {
|
|
|
400
716
|
HTTPRequest.setAuthorizationHeader(JwtSession.getToken());
|
|
401
717
|
|
|
402
718
|
onCompleteCallback();
|
|
403
|
-
},
|
|
719
|
+
},
|
|
404
720
|
() => {
|
|
405
721
|
JwtSession.logout();
|
|
406
722
|
errorCallback();
|
|
@@ -451,297 +767,4 @@ class HTTPRequest {
|
|
|
451
767
|
}
|
|
452
768
|
}
|
|
453
769
|
|
|
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
770
|
module.exports = { HTTPRequest, Cookie, UrlAndQueryString };
|