@vtecx/vtecxnext 1.0.3 → 1.0.4
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/dist/vtecxnext.d.ts +67 -1
- package/dist/vtecxnext.js +314 -19
- package/package.json +3 -1
package/dist/vtecxnext.d.ts
CHANGED
|
@@ -388,7 +388,8 @@ export declare const getBQ: (req: IncomingMessage, res: ServerResponse, sql: str
|
|
|
388
388
|
*/
|
|
389
389
|
export declare const getBQCsv: (req: IncomingMessage, res: ServerResponse, sql: string, values?: any[], filename?: string, parent?: string) => Promise<boolean>;
|
|
390
390
|
/**
|
|
391
|
-
* Create PDF
|
|
391
|
+
* Create PDF.
|
|
392
|
+
* Writes a PDF to the response.
|
|
392
393
|
* @param req request (for authentication)
|
|
393
394
|
* @param res response
|
|
394
395
|
* @param htmlTemplate PDF layout
|
|
@@ -629,6 +630,71 @@ export declare const deleteuser: (req: IncomingMessage, res: ServerResponse, acc
|
|
|
629
630
|
* @return message feed
|
|
630
631
|
*/
|
|
631
632
|
export declare const deleteusers: (req: IncomingMessage, res: ServerResponse, feed: any) => Promise<any>;
|
|
633
|
+
/**
|
|
634
|
+
* save files
|
|
635
|
+
* @param req request
|
|
636
|
+
* @param res respose (for authentication)
|
|
637
|
+
* @param uri key
|
|
638
|
+
* @returns message
|
|
639
|
+
*/
|
|
640
|
+
export declare const savefiles: (req: IncomingMessage, res: ServerResponse, uri: string) => Promise<any>;
|
|
641
|
+
/**
|
|
642
|
+
* upload content
|
|
643
|
+
* @param req request (for authentication)
|
|
644
|
+
* @param res response (for authentication)
|
|
645
|
+
* @param uri key
|
|
646
|
+
* @return message
|
|
647
|
+
*/
|
|
648
|
+
export declare const putcontent: (req: IncomingMessage, res: ServerResponse, uri: string) => Promise<any>;
|
|
649
|
+
/**
|
|
650
|
+
* delete content
|
|
651
|
+
* @param req request (for authentication)
|
|
652
|
+
* @param res response (for authentication)
|
|
653
|
+
* @param uri key
|
|
654
|
+
* @return message
|
|
655
|
+
*/
|
|
656
|
+
export declare const deletecontent: (req: IncomingMessage, res: ServerResponse, uri: string) => Promise<any>;
|
|
657
|
+
/**
|
|
658
|
+
* get content.
|
|
659
|
+
* Writes a content to the response.
|
|
660
|
+
* @param req request (for authentication)
|
|
661
|
+
* @param res response (for authentication)
|
|
662
|
+
* @param uri key
|
|
663
|
+
* @return true
|
|
664
|
+
*/
|
|
665
|
+
export declare const getcontent: (req: IncomingMessage, res: ServerResponse, uri: string) => Promise<boolean>;
|
|
666
|
+
/**
|
|
667
|
+
* add acl
|
|
668
|
+
* @param req request (for authentication)
|
|
669
|
+
* @param res response (for authentication)
|
|
670
|
+
* @param feed entries
|
|
671
|
+
* @return message
|
|
672
|
+
*/
|
|
673
|
+
export declare const addacl: (req: IncomingMessage, res: ServerResponse, feed: any) => Promise<any>;
|
|
674
|
+
/**
|
|
675
|
+
* remove acl
|
|
676
|
+
* @param req request (for authentication)
|
|
677
|
+
* @param res response (for authentication)
|
|
678
|
+
* @param feed entries
|
|
679
|
+
* @return message
|
|
680
|
+
*/
|
|
681
|
+
export declare const removeacl: (req: IncomingMessage, res: ServerResponse, feed: any) => Promise<any>;
|
|
682
|
+
/**
|
|
683
|
+
* add alias
|
|
684
|
+
* @param req request (for authentication)
|
|
685
|
+
* @param res response (for authentication)
|
|
686
|
+
* @param feed entries
|
|
687
|
+
* @return message
|
|
688
|
+
*/
|
|
689
|
+
export declare const addalias: (req: IncomingMessage, res: ServerResponse, feed: any) => Promise<any>;
|
|
690
|
+
/**
|
|
691
|
+
* remove alias
|
|
692
|
+
* @param req request (for authentication)
|
|
693
|
+
* @param res response (for authentication)
|
|
694
|
+
* @param feed entries
|
|
695
|
+
* @return message
|
|
696
|
+
*/
|
|
697
|
+
export declare const removealias: (req: IncomingMessage, res: ServerResponse, feed: any) => Promise<any>;
|
|
632
698
|
/**
|
|
633
699
|
* Error returned from vte.cx
|
|
634
700
|
*/
|
package/dist/vtecxnext.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.deleteSignature = exports.putSignatures = exports.putSignature = exports.toPdf = exports.getBQCsv = exports.getBQ = exports.deleteBQ = exports.postBQ = exports.getPage = exports.pagination = exports.getSessionLong = exports.getSessionString = exports.getSessionEntry = exports.getSessionFeed = exports.deleteSessionLong = exports.deleteSessionString = exports.deleteSessionEntry = exports.deleteSessionFeed = exports.incrementSession = exports.setSessionLong = exports.setSessionString = exports.setSessionEntry = exports.setSessionFeed = exports.getRangeids = exports.rangeids = exports.setids = exports.getids = exports.addids = exports.allocids = exports.deleteFolder = exports.deleteEntry = exports.put = exports.post = exports.count = exports.getFeed = exports.getEntry = exports.log = exports.rxid = exports.service = exports.isLoggedin = exports.whoami = exports.account = exports.uid = exports.now = exports.logout = exports.loginWithRxid = exports.login = exports.sendMessage = exports.checkXRequestedWith = exports.hello = void 0;
|
|
4
|
-
exports.VtecxNextError = exports.deleteusers = exports.deleteuser = exports.canceluser = exports.activateusers = exports.activateuser = exports.revokeusers = exports.revokeuser = exports.userstatus = exports.changeaccount_verify = exports.changeaccount = exports.changepassByAdmin = exports.changepass = exports.passreset = exports.adduserByAdmin = exports.adduser = exports.noGroupMember = exports.leaveGroup = exports.joinGroup = exports.getMessageQueue = exports.setMessageQueue = exports.setMessageQueueStatus = exports.pushNotification = exports.sendMail = exports.checkSignature = void 0;
|
|
5
|
-
|
|
7
|
+
exports.VtecxNextError = exports.removealias = exports.addalias = exports.removeacl = exports.addacl = exports.getcontent = exports.deletecontent = exports.putcontent = exports.savefiles = exports.deleteusers = exports.deleteuser = exports.canceluser = exports.activateusers = exports.activateuser = exports.revokeusers = exports.revokeuser = exports.userstatus = exports.changeaccount_verify = exports.changeaccount = exports.changepassByAdmin = exports.changepass = exports.passreset = exports.adduserByAdmin = exports.adduser = exports.noGroupMember = exports.leaveGroup = exports.joinGroup = exports.getMessageQueue = exports.setMessageQueue = exports.setMessageQueueStatus = exports.pushNotification = exports.sendMail = exports.checkSignature = void 0;
|
|
8
|
+
const sqlstring_1 = __importDefault(require("sqlstring"));
|
|
9
|
+
const formidable_1 = __importDefault(require("formidable"));
|
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
|
6
11
|
/**
|
|
7
12
|
* Hello world.
|
|
8
13
|
*/
|
|
@@ -317,7 +322,7 @@ const getEntry = async (req, res, uri, targetService) => {
|
|
|
317
322
|
// vte.cxへリクエスト
|
|
318
323
|
const method = 'GET';
|
|
319
324
|
const url = `/p${uri}?e`;
|
|
320
|
-
const response = await requestVtecx(method, url, req, null, targetService);
|
|
325
|
+
const response = await requestVtecx(method, url, req, null, null, targetService);
|
|
321
326
|
//console.log(`[vtecxnext getEntry] response=${response}`)
|
|
322
327
|
// vte.cxからのset-cookieを転記
|
|
323
328
|
setCookie(response, res);
|
|
@@ -341,7 +346,7 @@ const getFeed = async (req, res, uri, targetService) => {
|
|
|
341
346
|
// vte.cxへリクエスト
|
|
342
347
|
const method = 'GET';
|
|
343
348
|
const url = `/p${uri}${uri.includes('?') ? '&' : '?'}f`;
|
|
344
|
-
const response = await requestVtecx(method, url, req, null, targetService);
|
|
349
|
+
const response = await requestVtecx(method, url, req, null, null, targetService);
|
|
345
350
|
//console.log(`[vtecxnext getFeed] response=${response}`)
|
|
346
351
|
// vte.cxからのset-cookieを転記
|
|
347
352
|
setCookie(response, res);
|
|
@@ -365,7 +370,7 @@ const count = async (req, res, uri, targetService) => {
|
|
|
365
370
|
// vte.cxへリクエスト
|
|
366
371
|
const method = 'GET';
|
|
367
372
|
const url = `/p${uri}${uri.includes('?') ? '&' : '?'}c`;
|
|
368
|
-
const response = await requestVtecx(method, url, req, null, targetService);
|
|
373
|
+
const response = await requestVtecx(method, url, req, null, null, targetService);
|
|
369
374
|
//console.log(`[vtecxnext count] response=${response}`)
|
|
370
375
|
// vte.cxからのset-cookieを転記
|
|
371
376
|
setCookie(response, res);
|
|
@@ -395,7 +400,7 @@ const post = async (req, res, feed, uri, targetService) => {
|
|
|
395
400
|
// vte.cxへリクエスト
|
|
396
401
|
const method = 'POST';
|
|
397
402
|
const url = `/p${uri ? uri : '/'}?e`;
|
|
398
|
-
const response = await requestVtecx(method, url, req, JSON.stringify(feed), targetService);
|
|
403
|
+
const response = await requestVtecx(method, url, req, JSON.stringify(feed), null, targetService);
|
|
399
404
|
//console.log(`[vtecxnext post] response. status=${response.status}`)
|
|
400
405
|
// vte.cxからのset-cookieを転記
|
|
401
406
|
setCookie(response, res);
|
|
@@ -426,7 +431,7 @@ const put = async (req, res, feed, isbulk, parallel, async, targetService) => {
|
|
|
426
431
|
}
|
|
427
432
|
const url = `/p/?e${additionalParam}`;
|
|
428
433
|
//console.log(`[vtecxnext put] url=${url}`)
|
|
429
|
-
const response = await requestVtecx(method, url, req, JSON.stringify(feed), targetService);
|
|
434
|
+
const response = await requestVtecx(method, url, req, JSON.stringify(feed), null, targetService);
|
|
430
435
|
//console.log(`[vtecxnext put] response. status=${response.status}`)
|
|
431
436
|
// vte.cxからのset-cookieを転記
|
|
432
437
|
setCookie(response, res);
|
|
@@ -451,7 +456,7 @@ const deleteEntry = async (req, res, uri, revision, targetService) => {
|
|
|
451
456
|
const method = 'DELETE';
|
|
452
457
|
const param = revision ? `&r=${revision}` : '';
|
|
453
458
|
const url = `/p${uri}?e${param}`;
|
|
454
|
-
const response = await requestVtecx(method, url, req, null, targetService);
|
|
459
|
+
const response = await requestVtecx(method, url, req, null, null, targetService);
|
|
455
460
|
//console.log(`[vtecxnext deleteEntry] response. status=${response.status}`)
|
|
456
461
|
// vte.cxからのset-cookieを転記
|
|
457
462
|
setCookie(response, res);
|
|
@@ -475,7 +480,7 @@ const deleteFolder = async (req, res, uri, async, targetService) => {
|
|
|
475
480
|
// vte.cxへリクエスト
|
|
476
481
|
const method = 'DELETE';
|
|
477
482
|
const url = `/p${uri}?_rf${async ? '&_async' : ''}`;
|
|
478
|
-
const response = await requestVtecx(method, url, req, null, targetService);
|
|
483
|
+
const response = await requestVtecx(method, url, req, null, null, targetService);
|
|
479
484
|
//console.log(`[vtecxnext deleteFolder] response. status=${response.status}`)
|
|
480
485
|
// vte.cxからのset-cookieを転記
|
|
481
486
|
setCookie(response, res);
|
|
@@ -500,7 +505,7 @@ const allocids = async (req, res, uri, num, targetService) => {
|
|
|
500
505
|
// vte.cxへリクエスト
|
|
501
506
|
const method = 'GET';
|
|
502
507
|
const url = `/p${uri}?_allocids=${num}`;
|
|
503
|
-
const response = await requestVtecx(method, url, req, null, targetService);
|
|
508
|
+
const response = await requestVtecx(method, url, req, null, null, targetService);
|
|
504
509
|
//console.log(`[vtecxnext allocids] response=${response}`)
|
|
505
510
|
// vte.cxからのset-cookieを転記
|
|
506
511
|
setCookie(response, res);
|
|
@@ -527,7 +532,7 @@ const addids = async (req, res, uri, num, targetService) => {
|
|
|
527
532
|
// vte.cxへリクエスト
|
|
528
533
|
const method = 'PUT';
|
|
529
534
|
const url = `/p${uri}?_addids=${num}`;
|
|
530
|
-
const response = await requestVtecx(method, url, req, null, targetService);
|
|
535
|
+
const response = await requestVtecx(method, url, req, null, null, targetService);
|
|
531
536
|
//console.log(`[vtecxnext addids] response=${response}`)
|
|
532
537
|
// vte.cxからのset-cookieを転記
|
|
533
538
|
setCookie(response, res);
|
|
@@ -552,7 +557,7 @@ const getids = async (req, res, uri, targetService) => {
|
|
|
552
557
|
// vte.cxへリクエスト
|
|
553
558
|
const method = 'GET';
|
|
554
559
|
const url = `/p${uri}?_getids`;
|
|
555
|
-
const response = await requestVtecx(method, url, req, null, targetService);
|
|
560
|
+
const response = await requestVtecx(method, url, req, null, null, targetService);
|
|
556
561
|
//console.log(`[vtecxnext getids] response=${response}`)
|
|
557
562
|
// vte.cxからのset-cookieを転記
|
|
558
563
|
setCookie(response, res);
|
|
@@ -579,7 +584,7 @@ const setids = async (req, res, uri, num, targetService) => {
|
|
|
579
584
|
// vte.cxへリクエスト
|
|
580
585
|
const method = 'PUT';
|
|
581
586
|
const url = `/p${uri}?_setids=${num}`;
|
|
582
|
-
const response = await requestVtecx(method, url, req, null, targetService);
|
|
587
|
+
const response = await requestVtecx(method, url, req, null, null, targetService);
|
|
583
588
|
//console.log(`[vtecxnext setids] response=${response}`)
|
|
584
589
|
// vte.cxからのset-cookieを転記
|
|
585
590
|
setCookie(response, res);
|
|
@@ -988,7 +993,7 @@ const pagination = async (req, res, uri, pagerange, targetService) => {
|
|
|
988
993
|
// vte.cxへリクエスト
|
|
989
994
|
const method = 'GET';
|
|
990
995
|
const url = `/p${uri}${uri.includes('?') ? '&' : '?'}_pagination=${pagerange}`;
|
|
991
|
-
const response = await requestVtecx(method, url, req, null, targetService);
|
|
996
|
+
const response = await requestVtecx(method, url, req, null, null, targetService);
|
|
992
997
|
//console.log(`[vtecxnext pagination] response=${response}`)
|
|
993
998
|
// vte.cxからのset-cookieを転記
|
|
994
999
|
setCookie(response, res);
|
|
@@ -1014,7 +1019,7 @@ const getPage = async (req, res, uri, num, targetService) => {
|
|
|
1014
1019
|
// vte.cxへリクエスト
|
|
1015
1020
|
const method = 'GET';
|
|
1016
1021
|
const url = `/p${uri}${uri.includes('?') ? '&' : '?'}n=${num}`;
|
|
1017
|
-
const response = await requestVtecx(method, url, req, null, targetService);
|
|
1022
|
+
const response = await requestVtecx(method, url, req, null, null, targetService);
|
|
1018
1023
|
//console.log(`[vtecxnext getPage] response=${response}`)
|
|
1019
1024
|
// vte.cxからのset-cookieを転記
|
|
1020
1025
|
setCookie(response, res);
|
|
@@ -1163,7 +1168,8 @@ const getBQCsv = async (req, res, sql, values, filename, parent) => {
|
|
|
1163
1168
|
};
|
|
1164
1169
|
exports.getBQCsv = getBQCsv;
|
|
1165
1170
|
/**
|
|
1166
|
-
* Create PDF
|
|
1171
|
+
* Create PDF.
|
|
1172
|
+
* Writes a PDF to the response.
|
|
1167
1173
|
* @param req request (for authentication)
|
|
1168
1174
|
* @param res response
|
|
1169
1175
|
* @param htmlTemplate PDF layout
|
|
@@ -1907,6 +1913,278 @@ const deleteusers = async (req, res, feed) => {
|
|
|
1907
1913
|
return await getJson(response);
|
|
1908
1914
|
};
|
|
1909
1915
|
exports.deleteusers = deleteusers;
|
|
1916
|
+
/**
|
|
1917
|
+
* save files
|
|
1918
|
+
* @param req request
|
|
1919
|
+
* @param res respose (for authentication)
|
|
1920
|
+
* @param uri key
|
|
1921
|
+
* @returns message
|
|
1922
|
+
*/
|
|
1923
|
+
const savefiles = async (req, res, uri) => {
|
|
1924
|
+
//console.log(`[vtecxnext savefiles] start. uri=${uri}`)
|
|
1925
|
+
// キー入力値チェック
|
|
1926
|
+
checkUri(uri);
|
|
1927
|
+
/* Get files using formidable */
|
|
1928
|
+
const formidableFiles = await new Promise((resolve, reject) => {
|
|
1929
|
+
const form = new formidable_1.default.IncomingForm();
|
|
1930
|
+
const files = [];
|
|
1931
|
+
form.on('file', (field, file) => {
|
|
1932
|
+
const partFile = { 'file': file, 'field': field };
|
|
1933
|
+
files.push(partFile);
|
|
1934
|
+
});
|
|
1935
|
+
form.on('end', () => resolve(files));
|
|
1936
|
+
form.on('error', err => reject(err));
|
|
1937
|
+
form.parse(req, () => {
|
|
1938
|
+
//
|
|
1939
|
+
});
|
|
1940
|
+
}).catch(e => {
|
|
1941
|
+
//console.log(e)
|
|
1942
|
+
throw new VtecxNextError(400, `${e}`);
|
|
1943
|
+
});
|
|
1944
|
+
//console.log(`[vtecxnext savefiles] formidableFiles.length=${formidableFiles ? formidableFiles.length : 0}`)
|
|
1945
|
+
if (!formidableFiles || formidableFiles.length < 1) {
|
|
1946
|
+
throw new VtecxNextError(400, `An upload file is required.`);
|
|
1947
|
+
}
|
|
1948
|
+
let contentUris = '';
|
|
1949
|
+
const promises = [];
|
|
1950
|
+
for (const formidableFile of formidableFiles) {
|
|
1951
|
+
//console.log(`[vtecxnext savefiles] formidableFile field=${formidableFile.field} filepath=${formidableFile.file.filepath} size=${formidableFile.file.size} mymetype=${formidableFile.file.mimetype} newFilename=${formidableFile.file.newFilename} originalFilename=${formidableFile.file.originalFilename}`)
|
|
1952
|
+
const fileBuffer = fs_1.default.readFileSync(formidableFile.file.filepath);
|
|
1953
|
+
fs_1.default.unlink(formidableFile.file.filepath, () => {
|
|
1954
|
+
//console.log(`[vtecxnext savefiles] fs.unlink: ${formidableFile.file.filepath}`)
|
|
1955
|
+
});
|
|
1956
|
+
// vte.cxへリクエスト
|
|
1957
|
+
const method = 'PUT';
|
|
1958
|
+
const contentUri = `${uri}${uri.endsWith('/') ? '' : '/'}${formidableFile.field}`;
|
|
1959
|
+
const url = `/p${contentUri}?_content`;
|
|
1960
|
+
const headers = { 'Content-Type': formidableFile.file.mimetype };
|
|
1961
|
+
//console.log(`[vtecxnext savefiles] request. url=${url}`)
|
|
1962
|
+
const promiseResponse = requestVtecx(method, url, req, fileBuffer, headers);
|
|
1963
|
+
promises.push(promiseResponse);
|
|
1964
|
+
// 戻り値用
|
|
1965
|
+
contentUris += `${contentUris ? ', ' : ''}${contentUri}`;
|
|
1966
|
+
}
|
|
1967
|
+
const msg = '';
|
|
1968
|
+
for (const promise of promises) {
|
|
1969
|
+
const response = await promise;
|
|
1970
|
+
//console.log(`[vtecxnext savefiles] response. status=${response.status}`)
|
|
1971
|
+
// vte.cxからのset-cookieを転記
|
|
1972
|
+
setCookie(response, res);
|
|
1973
|
+
// レスポンスのエラーチェック
|
|
1974
|
+
await checkVtecxResponse(response);
|
|
1975
|
+
}
|
|
1976
|
+
return { 'feed': { 'title': contentUris } };
|
|
1977
|
+
/* API RouteでFormDataを使用するとうまくいかなかった。(リクエスト先の受信データサイズが0になる。)
|
|
1978
|
+
const formData = new FormData()
|
|
1979
|
+
if (formidableFiles?.length) {
|
|
1980
|
+
for (const formidableFile of formidableFiles) {
|
|
1981
|
+
//console.log(`[vtecxnext savefiles] formidableFile field=${formidableFile.field} filepath=${formidableFile.file.filepath} size=${formidableFile.file.size} mymetype=${formidableFile.file.mimetype} newFilename=${formidableFile.file.newFilename} originalFilename=${formidableFile.file.originalFilename}`)
|
|
1982
|
+
|
|
1983
|
+
const buffer:Buffer = fs.readFileSync(formidableFile.file.filepath)
|
|
1984
|
+
const file:Blob = new Blob([buffer])
|
|
1985
|
+
|
|
1986
|
+
//console.log(`[vtecxnext savefiles] file.size=${file.size} file.length=${file.length} file.name=${file.name} file.type=${file.type}`)
|
|
1987
|
+
|
|
1988
|
+
formData.append(formidableFile.field, file, formidableFile.file.originalFilename ? formidableFile.file.originalFilename : undefined)
|
|
1989
|
+
}
|
|
1990
|
+
}
|
|
1991
|
+
|
|
1992
|
+
// vte.cxへリクエスト
|
|
1993
|
+
const method = 'POST'
|
|
1994
|
+
const url = `/p${uri}?_content`
|
|
1995
|
+
//console.log(`[vtecxnext savefiles] request. url=${url}`)
|
|
1996
|
+
const response = await requestVtecx(method, url, req, formData)
|
|
1997
|
+
//console.log(`[vtecxnext savefiles] response. status=${response.status}`)
|
|
1998
|
+
// vte.cxからのset-cookieを転記
|
|
1999
|
+
setCookie(response, res)
|
|
2000
|
+
// レスポンスのエラーチェック
|
|
2001
|
+
await checkVtecxResponse(response)
|
|
2002
|
+
return await getJson(response)
|
|
2003
|
+
*/
|
|
2004
|
+
};
|
|
2005
|
+
exports.savefiles = savefiles;
|
|
2006
|
+
/**
|
|
2007
|
+
* upload content
|
|
2008
|
+
* @param req request (for authentication)
|
|
2009
|
+
* @param res response (for authentication)
|
|
2010
|
+
* @param uri key
|
|
2011
|
+
* @return message
|
|
2012
|
+
*/
|
|
2013
|
+
const putcontent = async (req, res, uri) => {
|
|
2014
|
+
//console.log(`[vtecxnext putcontent] start. uri=${uri} content-type:${req.headers['content-type']} content-length:${req.headers['content-length']}`)
|
|
2015
|
+
// キー入力値チェック
|
|
2016
|
+
checkUri(uri);
|
|
2017
|
+
// vte.cxへリクエスト
|
|
2018
|
+
const method = 'PUT';
|
|
2019
|
+
const url = `/p${uri}?_content`;
|
|
2020
|
+
//const headers = {'Content-Type' : req.headers['content-type'], 'Content-Length' : req.headers['content-length']}
|
|
2021
|
+
const headers = { 'Content-Type': req.headers['content-type'] };
|
|
2022
|
+
const buf = await buffer(req);
|
|
2023
|
+
const response = await requestVtecx(method, url, req, buf, headers);
|
|
2024
|
+
//console.log(`[vtecxnext putcontent] response. status=${response.status}`)
|
|
2025
|
+
// vte.cxからのset-cookieを転記
|
|
2026
|
+
setCookie(response, res);
|
|
2027
|
+
// レスポンスのエラーチェック
|
|
2028
|
+
await checkVtecxResponse(response);
|
|
2029
|
+
return await getJson(response);
|
|
2030
|
+
};
|
|
2031
|
+
exports.putcontent = putcontent;
|
|
2032
|
+
/**
|
|
2033
|
+
* delete content
|
|
2034
|
+
* @param req request (for authentication)
|
|
2035
|
+
* @param res response (for authentication)
|
|
2036
|
+
* @param uri key
|
|
2037
|
+
* @return message
|
|
2038
|
+
*/
|
|
2039
|
+
const deletecontent = async (req, res, uri) => {
|
|
2040
|
+
//console.log(`[vtecxnext deletecontent] start. uri=${uri}`)
|
|
2041
|
+
// キー入力値チェック
|
|
2042
|
+
checkUri(uri);
|
|
2043
|
+
// vte.cxへリクエスト
|
|
2044
|
+
const method = 'DELETE';
|
|
2045
|
+
const url = `/p${uri}?_content`;
|
|
2046
|
+
const response = await requestVtecx(method, url, req);
|
|
2047
|
+
//console.log(`[vtecxnext deletecontent] response. status=${response.status}`)
|
|
2048
|
+
// vte.cxからのset-cookieを転記
|
|
2049
|
+
setCookie(response, res);
|
|
2050
|
+
// レスポンスのエラーチェック
|
|
2051
|
+
await checkVtecxResponse(response);
|
|
2052
|
+
return await getJson(response);
|
|
2053
|
+
};
|
|
2054
|
+
exports.deletecontent = deletecontent;
|
|
2055
|
+
/**
|
|
2056
|
+
* get content.
|
|
2057
|
+
* Writes a content to the response.
|
|
2058
|
+
* @param req request (for authentication)
|
|
2059
|
+
* @param res response (for authentication)
|
|
2060
|
+
* @param uri key
|
|
2061
|
+
* @return true
|
|
2062
|
+
*/
|
|
2063
|
+
const getcontent = async (req, res, uri) => {
|
|
2064
|
+
//console.log(`[vtecxnext getcontent] start. uri=${uri}`)
|
|
2065
|
+
// キー入力値チェック
|
|
2066
|
+
checkUri(uri);
|
|
2067
|
+
// vte.cxへリクエスト
|
|
2068
|
+
const method = 'GET';
|
|
2069
|
+
const url = `/p${uri}?_content`;
|
|
2070
|
+
const response = await requestVtecx(method, url, req);
|
|
2071
|
+
//console.log(`[vtecxnext getcontent] response. status=${response.status}`)
|
|
2072
|
+
// vte.cxからのset-cookieを転記
|
|
2073
|
+
setCookie(response, res);
|
|
2074
|
+
//console.log(`[vtecxnext getcontent] setCookie end.`)
|
|
2075
|
+
// レスポンスのエラーチェック
|
|
2076
|
+
await checkVtecxResponse(response);
|
|
2077
|
+
//console.log(`[vtecxnext getcontent] checkVtecxResponse end.`)
|
|
2078
|
+
// 戻り値
|
|
2079
|
+
const resData = await response.blob();
|
|
2080
|
+
setResponseHeaders(response, res);
|
|
2081
|
+
res.statusCode = response.status;
|
|
2082
|
+
if (response.status !== 204) {
|
|
2083
|
+
const csvData = await resData.arrayBuffer();
|
|
2084
|
+
res.end(new Uint8Array(csvData));
|
|
2085
|
+
}
|
|
2086
|
+
else {
|
|
2087
|
+
res.end();
|
|
2088
|
+
}
|
|
2089
|
+
return true;
|
|
2090
|
+
};
|
|
2091
|
+
exports.getcontent = getcontent;
|
|
2092
|
+
/**
|
|
2093
|
+
* add acl
|
|
2094
|
+
* @param req request (for authentication)
|
|
2095
|
+
* @param res response (for authentication)
|
|
2096
|
+
* @param feed entries
|
|
2097
|
+
* @return message
|
|
2098
|
+
*/
|
|
2099
|
+
const addacl = async (req, res, feed) => {
|
|
2100
|
+
//console.log('[vtecxnext addacl] start.')
|
|
2101
|
+
// 入力チェック
|
|
2102
|
+
checkNotNull(feed, 'Feed');
|
|
2103
|
+
// vte.cxへリクエスト
|
|
2104
|
+
const method = 'PUT';
|
|
2105
|
+
const url = `/d/?_addacl`;
|
|
2106
|
+
const response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
2107
|
+
//console.log(`[vtecxnext addacl] response=${response}`)
|
|
2108
|
+
// vte.cxからのset-cookieを転記
|
|
2109
|
+
setCookie(response, res);
|
|
2110
|
+
// レスポンスのエラーチェック
|
|
2111
|
+
await checkVtecxResponse(response);
|
|
2112
|
+
// 戻り値
|
|
2113
|
+
return await getJson(response);
|
|
2114
|
+
};
|
|
2115
|
+
exports.addacl = addacl;
|
|
2116
|
+
/**
|
|
2117
|
+
* remove acl
|
|
2118
|
+
* @param req request (for authentication)
|
|
2119
|
+
* @param res response (for authentication)
|
|
2120
|
+
* @param feed entries
|
|
2121
|
+
* @return message
|
|
2122
|
+
*/
|
|
2123
|
+
const removeacl = async (req, res, feed) => {
|
|
2124
|
+
//console.log('[vtecxnext removeacl] start.')
|
|
2125
|
+
// 入力チェック
|
|
2126
|
+
checkNotNull(feed, 'Feed');
|
|
2127
|
+
// vte.cxへリクエスト
|
|
2128
|
+
const method = 'PUT';
|
|
2129
|
+
const url = `/d/?_removeacl`;
|
|
2130
|
+
const response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
2131
|
+
//console.log(`[vtecxnext removeacl] response=${response}`)
|
|
2132
|
+
// vte.cxからのset-cookieを転記
|
|
2133
|
+
setCookie(response, res);
|
|
2134
|
+
// レスポンスのエラーチェック
|
|
2135
|
+
await checkVtecxResponse(response);
|
|
2136
|
+
// 戻り値
|
|
2137
|
+
return await getJson(response);
|
|
2138
|
+
};
|
|
2139
|
+
exports.removeacl = removeacl;
|
|
2140
|
+
/**
|
|
2141
|
+
* add alias
|
|
2142
|
+
* @param req request (for authentication)
|
|
2143
|
+
* @param res response (for authentication)
|
|
2144
|
+
* @param feed entries
|
|
2145
|
+
* @return message
|
|
2146
|
+
*/
|
|
2147
|
+
const addalias = async (req, res, feed) => {
|
|
2148
|
+
//console.log('[vtecxnext addalias] start.')
|
|
2149
|
+
// 入力チェック
|
|
2150
|
+
checkNotNull(feed, 'Feed');
|
|
2151
|
+
// vte.cxへリクエスト
|
|
2152
|
+
const method = 'PUT';
|
|
2153
|
+
const url = `/d/?_addalias`;
|
|
2154
|
+
const response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
2155
|
+
//console.log(`[vtecxnext addalias] response=${response}`)
|
|
2156
|
+
// vte.cxからのset-cookieを転記
|
|
2157
|
+
setCookie(response, res);
|
|
2158
|
+
// レスポンスのエラーチェック
|
|
2159
|
+
await checkVtecxResponse(response);
|
|
2160
|
+
// 戻り値
|
|
2161
|
+
return await getJson(response);
|
|
2162
|
+
};
|
|
2163
|
+
exports.addalias = addalias;
|
|
2164
|
+
/**
|
|
2165
|
+
* remove alias
|
|
2166
|
+
* @param req request (for authentication)
|
|
2167
|
+
* @param res response (for authentication)
|
|
2168
|
+
* @param feed entries
|
|
2169
|
+
* @return message
|
|
2170
|
+
*/
|
|
2171
|
+
const removealias = async (req, res, feed) => {
|
|
2172
|
+
//console.log('[vtecxnext removealias] start.')
|
|
2173
|
+
// 入力チェック
|
|
2174
|
+
checkNotNull(feed, 'Feed');
|
|
2175
|
+
// vte.cxへリクエスト
|
|
2176
|
+
const method = 'PUT';
|
|
2177
|
+
const url = `/d/?_removealias`;
|
|
2178
|
+
const response = await requestVtecx(method, url, req, JSON.stringify(feed));
|
|
2179
|
+
//console.log(`[vtecxnext removealias] response=${response}`)
|
|
2180
|
+
// vte.cxからのset-cookieを転記
|
|
2181
|
+
setCookie(response, res);
|
|
2182
|
+
// レスポンスのエラーチェック
|
|
2183
|
+
await checkVtecxResponse(response);
|
|
2184
|
+
// 戻り値
|
|
2185
|
+
return await getJson(response);
|
|
2186
|
+
};
|
|
2187
|
+
exports.removealias = removealias;
|
|
1910
2188
|
//---------------------------------------------
|
|
1911
2189
|
/**
|
|
1912
2190
|
* Error returned from vte.cx
|
|
@@ -1930,10 +2208,15 @@ exports.VtecxNextError = VtecxNextError;
|
|
|
1930
2208
|
* @param targetService 連携サービス名
|
|
1931
2209
|
* @returns promise
|
|
1932
2210
|
*/
|
|
1933
|
-
const requestVtecx = async (method, url, req, body, targetService) => {
|
|
2211
|
+
const requestVtecx = async (method, url, req, body, additionalHeaders, targetService) => {
|
|
1934
2212
|
// cookieの値をvte.cxへのリクエストヘッダに設定
|
|
1935
2213
|
const cookie = req ? req.headers['cookie'] : undefined;
|
|
1936
2214
|
const headers = cookie ? { 'Cookie': cookie } : {};
|
|
2215
|
+
if (additionalHeaders) {
|
|
2216
|
+
for (const key in additionalHeaders) {
|
|
2217
|
+
headers[key] = additionalHeaders[key];
|
|
2218
|
+
}
|
|
2219
|
+
}
|
|
1937
2220
|
if (targetService) {
|
|
1938
2221
|
// サービス連携の場合
|
|
1939
2222
|
const servicekey = process.env[`SERVICEKEY_${targetService}`];
|
|
@@ -2076,7 +2359,7 @@ const editBqTableNames = (tablenames) => {
|
|
|
2076
2359
|
return null;
|
|
2077
2360
|
}
|
|
2078
2361
|
let result = '';
|
|
2079
|
-
for (
|
|
2362
|
+
for (const key in tablenames) {
|
|
2080
2363
|
const value = tablenames[key];
|
|
2081
2364
|
//console.log(`[editBqTableNames] ${key}=${value}`)
|
|
2082
2365
|
result = `${result ? result + ',' : ''}${key}:${value}`;
|
|
@@ -2112,7 +2395,7 @@ const formatSql = (sql, values) => {
|
|
|
2112
2395
|
if (!values) {
|
|
2113
2396
|
return sql;
|
|
2114
2397
|
}
|
|
2115
|
-
return
|
|
2398
|
+
return sqlstring_1.default.format(sql, values);
|
|
2116
2399
|
};
|
|
2117
2400
|
/**
|
|
2118
2401
|
* linkの編集
|
|
@@ -2134,3 +2417,15 @@ const getLinks = (rel, hrefs) => {
|
|
|
2134
2417
|
//console.log(`[vtecxnext getLinks] links=${JSON.stringify(links)}`)
|
|
2135
2418
|
return links;
|
|
2136
2419
|
};
|
|
2420
|
+
/**
|
|
2421
|
+
* ストリームからバイナリデータを取得
|
|
2422
|
+
* @param readable Readable
|
|
2423
|
+
* @returns バイナリデータ
|
|
2424
|
+
*/
|
|
2425
|
+
const buffer = async (readable) => {
|
|
2426
|
+
const chunks = [];
|
|
2427
|
+
for await (const chunk of readable) {
|
|
2428
|
+
chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk);
|
|
2429
|
+
}
|
|
2430
|
+
return Buffer.concat(chunks);
|
|
2431
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vtecx/vtecxnext",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "vte.cx Next.js api",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -22,12 +22,14 @@
|
|
|
22
22
|
},
|
|
23
23
|
"homepage": "https://github.com/reflexworks/vtecxnext#readme",
|
|
24
24
|
"devDependencies": {
|
|
25
|
+
"@types/formidable": "^2.0.5",
|
|
25
26
|
"@types/node": "^18.11.17",
|
|
26
27
|
"@types/sqlstring": "^2.3.0",
|
|
27
28
|
"ts-node": "^10.9.1",
|
|
28
29
|
"typescript": "^4.9.4"
|
|
29
30
|
},
|
|
30
31
|
"dependencies": {
|
|
32
|
+
"formidable": "^2.1.1",
|
|
31
33
|
"sqlstring": "^2.3.3"
|
|
32
34
|
}
|
|
33
35
|
}
|