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