@ingestkorea/client-sens 1.5.2 → 1.6.0

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.
Files changed (133) hide show
  1. package/.github/pull_request_template.md +6 -1
  2. package/LICENSE +2 -2
  3. package/README.md +56 -38
  4. package/dist-cjs/SensClient.js +12 -12
  5. package/dist-cjs/commands/GetAlimtalkResultCommand.js +4 -7
  6. package/dist-cjs/commands/GetAlimtalkStatusCommand.js +4 -7
  7. package/dist-cjs/commands/GetAlimtalkTemplateCommand.js +4 -7
  8. package/dist-cjs/commands/GetSMSResultCommand.js +4 -6
  9. package/dist-cjs/commands/GetSMSStatusCommand.js +4 -6
  10. package/dist-cjs/commands/ListAlimtalkChannelsCommand.js +4 -7
  11. package/dist-cjs/commands/ListAlimtalkTemplatesCommand.js +4 -7
  12. package/dist-cjs/commands/SendAlimtalkCommand.js +8 -9
  13. package/dist-cjs/commands/SendMMSCommand.js +40 -30
  14. package/dist-cjs/commands/SendSMSCommand.js +19 -18
  15. package/dist-cjs/commands/constants.js +2 -2
  16. package/dist-cjs/middleware/index.js +4 -2
  17. package/dist-cjs/middleware/{metadata-ingestkorea.js → middleware-metadata.js} +3 -12
  18. package/dist-cjs/middleware/middleware-retry.js +58 -0
  19. package/dist-cjs/middleware/{signer-ncp.js → middleware-sign.js} +3 -7
  20. package/dist-cjs/middleware/middleware-sort-headers.js +25 -0
  21. package/dist-cjs/models/GetAlimtalkResult.js +0 -3
  22. package/dist-cjs/models/GetAlimtalkStatus.js +0 -3
  23. package/dist-cjs/models/GetAlimtalkTemplate.js +0 -2
  24. package/dist-cjs/models/GetSMSResult.js +0 -4
  25. package/dist-cjs/models/GetSMSStatus.js +0 -3
  26. package/dist-cjs/models/ListAlimtalkChannels.js +0 -3
  27. package/dist-cjs/models/ListAlimtalkTemplates.js +0 -5
  28. package/dist-cjs/models/MetadataBearer.js +2 -0
  29. package/dist-cjs/models/Middleware.js +2 -0
  30. package/dist-cjs/models/SendAlimtalk.js +0 -5
  31. package/dist-cjs/models/SendMMS.js +0 -2
  32. package/dist-cjs/models/SendSMS.js +0 -2
  33. package/dist-cjs/models/SensCommand.js +0 -2
  34. package/dist-cjs/models/index.js +2 -0
  35. package/dist-cjs/protocols/GetAlimtalkResult.js +11 -12
  36. package/dist-cjs/protocols/GetAlimtalkStatus.js +13 -14
  37. package/dist-cjs/protocols/GetAlimtalkTemplate.js +12 -12
  38. package/dist-cjs/protocols/GetSMSResult.js +15 -15
  39. package/dist-cjs/protocols/GetSMSStatus.js +13 -13
  40. package/dist-cjs/protocols/ListAlimtalkChannels.js +13 -13
  41. package/dist-cjs/protocols/ListAlimtalkTemplates.js +22 -21
  42. package/dist-cjs/protocols/SendAlimtalk.js +13 -14
  43. package/dist-cjs/protocols/SendMMS.js +11 -11
  44. package/dist-cjs/protocols/SendSMS.js +11 -11
  45. package/dist-cjs/protocols/constants.js +17 -8
  46. package/dist-es/SensClient.js +15 -15
  47. package/dist-es/commands/GetAlimtalkResultCommand.js +8 -11
  48. package/dist-es/commands/GetAlimtalkStatusCommand.js +8 -11
  49. package/dist-es/commands/GetAlimtalkTemplateCommand.js +8 -11
  50. package/dist-es/commands/GetSMSResultCommand.js +8 -10
  51. package/dist-es/commands/GetSMSStatusCommand.js +8 -10
  52. package/dist-es/commands/ListAlimtalkChannelsCommand.js +8 -11
  53. package/dist-es/commands/ListAlimtalkTemplatesCommand.js +8 -11
  54. package/dist-es/commands/SendAlimtalkCommand.js +13 -14
  55. package/dist-es/commands/SendMMSCommand.js +48 -38
  56. package/dist-es/commands/SendSMSCommand.js +23 -22
  57. package/dist-es/commands/constants.js +2 -2
  58. package/dist-es/commands/index.js +10 -10
  59. package/dist-es/index.js +2 -2
  60. package/dist-es/middleware/index.js +4 -2
  61. package/dist-es/middleware/middleware-metadata.js +6 -0
  62. package/dist-es/middleware/middleware-retry.js +51 -0
  63. package/dist-es/middleware/{signer-ncp.js → middleware-sign.js} +7 -11
  64. package/dist-es/middleware/middleware-sort-headers.js +12 -0
  65. package/dist-es/models/GetAlimtalkResult.js +0 -3
  66. package/dist-es/models/GetAlimtalkStatus.js +0 -3
  67. package/dist-es/models/GetAlimtalkTemplate.js +0 -2
  68. package/dist-es/models/GetSMSResult.js +0 -4
  69. package/dist-es/models/GetSMSStatus.js +0 -3
  70. package/dist-es/models/ListAlimtalkChannels.js +0 -3
  71. package/dist-es/models/ListAlimtalkTemplates.js +0 -5
  72. package/dist-es/models/MetadataBearer.js +1 -0
  73. package/dist-es/models/Middleware.js +1 -0
  74. package/dist-es/models/SendAlimtalk.js +0 -5
  75. package/dist-es/models/SendMMS.js +0 -2
  76. package/dist-es/models/SendSMS.js +0 -2
  77. package/dist-es/models/SensCommand.js +0 -2
  78. package/dist-es/models/index.js +13 -11
  79. package/dist-es/protocols/GetAlimtalkResult.js +18 -15
  80. package/dist-es/protocols/GetAlimtalkStatus.js +20 -17
  81. package/dist-es/protocols/GetAlimtalkTemplate.js +20 -16
  82. package/dist-es/protocols/GetSMSResult.js +22 -18
  83. package/dist-es/protocols/GetSMSStatus.js +20 -16
  84. package/dist-es/protocols/ListAlimtalkChannels.js +20 -16
  85. package/dist-es/protocols/ListAlimtalkTemplates.js +29 -24
  86. package/dist-es/protocols/SendAlimtalk.js +20 -17
  87. package/dist-es/protocols/SendMMS.js +18 -14
  88. package/dist-es/protocols/SendSMS.js +19 -15
  89. package/dist-es/protocols/constants.js +17 -9
  90. package/dist-es/protocols/index.js +10 -10
  91. package/dist-types/SensClient.d.ts +2 -2
  92. package/dist-types/commands/GetAlimtalkResultCommand.d.ts +8 -5
  93. package/dist-types/commands/GetAlimtalkStatusCommand.d.ts +8 -5
  94. package/dist-types/commands/GetAlimtalkTemplateCommand.d.ts +8 -5
  95. package/dist-types/commands/GetSMSResultCommand.d.ts +8 -5
  96. package/dist-types/commands/GetSMSStatusCommand.d.ts +8 -5
  97. package/dist-types/commands/ListAlimtalkChannelsCommand.d.ts +8 -5
  98. package/dist-types/commands/ListAlimtalkTemplatesCommand.d.ts +8 -5
  99. package/dist-types/commands/SendAlimtalkCommand.d.ts +8 -5
  100. package/dist-types/commands/SendMMSCommand.d.ts +8 -5
  101. package/dist-types/commands/SendSMSCommand.d.ts +8 -5
  102. package/dist-types/commands/index.d.ts +10 -10
  103. package/dist-types/index.d.ts +2 -2
  104. package/dist-types/middleware/index.d.ts +4 -2
  105. package/dist-types/middleware/middleware-metadata.d.ts +2 -0
  106. package/dist-types/middleware/middleware-retry.d.ts +2 -0
  107. package/dist-types/middleware/middleware-sign.d.ts +2 -0
  108. package/dist-types/middleware/middleware-sort-headers.d.ts +2 -0
  109. package/dist-types/models/GetAlimtalkResult.d.ts +1 -1
  110. package/dist-types/models/GetAlimtalkStatus.d.ts +1 -1
  111. package/dist-types/models/GetAlimtalkTemplate.d.ts +1 -1
  112. package/dist-types/models/MetadataBearer.d.ts +8 -0
  113. package/dist-types/models/Middleware.d.ts +12 -0
  114. package/dist-types/models/SendMMS.d.ts +1 -1
  115. package/dist-types/models/SendSMS.d.ts +3 -3
  116. package/dist-types/models/SensCommand.d.ts +6 -2
  117. package/dist-types/models/index.d.ts +13 -11
  118. package/dist-types/protocols/GetAlimtalkResult.d.ts +8 -5
  119. package/dist-types/protocols/GetAlimtalkStatus.d.ts +8 -5
  120. package/dist-types/protocols/GetAlimtalkTemplate.d.ts +8 -5
  121. package/dist-types/protocols/GetSMSResult.d.ts +8 -5
  122. package/dist-types/protocols/GetSMSStatus.d.ts +8 -5
  123. package/dist-types/protocols/ListAlimtalkChannels.d.ts +8 -5
  124. package/dist-types/protocols/ListAlimtalkTemplates.d.ts +8 -5
  125. package/dist-types/protocols/SendAlimtalk.d.ts +8 -5
  126. package/dist-types/protocols/SendMMS.d.ts +8 -5
  127. package/dist-types/protocols/SendSMS.d.ts +8 -5
  128. package/dist-types/protocols/constants.d.ts +3 -1
  129. package/dist-types/protocols/index.d.ts +10 -10
  130. package/package.json +4 -3
  131. package/dist-es/middleware/metadata-ingestkorea.js +0 -19
  132. package/dist-types/middleware/metadata-ingestkorea.d.ts +0 -3
  133. package/dist-types/middleware/signer-ncp.d.ts +0 -3
