flamerest 1.0.105 → 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.
Files changed (2) hide show
  1. package/REST.js +32 -16
  2. package/package.json +1 -1
package/REST.js CHANGED
@@ -57,7 +57,7 @@ class FLAMEREST {
57
57
  /**
58
58
  *
59
59
  * @param {string} url Адрес
60
- * @param {object|string} params Параметры, которые надо передать, могут быть в виде объекта или строки
60
+ * @param {object|string|FormData} params Параметры, которые надо передать, могут быть в виде объекта или строки
61
61
  * @param {string} type Тип
62
62
  * @param {string} responseType Тип ответа: json или blob
63
63
  * @param {Object} customHeaders объект с доп заголовками, которые надо включить в запрос
@@ -66,11 +66,16 @@ class FLAMEREST {
66
66
 
67
67
  // Нормализуем параметры, если они есть
68
68
  if (typeof params === "object" && params !== null) {
69
- params = JSON.stringify(params);
69
+
70
+ if (!(params instanceof FormData))
71
+ params = JSON.stringify(params);
72
+
70
73
  type = 'POST';
71
74
  responseType = 'json';
75
+
72
76
  }
73
77
 
78
+
74
79
  // Подставляем сервер автоматом в запрос начинающийся с /
75
80
  if (url[0] === '/' && url[1] !== '/') url = this.SERVER + url;
76
81
 
@@ -103,12 +108,14 @@ class FLAMEREST {
103
108
  let requestBody = {
104
109
  method: type,
105
110
  mode: 'cors',
106
- headers: Object.assign({
107
- 'Content-type': 'application/json; charset=utf-8'
108
- }, customHeaders)
111
+ headers: Object.assign(
112
+ (params instanceof FormData ? {} : {
113
+ 'Content-type': 'application/json; charset=utf-8'
114
+ }), customHeaders)
109
115
  };
110
116
 
111
117
  if (type !== 'GET')
118
+ // Принимает и formData тоже и чистую json строку
112
119
  requestBody.body = params;
113
120
 
114
121
  // Создаём подпись каждого запроса
@@ -117,8 +124,8 @@ class FLAMEREST {
117
124
  SIGN = await this.hmac_sha256(requestBody.body, user_hash);
118
125
  }
119
126
  catch (ex) {
120
- window.alert('Can`t create a request');
121
- throw ex;
127
+ // window.alert('Can`t create a request');
128
+ // throw ex;
122
129
  }
123
130
 
124
131
  requestBody.headers['sign'] = SIGN;
@@ -458,7 +465,8 @@ class FLAMEREST {
458
465
  table = table.replace(/_/g, "");
459
466
 
460
467
  // Подготовить значения
461
- await this.prepare(values);
468
+ if (!(values instanceof FormData))
469
+ await this.prepare(values);
462
470
 
463
471
  if (appendTo === undefined) appendTo = null;
464
472
  if (insertAfter === undefined) insertAfter = null;
@@ -468,7 +476,7 @@ class FLAMEREST {
468
476
  + (appendTo !== null ? '&appendTo=' + appendTo : '')
469
477
  + (insertAfter !== null ? '&insertAfter=' + insertAfter : '')
470
478
  + (insertFirst !== null ? '&insertFirst=' + insertFirst : '')
471
- , JSON.stringify(values), 'POST');
479
+ , (values instanceof FormData ? values : JSON.stringify(values)), 'POST');
472
480
 
473
481
  }
474
482
 
@@ -506,7 +514,8 @@ class FLAMEREST {
506
514
  table = table.replace(/_/g, "");
507
515
 
508
516
  // Подготовить значения
509
- await this.prepare(values);
517
+ if (!(values instanceof FormData))
518
+ await this.prepare(values);
510
519
 
511
520
  if (appendTo === undefined) appendTo = null;
512
521
  if (insertAfter === undefined) insertAfter = null;
@@ -516,7 +525,7 @@ class FLAMEREST {
516
525
  + (appendTo !== null ? '&appendTo=' + appendTo : '')
517
526
  + (insertAfter !== null ? '&insertAfter=' + insertAfter : '')
518
527
  + (insertFirst !== null ? '&insertFirst=' + insertFirst : '')
519
- , JSON.stringify(values), 'PATCH');
528
+ , (values instanceof FormData ? values : JSON.stringify(values)), 'PATCH');
520
529
  }
521
530
 
522
531
  /**
@@ -638,9 +647,12 @@ class FLAMEREST {
638
647
  * Подготовить объект под загрузку: загрузить данные из элементов Input [type=file] / Clipboard / DataTransfer [Drag&Drop/Clipboard]
639
648
  * @param {object} values
640
649
  */
641
- async prepare(values) {
650
+ async prepare(values, asFormData = false) {
642
651
 
643
652
  // Если в один из параметров передан FileList или input[type=file], т.е. нужно загрузить файлы
653
+
654
+ const formData = new FormData();
655
+
644
656
  for (let val in values) {
645
657
 
646
658
  // Пустые значения нам не нужны
@@ -676,10 +688,12 @@ class FLAMEREST {
676
688
  if (value instanceof FileList) {
677
689
  let newValues = [];
678
690
  value = Array.from(value);
679
- for (let file in value) {
691
+ for (let index = 0; index < value.length; index++) {
692
+ formData.append(val + "[]", value[index])
680
693
  newValues.push({
681
- 'name': value[file].name,
682
- 'data': await this.readFileAsync(value[file]),
694
+ 'name': value[index].name,
695
+ 'data': asFormData ? null : await this.readFileAsync(value[index]),
696
+ 'number': index, // Здесь индекс
683
697
  'id': this.generateID(32)
684
698
  });
685
699
  }
@@ -703,7 +717,9 @@ class FLAMEREST {
703
717
  }
704
718
  }
705
719
 
706
- return values;
720
+ formData.append("json", JSON.stringify(values));
721
+
722
+ return asFormData ? formData : values;
707
723
 
708
724
  }
709
725
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flamerest",
3
- "version": "1.0.105",
3
+ "version": "1.0.107",
4
4
  "description": "",
5
5
  "main": "REST.js",
6
6
  "typings": "./REST.d.ts",