@ingestkorea/client-sens 1.4.1 → 1.4.2

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
@@ -61,10 +61,16 @@ const client = new SensClient({
61
61
  serviceId: {
62
62
  sms: 'ncp:sms:kr:123456789xxx:your-service-name', // optional
63
63
  kakao: 'ncp:kkobizmsg:kr:9876xxx:your-service-name' // optional
64
- // at least one serviceId required
65
- // if you call send operation without serviceId, sdk throw error
66
64
  }
67
65
  });
66
+
67
+ /**
68
+ * accessKey, secretKey: https://www.ncloud.com/mypage/manage/authkey
69
+ * serviceId: https://console.ncloud.com/sens/project
70
+ *
71
+ * at least one serviceId required
72
+ * if you call send operation without serviceId, sdk throw error
73
+ */
68
74
  ```
69
75
 
70
76
  #### SendAlimtalk
@@ -30,7 +30,8 @@ class SensClient {
30
30
  return __awaiter(this, void 0, void 0, function* () {
31
31
  let input = command.input;
32
32
  let request = yield command.serialize(input, this.config);
33
- request = yield (0, middleware_1.middlewareSigner)(request, this.config);
33
+ request = yield (0, middleware_1.middlewareNcpSigner)(request, this.config);
34
+ request = yield (0, middleware_1.middlewareIngestkoreaMetadata)(request, this.config);
34
35
  let { response } = yield this.httpHandler.handle(request);
35
36
  let output = yield command.deserialize(response);
36
37
  return output;
@@ -14,4 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./signer"), exports);
17
+ __exportStar(require("./signer-ncp"), exports);
18
+ __exportStar(require("./metadata-ingestkorea"), exports);
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.middlewareIngestkoreaMetadata = void 0;
13
+ const middlewareIngestkoreaMetadata = (request, config) => __awaiter(void 0, void 0, void 0, function* () {
14
+ const { longDate } = yield convertFormatDate(request.headers['x-ncp-apigw-timestamp']);
15
+ request.headers = Object.assign(Object.assign({}, request.headers), { ['x-ingestkorea-date']: longDate, ['x-ingestkorea-user-agent']: '@ingestkorea/client-sens/1.4.x' });
16
+ return request;
17
+ });
18
+ exports.middlewareIngestkoreaMetadata = middlewareIngestkoreaMetadata;
19
+ /**
20
+ * @param input milliseconds
21
+ */
22
+ const convertFormatDate = (input) => __awaiter(void 0, void 0, void 0, function* () {
23
+ let milliseconds = input ? Number(input) : new Date().getTime();
24
+ let iso8601 = new Date(milliseconds).toISOString().replace(/\.\d{3}Z$/, "Z");
25
+ let longDate = iso8601.replace(/[\-:]/g, "");
26
+ let shortDate = longDate.slice(0, 8);
27
+ return { longDate, shortDate };
28
+ });
@@ -9,12 +9,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.middlewareSigner = void 0;
12
+ exports.middlewareNcpSigner = void 0;
13
13
  const crypto_1 = require("crypto");
14
- const middlewareSigner = (request, config) => __awaiter(void 0, void 0, void 0, function* () {
14
+ const util_http_handler_1 = require("@ingestkorea/util-http-handler");
15
+ const middlewareNcpSigner = (request, config) => __awaiter(void 0, void 0, void 0, function* () {
15
16
  const { accessKey, secretKey } = config.credentials;
16
17
  const method = request.method;
17
- const queryString = new URLSearchParams(request.query).toString();
18
+ const queryString = (0, util_http_handler_1.buildQueryString)(request.query);
18
19
  const path = queryString ? `${request.path}?${queryString}` : request.path;
19
20
  const space = " ";
20
21
  const newLine = "\n";
@@ -28,4 +29,4 @@ const middlewareSigner = (request, config) => __awaiter(void 0, void 0, void 0,
28
29
  request.headers = Object.assign(Object.assign({}, request.headers), { ['x-ncp-iam-access-key']: accessKey, ['x-ncp-apigw-timestamp']: timestamp, ['x-ncp-apigw-signature-v2']: signature });
29
30
  return request;
30
31
  });
31
- exports.middlewareSigner = middlewareSigner;
32
+ exports.middlewareNcpSigner = middlewareNcpSigner;
@@ -1,6 +1,6 @@
1
1
  import { NodeHttpHandler } from '@ingestkorea/util-http-handler';
2
2
  import { IngestkoreaError } from '@ingestkorea/util-error-handler';
3
- import { middlewareSigner } from './middleware';
3
+ import { middlewareNcpSigner, middlewareIngestkoreaMetadata } from './middleware';
4
4
  ;
5
5
  ;
6
6
  export class SensClient {
@@ -17,7 +17,8 @@ export class SensClient {
17
17
  async send(command) {
18
18
  let input = command.input;
19
19
  let request = await command.serialize(input, this.config);
20
- request = await middlewareSigner(request, this.config);
20
+ request = await middlewareNcpSigner(request, this.config);
21
+ request = await middlewareIngestkoreaMetadata(request, this.config);
21
22
  let { response } = await this.httpHandler.handle(request);
22
23
  let output = await command.deserialize(response);
23
24
  return output;
@@ -1 +1,2 @@
1
- export * from './signer';
1
+ export * from './signer-ncp';
2
+ export * from './metadata-ingestkorea';
@@ -0,0 +1,19 @@
1
+ export const middlewareIngestkoreaMetadata = async (request, config) => {
2
+ const { longDate } = await convertFormatDate(request.headers['x-ncp-apigw-timestamp']);
3
+ request.headers = {
4
+ ...request.headers,
5
+ ['x-ingestkorea-date']: longDate,
6
+ ['x-ingestkorea-user-agent']: '@ingestkorea/client-sens/1.4.x'
7
+ };
8
+ return request;
9
+ };
10
+ /**
11
+ * @param input milliseconds
12
+ */
13
+ const convertFormatDate = async (input) => {
14
+ let milliseconds = input ? Number(input) : new Date().getTime();
15
+ let iso8601 = new Date(milliseconds).toISOString().replace(/\.\d{3}Z$/, "Z");
16
+ let longDate = iso8601.replace(/[\-:]/g, "");
17
+ let shortDate = longDate.slice(0, 8);
18
+ return { longDate, shortDate };
19
+ };
@@ -1,8 +1,9 @@
1
1
  import { createHmac } from 'crypto';
2
- export const middlewareSigner = async (request, config) => {
2
+ import { buildQueryString } from '@ingestkorea/util-http-handler';
3
+ export const middlewareNcpSigner = async (request, config) => {
3
4
  const { accessKey, secretKey } = config.credentials;
4
5
  const method = request.method;
5
- const queryString = new URLSearchParams(request.query).toString();
6
+ const queryString = buildQueryString(request.query);
6
7
  const path = queryString ? `${request.path}?${queryString}` : request.path;
7
8
  const space = " ";
8
9
  const newLine = "\n";
@@ -1 +1,2 @@
1
- export * from './signer';
1
+ export * from './signer-ncp';
2
+ export * from './metadata-ingestkorea';
@@ -0,0 +1,3 @@
1
+ import { HttpRequest } from '@ingestkorea/util-http-handler';
2
+ import { SensClientResolvedConfig } from '../SensClient';
3
+ export declare const middlewareIngestkoreaMetadata: (request: HttpRequest, config: SensClientResolvedConfig) => Promise<HttpRequest>;
@@ -0,0 +1,3 @@
1
+ import { HttpRequest } from '@ingestkorea/util-http-handler';
2
+ import { SensClientResolvedConfig } from '../SensClient';
3
+ export declare const middlewareNcpSigner: (request: HttpRequest, config: SensClientResolvedConfig) => Promise<HttpRequest>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ingestkorea/client-sens",
3
- "version": "1.4.1",
3
+ "version": "1.4.2",
4
4
  "description": "INGESTKOREA SDK Naver Cloud Platform SENS Client for Node.js.",
5
5
  "main": "./dist-cjs/index.js",
6
6
  "module": "./dist-es/index.js",
@@ -1,3 +0,0 @@
1
- import { HttpRequest } from '@ingestkorea/util-http-handler';
2
- import { SensClientResolvedConfig } from '../SensClient';
3
- export declare const middlewareSigner: (request: HttpRequest, config: SensClientResolvedConfig) => Promise<HttpRequest>;