@@ -17,77 +17,83 @@ const constants_1 = require("./constants");
17
17
  const node_path_1 = require("node:path");
18
18
  const node_crypto_1 = require("node:crypto");
19
19
  const node_fs_1 = require("node:fs");
20
- ;
21
- ;
22
20
  class SendMMSCommand extends models_1.SensCommand {
23
21
  constructor(input) {
24
22
  super(input);
25
23
  this.input = Object.assign(Object.assign({}, input), { from: (0, constants_1.prettyPhoneNum)(input.from), content: resolveInputContent(input.content), type: resolveInputMessageType(input.type), messages: resolveInputMessages(input.messages), files: resolveInputFiles(input.files) });
26
24
  }
27
- ;
28
25
  serialize(input, config) {
29
26
  return __awaiter(this, void 0, void 0, function* () {
30
27
  if (!config.serviceId.sms)
31
28
  throw new util_error_handler_1.IngestkoreaError({
32
- code: 400, type: 'Bad Request', message: 'Invalid Params', description: 'Please Check SMS ServiceId'
29
+ code: 400,
30
+ type: "Bad Request",
31
+ message: "Invalid Params",
32
+ description: "Please Check SMS ServiceId",
33
33
  });
34
34
  let request = yield (0, SendMMS_1.serializeIngestkorea_restJson_SendMMSCommand)(input, config);
35
35
  return request;
36
36
  });
37
37
  }
38
- ;
39
38
  deserialize(response) {
40
39
  return __awaiter(this, void 0, void 0, function* () {
41
40
  let output = yield (0, SendMMS_1.deserializeIngestkorea_restJson_SendMMSCommand)(response);
42
41
  return output;
43
42
  });
44
43
  }
45
- ;
46
44
  }
