flamerest 1.0.23 → 1.0.26

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/README.md CHANGED
@@ -17,3 +17,7 @@ or
17
17
  import FLAMEREST from "flamerest";
18
18
  window.REST = new FLAMEREST('localhost');
19
19
  ```
20
+
21
+ # Create and Update
22
+
23
+ Just field list, but any field can be HTML Input, or FileList (automatically restify that)
package/REST.d.ts CHANGED
@@ -85,3 +85,10 @@ export function signup(username: string, password: string);
85
85
  * Выйти из системы
86
86
  */
87
87
  export function logout(): object;
88
+
89
+ /**
90
+ * Подготовить объект под загрузку: загрузить данные из элементов [type=file]
91
+ * @param values
92
+ */
93
+ export function prepare(values: object): object;
94
+
package/REST.js CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  class FLAMEREST {
3
3
 
4
- constructor(server_address, localhost_endpoint, unauthorized_callback) {
4
+ constructor(server_address, localhost_endpoint, unauthorized_callback, version) {
5
5
 
6
6
  /**
7
7
  * Адрес серва
@@ -25,6 +25,11 @@ class FLAMEREST {
25
25
  */
26
26
  this.unauthorized_callback = unauthorized_callback;
27
27
 
28
+ /**
29
+ * Версия api
30
+ */
31
+ this.version = version ? version : 'v1';
32
+
28
33
  }
29
34
 
30
35
  install(Vue, options) {
@@ -300,7 +305,7 @@ class FLAMEREST {
300
305
  let responseType = "json";
301
306
 
302
307
  // Генерим запрос
303
- let query = this.SERVER + '/api/' + table;
308
+ let query = this.SERVER + '/api/' + this.version + '/' + table;
304
309
 
305
310
  let json = {};
306
311
 
@@ -368,25 +373,15 @@ class FLAMEREST {
368
373
  * @param table
369
374
  * @param values
370
375
  */
371
- create(table, values) {
376
+ async create(table, values) {
372
377
 
373
378
  // Нормализуем имена таблиц
374
379
  table = table.replace(/_/g, "");
375
380
 
376
- // Если в один из параметров передан FileList, т.е. нужно загрузить файлы
377
- for (let val in values)
378
- if (val instanceof FileList) {
379
- let newValues = [];
380
- for (let file in val) {
381
- newValues.push({
382
- 'mime': 'jpg',
383
- 'size': 23,
384
- 'data': btoa(val)
385
- });
386
- }
387
- }
381
+ // Подготовить значения
382
+ await this.prepare(values);
388
383
 
389
- return this.request(this.SERVER + '/api/' + table + '/create', JSON.stringify(values), 'POST');
384
+ return this.request(this.SERVER + '/api/' + this.version + '/' + table + '/create', JSON.stringify(values), 'POST');
390
385
 
391
386
  }
392
387
 
@@ -400,7 +395,7 @@ class FLAMEREST {
400
395
  // Нормализуем имена таблиц
401
396
  table = table.replace(/_/g, "");
402
397
 
403
- return this.request(this.SERVER + '/api/' + table + '/delete?id=' + id, '{}', 'DELETE');
398
+ return this.request(this.SERVER + '/api/' + this.version + '/' + table + '/delete?id=' + id, '{}', 'DELETE');
404
399
 
405
400
  }
406
401
 
@@ -410,12 +405,15 @@ class FLAMEREST {
410
405
  * @param ID
411
406
  * @param values
412
407
  */
413
- edit(table, ID, values) {
408
+ async edit(table, ID, values) {
414
409
 
415
410
  // Нормализуем имена таблиц
416
411
  table = table.replace(/_/g, "");
417
412
 
418
- return this.request(this.SERVER + '/api/' + table + '/update?id=' + ID, JSON.stringify(values), 'PATCH');
413
+ // Подготовить значения
414
+ await this.prepare(values);
415
+
416
+ return this.request(this.SERVER + '/api/' + this.version + '/' + table + '/update?id=' + ID, JSON.stringify(values), 'PATCH');
419
417
  }
420
418
 
421
419
  /**
@@ -446,6 +444,53 @@ class FLAMEREST {
446
444
  return this.request(this.SERVER + '/auth/logout', '{}', 'POST');
447
445
  }
448
446
 
447
+
448
+ /**
449
+ * Подготовить объект под загрузку: загрузить данные из элементов [type=file]
450
+ * @param {object} values
451
+ */
452
+ async prepare(values) {
453
+
454
+ // Если в один из параметров передан FileList или input[type=file], т.е. нужно загрузить файлы
455
+ for (let val in values) {
456
+ // Преобразуем
457
+ if (values[val] instanceof HTMLInputElement && values[val].type === 'file') values[val] = values[val].files;
458
+ if (values[val] instanceof FileList) {
459
+ let newValues = [];
460
+ values[val] = Array.from(values[val]);
461
+ for (let file in values[val]) {
462
+ newValues.push({
463
+ 'name': values[val][file].name,
464
+ 'data': await this.readFileAsync(values[val][file])
465
+ });
466
+ }
467
+ values[val] = newValues;
468
+ }
469
+ }
470
+
471
+ return values;
472
+
473
+ }
474
+
475
+ /**
476
+ * Прочесть файл асинхронно
477
+ * @param {File} file
478
+ * @returns {Promise<string>}
479
+ */
480
+ readFileAsync(file) {
481
+ return new Promise((resolve, reject) => {
482
+ let reader = new FileReader();
483
+
484
+ reader.onloadend = () => {
485
+ resolve(reader.result);
486
+ };
487
+
488
+ reader.onerror = reject;
489
+
490
+ reader.readAsDataURL(file);
491
+ })
492
+ }
493
+
449
494
  }
450
495
 
451
496
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flamerest",
3
- "version": "1.0.23",
3
+ "version": "1.0.26",
4
4
  "description": "",
5
5
  "main": "REST.js",
6
6
  "typings": "./REST.d.ts",