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 +4 -0
- package/REST.d.ts +7 -0
- package/REST.js +64 -19
- package/package.json +1 -1
package/README.md
CHANGED
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
|
-
//
|
|
377
|
-
|
|
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
|
-
|
|
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
|
|