@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.
@@ -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
- var SqlString = require('sqlstring');
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 (let key in tablenames) {
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 SqlString.format(sql, values);
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",
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
  }