47
45
  exports.SendMMSCommand = SendMMSCommand;
48
- ;
49
46
  const resolveInputContent = (content) => {
50
47
  const resolvedContent = (0, constants_1.trimText)(content);
51
48
  const contentLength = (0, constants_1.getContentLength)(resolvedContent);
52
49
  if (!contentLength)
53
50
  throw new util_error_handler_1.IngestkoreaError({
54
- code: 400, type: 'Bad Request',
55
- message: 'Invalid Request', description: `Please check input message`
51
+ code: 400,
52
+ type: "Bad Request",
53
+ message: "Invalid Request",
54
+ description: `Please check input message`,
56
55
  });
57
56
  if (contentLength > constants_1.LMS_MAX)
58
57
  throw new util_error_handler_1.IngestkoreaError({
59
- code: 400, type: 'Bad Request',
60
- message: 'Invalid Request', description: `Maximum message length is ${constants_1.LMS_MAX}bytes`
58
+ code: 400,
59
+ type: "Bad Request",
60
+ message: "Invalid Request",
61
+ description: `Maximum message length is ${constants_1.LMS_MAX}bytes`,
61
62
  });
62
63
  return resolvedContent;
63
64
  };
64
- const resolveInputMessages = (messages) => messages.map(message => {
65
+ const resolveInputMessages = (messages) => messages.map((message) => {
65
66
  return Object.assign(Object.assign({ to: (0, constants_1.prettyPhoneNum)(message.to) }, (message.content != undefined && { content: resolveInputContent(message.content) })), (message.subject != undefined && { subject: (0, constants_1.trimText)(message.subject) }));
66
67
  });
67
68
  const resolveInputMessageType = (type) => {
68
- if (type == 'SMS' || type == 'LMS')
69
+ if (type == "SMS" || type == "LMS")
69
70
  throw new util_error_handler_1.IngestkoreaError({
70
- code: 400, type: 'Bad Request',
71
- message: 'Invalid Request', description: `Please Call SendSMSCommand`
71
+ code: 400,
72
+ type: "Bad Request",
73
+ message: "Invalid Request",
74
+ description: `Please Call SendSMSCommand`,
72
75
  });
73
- return 'MMS';
76
+ return "MMS";
74
77
  };
75
78
  const resolveInputFiles = (files) => {
76
79
  if (!files.length)
77
80
  throw new util_error_handler_1.IngestkoreaError({
78
- code: 400, type: 'Bad Request',
79
- message: 'Invalid Request', description: `Please Check Input Files`
81
+ code: 400,
82
+ type: "Bad Request",
83
+ message: "Invalid Request",
84
+ description: `Please Check Input Files`,
80
85
  });
81
- const output = files.map(file => {
86
+ const output = files.map((file) => {
82
87
  const resolvedFileName = verifyFileName(file.name);
83
88
  const resolvedFileBody = file.body != undefined ? file.body : getFileBody(file.name);
84
- let byte = Buffer.from(resolvedFileBody, 'base64').length;
89
+ let byte = Buffer.from(resolvedFileBody, "base64").length;
85
90
  let kib = Math.ceil(byte / 1024);
86
91
  if (kib > constants_1.MMS_FILE_MAX)
87
92
  throw new util_error_handler_1.IngestkoreaError({
88
- code: 400, type: 'Bad Request',
89
- message: 'Invalid Request',
90
- description: `Input File is ${kib}KiByte. Maximum File Size is ${constants_1.MMS_FILE_MAX}Kibyte`
93
+ code: 400,
94
+ type: "Bad Request",
95
+ message: "Invalid Request",
96
+ description: `Input File is ${kib}KiByte. Maximum File Size is ${constants_1.MMS_FILE_MAX}Kibyte`,
91
97
  });
92
98
  return { name: resolvedFileName, body: resolvedFileBody };
93
99
  });
@@ -97,19 +103,23 @@ const verifyFileName = (fileName) => {
97
103
  let { ext } = (0, node_path_1.parse)(fileName);
98
104
  const uuid = (0, node_crypto_1.randomUUID)();
99
105
  const extension = ext.replace(/jpeg|jpg/gi, "jpg");
100
- if (extension != '.jpg')
106
+ if (extension != ".jpg")
101
107
  throw new util_error_handler_1.IngestkoreaError({
102
- code: 400, type: 'Bad Request',
103
- message: 'Invalid Request', description: `File Extension is not .jpg or .jpeg`
108
+ code: 400,
109
+ type: "Bad Request",
110
+ message: "Invalid Request",
111
+ description: `File Extension is not .jpg or .jpeg`,
104
112
  });
105
- return [uuid, extension].join('');
113
+ return [uuid, extension].join("");
106
114
  };
107
115
  /** @returns base64 */
108
116
  const getFileBody = (fileName) => {
109
117
  if (!(0, node_fs_1.existsSync)(fileName))
110
118
  throw new util_error_handler_1.IngestkoreaError({
111
- code: 400, type: 'Bad Request',
112
- message: 'Invalid Request', description: `${fileName} does not exist.`
119
+ code: 400,
120
+ type: "Bad Request",
121
+ message: "Invalid Request",
122
+ description: `${fileName} does not exist.`,
113
123
  });
114
- return (0, node_fs_1.readFileSync)(fileName, { encoding: 'base64' });
124
+ return (0, node_fs_1.readFileSync)(fileName, { encoding: "base64" });
115
125
  };
@@ -14,72 +14,73 @@ const models_1 = require("../models");
14
14
  const SendSMS_1 = require("../protocols/SendSMS");
15
15
  const util_error_handler_1 = require("@ingestkorea/util-error-handler");
16
16
  const constants_1 = require("./constants");
17
- ;
18
- ;
19
17
  class SendSMSCommand extends models_1.SensCommand {
20
18
  constructor(input) {
21
19
  super(input);
22
20
  const { content, messageType: defaultMessageType } = resolveInputContent(input.content);
23
21
  const { messages, messageType: childMessageType } = resolveInputMessages(input.messages);
24
- this.input = Object.assign(Object.assign({}, input), { from: (0, constants_1.prettyPhoneNum)(input.from), content: content, type: defaultMessageType === childMessageType ? defaultMessageType : 'LMS', messages: messages });
22
+ this.input = Object.assign(Object.assign({}, input), { from: (0, constants_1.prettyPhoneNum)(input.from), content: content, type: defaultMessageType === childMessageType ? defaultMessageType : "LMS", messages: messages });
25
23
  }
26
- ;
27
24
  serialize(input, config) {
28
25
  return __awaiter(this, void 0, void 0, function* () {
29
26
  if (!config.serviceId.sms)
30
27
  throw new util_error_handler_1.IngestkoreaError({
31
- code: 400, type: 'Bad Request', message: 'Invalid Params', description: 'Please Check SMS ServiceId'
28
+ code: 400,
29
+ type: "Bad Request",
30
+ message: "Invalid Params",
31
+ description: "Please Check SMS ServiceId",
32
32
  });
33
33
  let request = yield (0, SendSMS_1.serializeIngestkorea_restJson_SendSMSCommand)(input, config);
34
34
  return request;
35
35
  });
36
36
  }
37
- ;
38
37
  deserialize(response) {
39
38
  return __awaiter(this, void 0, void 0, function* () {
40
39
  let output = yield (0, SendSMS_1.deserializeIngestkorea_restJson_SendSMSCommand)(response);
41
40
  return output;
42
41
  });
43
42
  }
44
- ;
45
43
  }
46
44
  exports.SendSMSCommand = SendSMSCommand;
47
- ;
48
45
  const getMessageType = (input) => {
49
46
  const contentLength = (0, constants_1.getContentLength)(input);
50
47
  if (!contentLength)
51
48
  throw new util_error_handler_1.IngestkoreaError({
52
- code: 400, type: 'Bad Request',
53
- message: 'Invalid Request', description: `Please check input message`
49
+ code: 400,
50
+ type: "Bad Request",
51
+ message: "Invalid Request",
52
+ description: `Please check input message`,
54
53
  });
55
54
  if (contentLength > constants_1.LMS_MAX)
56
55
  throw new util_error_handler_1.IngestkoreaError({
57
- code: 400, type: 'Bad Request',
58
- message: 'Invalid Request', description: `Maximum message length is ${constants_1.LMS_MAX}bytes`
56
+ code: 400,
57
+ type: "Bad Request",
58
+ message: "Invalid Request",
59
+ description: `Maximum message length is ${constants_1.LMS_MAX}bytes`,
59
60
  });
60
- return contentLength > constants_1.SMS_MAX ? 'LMS' : 'SMS';
61
+ return contentLength > constants_1.SMS_MAX ? "LMS" : "SMS";
61
62
  };
62
63
  const resolveInputContent = (content) => {
63
64
  const resolvedContent = (0, constants_1.trimText)(content);
64
65
  const messageType = getMessageType(resolvedContent);
65
66
  return {
66
67
  content: resolvedContent,
67
- messageType: messageType
68
+ messageType: messageType,
68
69
  };
69
70
  };
70
71
  const resolveInputMessages = (messages) => {
71
72
  let init = {
72
73
  messages: [],
73
- messageType: 'SMS'
74
+ messageType: "SMS",
74
75
  };
75
76
  const output = messages.reduce((acc, message) => {
76
77
  const to = (0, constants_1.prettyPhoneNum)(message.to);
77
78
  const content = message.content != undefined ? (0, constants_1.trimText)(message.content) : undefined;
78
79
  const subject = message.subject != undefined ? (0, constants_1.trimText)(message.subject) : undefined;
79
- const messageType = content != undefined ? getMessageType(content) : 'SMS';
80
- if (messageType == 'LMS')
80
+ const messageType = content != undefined ? getMessageType(content) : "SMS";
81
+ if (messageType == "LMS")
81
82
  acc.messageType = messageType;
82
- acc.messages.push(Object.assign(Object.assign({ to: to }, (content != undefined && { content: content })), (subject != undefined && acc.messageType === 'LMS' && { subject: subject })));
83
+ acc.messages.push(Object.assign(Object.assign({ to: to }, (content != undefined && { content: content })), (subject != undefined && acc.messageType === "LMS" && { subject: subject })));
83
84
  return acc;
84
85
  }, init);
85
86
  return output;
@@ -10,10 +10,10 @@ const prettyPhoneNum = (input) => input.replace(/\-/gi, "");
10
10
  exports.prettyPhoneNum = prettyPhoneNum;
11
11
  /** @returns content-length(euc-kr) */
12
12
  const getContentLength = (input) => {
13
- return input.split('').reduce((acc, text) => {
13
+ return input.split("").reduce((acc, text) => {
14
14
  let byte = Buffer.from(text).length;
15
15
  let modulo = byte % 3;
16
- modulo ? acc += 1 : acc += 2;
16
+ modulo ? (acc += 1) : (acc += 2);
17
17
  return acc;
18
18
  }, 0);
19
19
  };
@@ -14,5 +14,7 @@ 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-ncp"), exports);
18
- __exportStar(require("./metadata-ingestkorea"), exports);
17
+ __exportStar(require("./middleware-sign"), exports);
18
+ __exportStar(require("./middleware-metadata"), exports);
19
+ __exportStar(require("./middleware-retry"), exports);
20
+ __exportStar(require("./middleware-sort-headers"), exports);
@@ -10,19 +10,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.middlewareIngestkoreaMetadata = void 0;
13
+ const REQUEST_HEADER = "x-ingestkorea-request";
13
14
  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.5.x' });
15
+ request.headers["x-ingestkorea-user-agent"] = "@ingestkorea/client-sens/1.6.x";
16
+ request.headers[REQUEST_HEADER] = "attempt=1";
16
17
  return request;
17
18
  });
18
19
  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
- });
@@ -0,0 +1,58 @@
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.middlewareRetry = void 0;
13
+ const util_error_handler_1 = require("@ingestkorea/util-error-handler");
14
+ const REQUEST_HEADER = "x-ingestkorea-request";
15
+ const middlewareRetry = (request, config, handler) => __awaiter(void 0, void 0, void 0, function* () {
16
+ const maxAttempts = 3;
17
+ let attempts = 0;
18
+ let totalRetryDelay = 0;
19
+ let lastError = new util_error_handler_1.IngestkoreaError({
20
+ code: 400,
21
+ type: "Bad Request",
22
+ message: "Invalid Request",
23
+ description: { attempts, maxAttempts, totalRetryDelay },
24
+ });
25
+ while (true) {
26
+ try {
27
+ request.headers[REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}; totalRetryDelay=${totalRetryDelay}`;
28
+ let { response } = yield handler.handle(request);
29
+ return {
30
+ output: {
31
+ $metadata: {
32
+ attempts: attempts + 1,
33
+ totalRetryDelay: totalRetryDelay,
34
+ },
35
+ },
36
+ response,
37
+ };
38
+ }
39
+ catch (err) {
40
+ attempts++;
41
+ if (attempts == maxAttempts) {
42
+ lastError.error.description.attempts = attempts;
43
+ throw lastError;
44
+ }
45
+ const delay = attempts * 1000;
46
+ totalRetryDelay += delay;
47
+ lastError.error.description = { attempts, maxAttempts, totalRetryDelay };
48
+ if (err instanceof util_error_handler_1.IngestkoreaError) {
49
+ lastError.error.description = Object.assign(Object.assign({}, lastError.error.description), { detail: err.error.description });
50
+ }
51
+ if (err instanceof Error) {
52
+ lastError.error.description = Object.assign(Object.assign({}, lastError.error.description), { detail: err.message });
53
+ }
54
+ yield new Promise((resolve) => setTimeout(resolve, delay));
55
+ }
56
+ }
57
+ });
58
+ exports.middlewareRetry = middlewareRetry;
@@ -20,13 +20,9 @@ const middlewareNcpSigner = (request, config) => __awaiter(void 0, void 0, void
20
20
  const space = " ";
21
21
  const newLine = "\n";
22
22
  const timestamp = new Date().getTime().toString();
23
- const stringToSign = [
24
- method + space + path,
25
- timestamp,
26
- accessKey
27
- ].join(newLine);
28
- const signature = (0, crypto_1.createHmac)("sha256", secretKey).update(stringToSign).digest('base64');
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 });
23
+ const stringToSign = [method + space + path, timestamp, accessKey].join(newLine);
24
+ const signature = (0, crypto_1.createHmac)("sha256", secretKey).update(stringToSign).digest("base64");
25
+ 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 });
30
26
  return request;
31
27
  });
32
28
  exports.middlewareNcpSigner = middlewareNcpSigner;
@@ -0,0 +1,25 @@
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.middlewareSortHeaders = void 0;
13
+ const middlewareSortHeaders = (request, config) => __awaiter(void 0, void 0, void 0, function* () {
14
+ let { headers } = request;
15
+ let init = {};
16
+ const resolvedHeaders = Object.keys(headers)
17
+ .sort()
18
+ .reduce((acc, curr) => {
19
+ acc[curr] = headers[curr];
20
+ return acc;
21
+ }, init);
22
+ request.headers = resolvedHeaders;
23
+ return request;
24
+ });
25
+ exports.middlewareSortHeaders = middlewareSortHeaders;
@@ -1,5 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- ;
4
- ;
5
- ;
@@ -1,5 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- ;
4
- ;
5
- ;
@@ -1,4 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- ;
4
- ;
@@ -1,6 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- ;
4
- ;
5
- ;
6
- ;
@@ -1,5 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- ;
4
- ;
5
- ;
@@ -1,5 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- ;
4
- ;
5
- ;
@@ -1,7 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- ;
4
- ;
5
- ;
6
- ;
7
- ;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,7 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- ;
4
- ;
5
- ;
6
- ;
7
- ;
@@ -1,4 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- ;
4
- ;
@@ -1,4 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- ;
4
- ;
@@ -5,7 +5,5 @@ class SensCommand {
5
5
  constructor(input) {
6
6
  this.input = input;
7
7
  }
8
- ;
9
8
  }
10
9
  exports.SensCommand = SensCommand;
11
- ;
@@ -14,6 +14,8 @@ 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("./MetadataBearer"), exports);
18
+ __exportStar(require("./Middleware"), exports);
17
19
  __exportStar(require("./SensCommand"), exports);
18
20
  __exportStar(require("./SendAlimtalk"), exports);
19
21
  __exportStar(require("./GetAlimtalkStatus"), exports);
@@ -16,25 +16,25 @@ const serializeIngestkorea_restJson_GetAlimtalkResultCommand = (input, config) =
16
16
  const hostname = "sens.apigw.ntruss.com";
17
17
  const path = "/alimtalk/v2/services/" + config.serviceId.kakao + "/messages/" + input.messageId;
18
18
  const headers = {
19
- "host": hostname
19
+ host: hostname,
20
20
  };
21
21
  return new util_http_handler_1.HttpRequest({
22
- protocol: 'https:',
23
- method: 'GET',
22
+ protocol: "https:",
23
+ method: "GET",
24
24
  hostname: hostname,
25
25
  path: path,
26
- headers: headers
26
+ headers: headers,
27
27
  });
28
28
  });
29
29
  exports.serializeIngestkorea_restJson_GetAlimtalkResultCommand = serializeIngestkorea_restJson_GetAlimtalkResultCommand;
30
- const deserializeIngestkorea_restJson_GetAlimtalkResultCommand = (output) => __awaiter(void 0, void 0, void 0, function* () {
31
- if (output.statusCode > 300)
32
- yield (0, constants_1.parseErrorBody)(output);
33
- const data = yield (0, constants_1.parseBody)(output); // GetAlimtalkResultOutput
30
+ const deserializeIngestkorea_restJson_GetAlimtalkResultCommand = (response) => __awaiter(void 0, void 0, void 0, function* () {
31
+ const { response: httpResponse, output } = response;
32
+ if (httpResponse.statusCode > 300)
33
+ yield (0, constants_1.parseErrorBody)(httpResponse);
34
+ const data = yield (0, constants_1.parseBody)(httpResponse);
34
35
  let contents = {};
35
36
  contents = yield (0, exports.deserializeIngestkorea_restJson_GetAlimtalkResultOutput)(data);
36
- const response = Object.assign({}, contents);
37
- return response;
37
+ return Object.assign({ $metadata: Object.assign(Object.assign({}, (0, constants_1.deserializeMetadata)(httpResponse)), output.$metadata) }, contents);
38
38
  });
39
39
  exports.deserializeIngestkorea_restJson_GetAlimtalkResultCommand = deserializeIngestkorea_restJson_GetAlimtalkResultCommand;
40
40
  const deserializeIngestkorea_restJson_GetAlimtalkResultOutput = (output) => __awaiter(void 0, void 0, void 0, function* () {
@@ -55,8 +55,7 @@ const deserializeIngestkorea_restJson_GetAlimtalkResultOutput = (output) => __aw
55
55
  messageStatusCode: output.messageStatusCode != undefined ? output.messageStatusCode : undefined,
56
56
  messageStatusName: output.messageStatusName != undefined ? output.messageStatusName : undefined,
57
57
  messageStatusDesc: output.messageStatusDesc != undefined ? output.messageStatusDesc : undefined,
58
- failover: output.failover != undefined ?
59
- (0, exports.deserializeIngestkorea_restJson_AlimtalkFailover)(output.failover) : undefined,
58
+ failover: output.failover != undefined ? (0, exports.deserializeIngestkorea_restJson_AlimtalkFailover)(output.failover) : undefined,
60
59
  };
61
60
  });
62
61
  exports.deserializeIngestkorea_restJson_GetAlimtalkResultOutput = deserializeIngestkorea_restJson_GetAlimtalkResultOutput;
@@ -16,29 +16,29 @@ const serializeIngestkorea_restJson_GetAlimtalkStatusCommand = (input, config) =
16
16
  const hostname = "sens.apigw.ntruss.com";
17
17
  const path = "/alimtalk/v2/services/" + config.serviceId.kakao + "/messages";
18
18
  const headers = {
19
- "host": hostname
19
+ host: hostname,
20
20
  };
21
21
  const query = {
22
- requestId: input.requestId
22
+ requestId: input.requestId,
23
23
  };
24
24
  return new util_http_handler_1.HttpRequest({
25
- protocol: 'https:',
26
- method: 'GET',
25
+ protocol: "https:",
26
+ method: "GET",
27
27
  hostname: hostname,
28
28
  path: path,
29
29
  headers: headers,
30
- query: query
30
+ query: query,
31
31
  });
32
32
  });
33
33
  exports.serializeIngestkorea_restJson_GetAlimtalkStatusCommand = serializeIngestkorea_restJson_GetAlimtalkStatusCommand;
34
- const deserializeIngestkorea_restJson_GetAlimtalkStatusCommand = (output) => __awaiter(void 0, void 0, void 0, function* () {
35
- if (output.statusCode > 300)
36
- yield (0, constants_1.parseErrorBody)(output);
37
- const data = yield (0, constants_1.parseBody)(output); // GetAlimtalkStatusOutput
34
+ const deserializeIngestkorea_restJson_GetAlimtalkStatusCommand = (response) => __awaiter(void 0, void 0, void 0, function* () {
35
+ const { response: httpResponse, output } = response;
36
+ if (httpResponse.statusCode > 300)
37
+ yield (0, constants_1.parseErrorBody)(httpResponse);
38
+ const data = yield (0, constants_1.parseBody)(httpResponse); // GetAlimtalkStatusOutput
38
39
  let contents = {};
39
40
  contents = yield (0, exports.deserializeIngestkorea_restJson_GetAlimtalkStatusOutput)(data);
40
- const response = Object.assign({}, contents);
41
- return response;
41
+ return Object.assign({ $metadata: Object.assign(Object.assign({}, (0, constants_1.deserializeMetadata)(httpResponse)), output.$metadata) }, contents);
42
42
  });
43
43
  exports.deserializeIngestkorea_restJson_GetAlimtalkStatusCommand = deserializeIngestkorea_restJson_GetAlimtalkStatusCommand;
44
44
  const deserializeIngestkorea_restJson_GetAlimtalkStatusOutput = (output) => __awaiter(void 0, void 0, void 0, function* () {
@@ -47,13 +47,12 @@ const deserializeIngestkorea_restJson_GetAlimtalkStatusOutput = (output) => __aw
47
47
  requestId: requestId != undefined ? requestId : undefined,
48
48
  statusCode: statusCode != undefined ? statusCode : undefined,
49
49
  statusName: statusName != undefined ? statusName : undefined,
50
- messages: messages != undefined
51
- ? (0, exports.deserializeIngestkorea_restJson_GetAlimtalkStatusMessages)(messages) : undefined
50
+ messages: messages != undefined ? (0, exports.deserializeIngestkorea_restJson_GetAlimtalkStatusMessages)(messages) : undefined,
52
51
  };
53
52
  });
54
53
  exports.deserializeIngestkorea_restJson_GetAlimtalkStatusOutput = deserializeIngestkorea_restJson_GetAlimtalkStatusOutput;
55
54
  const deserializeIngestkorea_restJson_GetAlimtalkStatusMessages = (outputs) => {
56
- const result = outputs.map(output => {
55
+ const result = outputs.map((output) => {
57
56
  return {
58
57
  messageId: output.messageId != undefined ? output.messageId : undefined,
59
58
  to: output.to != undefined ? output.to : undefined,
@@ -17,35 +17,35 @@ const serializeIngestkorea_restJson_GetAlimtalkTemplateCommand = (input, config)
17
17
  const hostname = "sens.apigw.ntruss.com";
18
18
  const path = "/alimtalk/v2/services/" + config.serviceId.kakao + "/templates";
19
19
  const headers = {
20
- "host": hostname
20
+ host: hostname,
21
21
  };
22
22
  const query = {
23
23
  channelId: input.channelId,
24
- templateCode: input.templateCode
24
+ templateCode: input.templateCode,
25
25
  };
26
26
  return new util_http_handler_1.HttpRequest({
27
- protocol: 'https:',
28
- method: 'GET',
27
+ protocol: "https:",
28
+ method: "GET",
29
29
  hostname: hostname,
30
30
  path: path,
31
31
  query: query,
32
- headers: headers
32
+ headers: headers,
33
33
  });
34
34
  });
35
35
  exports.serializeIngestkorea_restJson_GetAlimtalkTemplateCommand = serializeIngestkorea_restJson_GetAlimtalkTemplateCommand;
36
- const deserializeIngestkorea_restJson_GetAlimtalkTemplateCommand = (output) => __awaiter(void 0, void 0, void 0, function* () {
37
- if (output.statusCode > 300)
38
- yield (0, constants_1.parseErrorBody)(output);
39
- const data = yield (0, constants_1.parseBody)(output); // GetAlimtalkTemplateOutput
36
+ const deserializeIngestkorea_restJson_GetAlimtalkTemplateCommand = (response) => __awaiter(void 0, void 0, void 0, function* () {
37
+ const { response: httpResponse, output } = response;
38
+ if (httpResponse.statusCode > 300)
39
+ yield (0, constants_1.parseErrorBody)(httpResponse);
40
+ const data = yield (0, constants_1.parseBody)(httpResponse); // GetAlimtalkTemplateOutput
40
41
  let contents = {};
41
42
  contents = yield (0, exports.deserializeIngestkorea_restJson_GetAlimtalkTemplateOutput)(data);
42
- const response = Object.assign({}, contents);
43
- return response;
43
+ return Object.assign({ $metadata: Object.assign(Object.assign({}, (0, constants_1.deserializeMetadata)(httpResponse)), output.$metadata) }, contents);
44
44
  });
45
45
  exports.deserializeIngestkorea_restJson_GetAlimtalkTemplateCommand = deserializeIngestkorea_restJson_GetAlimtalkTemplateCommand;
46
46
  const deserializeIngestkorea_restJson_GetAlimtalkTemplateOutput = (output) => __awaiter(void 0, void 0, void 0, function* () {
47
47
  return {
48
- templates: (0, ListAlimtalkTemplates_1.deserializeIngestkorea_restJson_AlimtalkTemplate)(output)
48
+ templates: (0, ListAlimtalkTemplates_1.deserializeIngestkorea_restJson_AlimtalkTemplate)(output),
49
49
  };
50
50
  });
51
51
  exports.deserializeIngestkorea_restJson_GetAlimtalkTemplateOutput = deserializeIngestkorea_restJson_GetAlimtalkTemplateOutput;