@ingestkorea/client-sens 1.7.0 → 1.9.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 (157) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +98 -63
  3. package/dist-cjs/SensClient.js +57 -28
  4. package/dist-cjs/commands/GetAlimtalkResultCommand.js +5 -32
  5. package/dist-cjs/commands/GetAlimtalkStatusCommand.js +7 -35
  6. package/dist-cjs/commands/GetAlimtalkTemplateCommand.js +5 -32
  7. package/dist-cjs/commands/GetSMSResultCommand.js +8 -33
  8. package/dist-cjs/commands/GetSMSStatusCommand.js +7 -33
  9. package/dist-cjs/commands/ListAlimtalkChannelsCommand.js +6 -33
  10. package/dist-cjs/commands/ListAlimtalkStatusCommand.js +29 -35
  11. package/dist-cjs/commands/ListAlimtalkTemplatesCommand.js +5 -32
  12. package/dist-cjs/commands/ListSMSStatusCommand.js +37 -0
  13. package/dist-cjs/commands/SendAlimtalkCommand.js +36 -44
  14. package/dist-cjs/commands/SendMMSCommand.js +67 -103
  15. package/dist-cjs/commands/SendSMSCommand.js +38 -71
  16. package/dist-cjs/commands/constants.js +57 -14
  17. package/dist-cjs/commands/index.js +12 -11
  18. package/dist-cjs/index.js +2 -2
  19. package/dist-cjs/middleware/constants.js +10 -0
  20. package/dist-cjs/middleware/index.js +3 -4
  21. package/dist-cjs/middleware/middleware-metadata.js +4 -5
  22. package/dist-cjs/middleware/middleware-retry.js +32 -27
  23. package/dist-cjs/middleware/middleware-sign.js +10 -9
  24. package/dist-cjs/models/SendAlimtalk.js +3 -0
  25. package/dist-cjs/models/SendMMS.js +3 -0
  26. package/dist-cjs/models/SensClient.js +2 -0
  27. package/dist-cjs/models/SensErrorInfo.js +13 -0
  28. package/dist-cjs/models/SensMiddleware.js +2 -0
  29. package/dist-cjs/models/index.js +17 -14
  30. package/dist-cjs/protocols/GetAlimtalkResult.js +19 -22
  31. package/dist-cjs/protocols/GetAlimtalkStatus.js +39 -40
  32. package/dist-cjs/protocols/GetAlimtalkTemplate.js +56 -90
  33. package/dist-cjs/protocols/GetSMSResult.js +31 -48
  34. package/dist-cjs/protocols/GetSMSStatus.js +51 -37
  35. package/dist-cjs/protocols/ListAlimtalkChannels.js +27 -31
  36. package/dist-cjs/protocols/ListAlimtalkStatus.js +22 -19
  37. package/dist-cjs/protocols/ListAlimtalkTemplates.js +33 -25
  38. package/dist-cjs/protocols/ListSMSStatus.js +48 -0
  39. package/dist-cjs/protocols/SendAlimtalk.js +23 -27
  40. package/dist-cjs/protocols/SendMMS.js +8 -38
  41. package/dist-cjs/protocols/SendSMS.js +20 -22
  42. package/dist-cjs/protocols/constants.js +103 -34
  43. package/dist-es/SensClient.js +63 -30
  44. package/dist-es/commands/GetAlimtalkResultCommand.js +9 -19
  45. package/dist-es/commands/GetAlimtalkStatusCommand.js +12 -19
  46. package/dist-es/commands/GetAlimtalkTemplateCommand.js +9 -19
  47. package/dist-es/commands/GetSMSResultCommand.js +10 -20
  48. package/dist-es/commands/GetSMSStatusCommand.js +13 -20
  49. package/dist-es/commands/ListAlimtalkChannelsCommand.js +10 -22
  50. package/dist-es/commands/ListAlimtalkStatusCommand.js +39 -28
  51. package/dist-es/commands/ListAlimtalkTemplatesCommand.js +9 -19
  52. package/dist-es/commands/ListSMSStatusCommand.js +48 -0
  53. package/dist-es/commands/SendAlimtalkCommand.js +35 -30
  54. package/dist-es/commands/SendMMSCommand.js +70 -100
  55. package/dist-es/commands/SendSMSCommand.js +51 -66
  56. package/dist-es/commands/constants.js +65 -15
  57. package/dist-es/commands/index.js +28 -11
  58. package/dist-es/index.js +18 -2
  59. package/dist-es/middleware/constants.js +10 -0
  60. package/dist-es/middleware/index.js +19 -4
  61. package/dist-es/middleware/middleware-metadata.js +11 -5
  62. package/dist-es/middleware/middleware-retry.js +39 -30
  63. package/dist-es/middleware/middleware-sign.js +19 -14
  64. package/dist-es/models/GetAlimtalkResult.js +2 -1
  65. package/dist-es/models/GetAlimtalkStatus.js +2 -1
  66. package/dist-es/models/GetAlimtalkTemplate.js +2 -1
  67. package/dist-es/models/GetSMSResult.js +2 -1
  68. package/dist-es/models/GetSMSStatus.js +2 -1
  69. package/dist-es/models/ListAlimtalkChannels.js +2 -1
  70. package/dist-es/models/ListAlimtalkStatus.js +2 -1
  71. package/dist-es/models/ListAlimtalkTemplates.js +2 -1
  72. package/dist-es/models/ListSMSStatus.js +2 -0
  73. package/dist-es/models/MetadataBearer.js +2 -1
  74. package/dist-es/models/SendAlimtalk.js +5 -1
  75. package/dist-es/models/SendMMS.js +5 -1
  76. package/dist-es/models/SendSMS.js +2 -1
  77. package/dist-es/models/SensClient.js +2 -0
  78. package/dist-es/models/SensCommand.js +5 -1
  79. package/dist-es/models/SensErrorInfo.js +13 -0
  80. package/dist-es/models/SensMiddleware.js +2 -0
  81. package/dist-es/models/index.js +33 -14
  82. package/dist-es/protocols/GetAlimtalkResult.js +24 -23
  83. package/dist-es/protocols/GetAlimtalkStatus.js +51 -47
  84. package/dist-es/protocols/GetAlimtalkTemplate.js +78 -87
  85. package/dist-es/protocols/GetSMSResult.js +40 -47
  86. package/dist-es/protocols/GetSMSStatus.js +55 -37
  87. package/dist-es/protocols/ListAlimtalkChannels.js +31 -31
  88. package/dist-es/protocols/ListAlimtalkStatus.js +26 -32
  89. package/dist-es/protocols/ListAlimtalkTemplates.js +37 -24
  90. package/dist-es/protocols/ListSMSStatus.js +42 -0
  91. package/dist-es/protocols/SendAlimtalk.js +27 -26
  92. package/dist-es/protocols/SendMMS.js +10 -49
  93. package/dist-es/protocols/SendSMS.js +24 -31
  94. package/dist-es/protocols/constants.js +119 -39
  95. package/dist-types/SensClient.d.ts +3 -20
  96. package/dist-types/commands/GetAlimtalkResultCommand.d.ts +5 -10
  97. package/dist-types/commands/GetAlimtalkStatusCommand.d.ts +5 -10
  98. package/dist-types/commands/GetAlimtalkTemplateCommand.d.ts +5 -10
  99. package/dist-types/commands/GetSMSResultCommand.d.ts +5 -10
  100. package/dist-types/commands/GetSMSStatusCommand.d.ts +5 -10
  101. package/dist-types/commands/ListAlimtalkChannelsCommand.d.ts +5 -10
  102. package/dist-types/commands/ListAlimtalkStatusCommand.d.ts +5 -10
  103. package/dist-types/commands/ListAlimtalkTemplatesCommand.d.ts +5 -10
  104. package/dist-types/commands/ListSMSStatusCommand.d.ts +11 -0
  105. package/dist-types/commands/SendAlimtalkCommand.d.ts +5 -10
  106. package/dist-types/commands/SendMMSCommand.d.ts +5 -10
  107. package/dist-types/commands/SendSMSCommand.d.ts +9 -10
  108. package/dist-types/commands/constants.d.ts +14 -4
  109. package/dist-types/commands/index.d.ts +12 -11
  110. package/dist-types/index.d.ts +2 -2
  111. package/dist-types/middleware/constants.d.ts +7 -0
  112. package/dist-types/middleware/index.d.ts +3 -4
  113. package/dist-types/middleware/middleware-metadata.d.ts +2 -2
  114. package/dist-types/middleware/middleware-retry.d.ts +2 -2
  115. package/dist-types/middleware/middleware-sign.d.ts +2 -2
  116. package/dist-types/models/GetAlimtalkResult.d.ts +3 -3
  117. package/dist-types/models/GetAlimtalkStatus.d.ts +8 -5
  118. package/dist-types/models/GetAlimtalkTemplate.d.ts +5 -5
  119. package/dist-types/models/GetSMSResult.d.ts +7 -15
  120. package/dist-types/models/GetSMSStatus.d.ts +19 -4
  121. package/dist-types/models/ListAlimtalkChannels.d.ts +4 -4
  122. package/dist-types/models/ListAlimtalkStatus.d.ts +8 -8
  123. package/dist-types/models/ListAlimtalkTemplates.d.ts +2 -2
  124. package/dist-types/models/ListSMSStatus.d.ts +15 -0
  125. package/dist-types/models/MetadataBearer.d.ts +3 -3
  126. package/dist-types/models/SendAlimtalk.d.ts +7 -4
  127. package/dist-types/models/SendMMS.d.ts +5 -3
  128. package/dist-types/models/SendSMS.d.ts +2 -2
  129. package/dist-types/models/SensClient.d.ts +17 -0
  130. package/dist-types/models/SensCommand.d.ts +4 -6
  131. package/dist-types/models/SensErrorInfo.d.ts +21 -0
  132. package/dist-types/models/SensMiddleware.d.ts +8 -0
  133. package/dist-types/models/index.d.ts +17 -14
  134. package/dist-types/protocols/GetAlimtalkResult.d.ts +4 -11
  135. package/dist-types/protocols/GetAlimtalkStatus.d.ts +6 -12
  136. package/dist-types/protocols/GetAlimtalkTemplate.d.ts +4 -14
  137. package/dist-types/protocols/GetSMSResult.d.ts +4 -12
  138. package/dist-types/protocols/GetSMSStatus.d.ts +6 -11
  139. package/dist-types/protocols/ListAlimtalkChannels.d.ts +4 -11
  140. package/dist-types/protocols/ListAlimtalkStatus.d.ts +4 -10
  141. package/dist-types/protocols/ListAlimtalkTemplates.d.ts +5 -12
  142. package/dist-types/protocols/ListSMSStatus.d.ts +4 -0
  143. package/dist-types/protocols/SendAlimtalk.d.ts +5 -12
  144. package/dist-types/protocols/SendMMS.d.ts +4 -10
  145. package/dist-types/protocols/SendSMS.d.ts +5 -10
  146. package/dist-types/protocols/constants.d.ts +4 -2
  147. package/package.json +20 -4
  148. package/.github/pull_request_template.md +0 -19
  149. package/dist-cjs/middleware/middleware-sort-headers.js +0 -25
  150. package/dist-cjs/protocols/index.js +0 -28
  151. package/dist-es/middleware/middleware-sort-headers.js +0 -12
  152. package/dist-es/models/Middleware.js +0 -1
  153. package/dist-es/protocols/index.js +0 -12
  154. package/dist-types/middleware/middleware-sort-headers.d.ts +0 -2
  155. package/dist-types/models/Middleware.d.ts +0 -12
  156. package/dist-types/protocols/index.d.ts +0 -12
  157. /package/dist-cjs/models/{Middleware.js → ListSMSStatus.js} +0 -0
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getRequestDuration = exports.getContentLength = exports.prettyPhoneNum = exports.trimText = exports.MMS_FILE_MAX = exports.LMS_MAX = exports.SMS_MAX = void 0;
4
- exports.SMS_MAX = 90;
5
- exports.LMS_MAX = 2000;
6
- exports.MMS_FILE_MAX = 300; // KiByte
3
+ exports.resolveRequestDuration = exports.getDefaultRequestDuration = exports.convertToKst = exports.convertToUtc = exports.getContentLength = exports.prettyPhoneNum = exports.trimText = void 0;
4
+ const index_js_1 = require("../models/index.js");
7
5
  const trimText = (input) => input.trim();
8
6
  exports.trimText = trimText;
9
7
  const prettyPhoneNum = (input) => input.replace(/\-/gi, "");
@@ -18,14 +16,59 @@ const getContentLength = (input) => {
18
16
  }, 0);
19
17
  };
20
18
  exports.getContentLength = getContentLength;
21
- const getRequestDuration = (input) => {
22
- const OFFSET = 9 * 60 * 60 * 1000;
23
- const hours = input ? Math.abs(input) : 24;
24
- const hours_ms = hours * 60 * 60 * 1000;
25
- const current_ms = new Date().getTime() + OFFSET;
26
- const startTime_ms = current_ms - hours_ms;
27
- let current_kst = new Date(current_ms).toISOString().replace(/\.\d{3}Z$/, "");
28
- let startTime_kst = new Date(startTime_ms).toISOString().replace(/\.\d{3}Z$/, "");
29
- return { startTime: startTime_kst, endTime: current_kst };
19
+ const convertToUtc = (input) => {
20
+ const utcRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$/;
21
+ return utcRegex.test(input) ? input : new Date(input.replace(" ", "T") + "+09:00").toISOString();
30
22
  };
31
- exports.getRequestDuration = getRequestDuration;
23
+ exports.convertToUtc = convertToUtc;
24
+ const convertToKst = (input) => {
25
+ const KST_OFFSET = 9 * 3600000;
26
+ return new Date(input + KST_OFFSET).toISOString().replace(/\.\d{3}Z$/, "");
27
+ };
28
+ exports.convertToKst = convertToKst;
29
+ // UTC
30
+ const getDefaultRequestDuration = (config) => {
31
+ const now = Date.now();
32
+ return {
33
+ startTime: new Date(now - config.durationLimitMs).toISOString(),
34
+ endTime: new Date(now).toISOString(),
35
+ };
36
+ };
37
+ exports.getDefaultRequestDuration = getDefaultRequestDuration;
38
+ // UTC
39
+ const resolveRequestDuration = (input, config) => {
40
+ const start = new Date(input.startTime).getTime();
41
+ const end = new Date(input.endTime).getTime();
42
+ const diff = end - start;
43
+ if (diff < 0) {
44
+ throw new index_js_1.SensError({
45
+ code: 400,
46
+ type: "Bad Request",
47
+ message: `조회 가능 날짜 오류`,
48
+ invalidInputs: [
49
+ {
50
+ type: "not-valid.args",
51
+ message: "종료일이 시작일보다 빠를 수 없습니다.",
52
+ },
53
+ ],
54
+ });
55
+ }
56
+ if (diff > config.durationLimitMs) {
57
+ throw new index_js_1.SensError({
58
+ code: 400,
59
+ type: "Bad Request",
60
+ message: `조회 가능 날짜 범위 오류`,
61
+ invalidInputs: [
62
+ {
63
+ type: "not-valid.args",
64
+ message: `조회 가능한 날짜 범위는 최대 ${config.durationLimitMs / (24 * 3600000)}일 이내여야 합니다.`,
65
+ },
66
+ ],
67
+ });
68
+ }
69
+ return {
70
+ startTimeMs: start,
71
+ endTimeMs: end,
72
+ };
73
+ };
74
+ exports.resolveRequestDuration = resolveRequestDuration;
@@ -14,14 +14,15 @@ 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("./SendAlimtalkCommand"), exports);
18
- __exportStar(require("./GetAlimtalkStatusCommand"), exports);
19
- __exportStar(require("./GetAlimtalkResultCommand"), exports);
20
- __exportStar(require("./GetAlimtalkTemplateCommand"), exports);
21
- __exportStar(require("./ListAlimtalkStatusCommand"), exports);
22
- __exportStar(require("./ListAlimtalkTemplatesCommand"), exports);
23
- __exportStar(require("./ListAlimtalkChannelsCommand"), exports);
24
- __exportStar(require("./SendSMSCommand"), exports);
25
- __exportStar(require("./SendMMSCommand"), exports);
26
- __exportStar(require("./GetSMSStatusCommand"), exports);
27
- __exportStar(require("./GetSMSResultCommand"), exports);
17
+ __exportStar(require("./GetAlimtalkResultCommand.js"), exports);
18
+ __exportStar(require("./GetAlimtalkStatusCommand.js"), exports);
19
+ __exportStar(require("./GetAlimtalkTemplateCommand.js"), exports);
20
+ __exportStar(require("./GetSMSResultCommand.js"), exports);
21
+ __exportStar(require("./GetSMSStatusCommand.js"), exports);
22
+ __exportStar(require("./ListAlimtalkChannelsCommand.js"), exports);
23
+ __exportStar(require("./ListAlimtalkStatusCommand.js"), exports);
24
+ __exportStar(require("./ListAlimtalkTemplatesCommand.js"), exports);
25
+ __exportStar(require("./ListSMSStatusCommand.js"), exports);
26
+ __exportStar(require("./SendAlimtalkCommand.js"), exports);
27
+ __exportStar(require("./SendMMSCommand.js"), exports);
28
+ __exportStar(require("./SendSMSCommand.js"), exports);
package/dist-cjs/index.js CHANGED
@@ -14,5 +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("./commands"), exports);
18
- __exportStar(require("./SensClient"), exports);
17
+ __exportStar(require("./commands/index.js"), exports);
18
+ __exportStar(require("./SensClient.js"), exports);
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NCP_SIGNATURE = exports.NCP_TIMESTAMP = exports.NCP_ACCESS_KEY = exports.INGESTKOREA_RETRY_DELAY = exports.INGESTKOREA_RETRY = exports.INGESTKOREA_REQUEST_LOG = exports.INGESTKOREA_USER_AGENT = void 0;
4
+ exports.INGESTKOREA_USER_AGENT = "x-ingestkorea-user-agent";
5
+ exports.INGESTKOREA_REQUEST_LOG = "x-ingestkorea-request";
6
+ exports.INGESTKOREA_RETRY = "x-ingestkorea-attempts";
7
+ exports.INGESTKOREA_RETRY_DELAY = "x-ingestkorea-total-retry-delay";
8
+ exports.NCP_ACCESS_KEY = "x-ncp-iam-access-key";
9
+ exports.NCP_TIMESTAMP = "x-ncp-apigw-timestamp";
10
+ exports.NCP_SIGNATURE = "x-ncp-apigw-signature-v2";
@@ -14,7 +14,6 @@ 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("./middleware-sign"), exports);
18
- __exportStar(require("./middleware-metadata"), exports);
19
- __exportStar(require("./middleware-retry"), exports);
20
- __exportStar(require("./middleware-sort-headers"), exports);
17
+ __exportStar(require("./middleware-metadata.js"), exports);
18
+ __exportStar(require("./middleware-retry.js"), exports);
19
+ __exportStar(require("./middleware-sign.js"), exports);
@@ -10,10 +10,9 @@ 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";
14
- const middlewareIngestkoreaMetadata = (request, config) => __awaiter(void 0, void 0, void 0, function* () {
15
- request.headers["x-ingestkorea-user-agent"] = "@ingestkorea/client-sens/1.7.x";
16
- request.headers[REQUEST_HEADER] = "attempt=1";
17
- return request;
13
+ const constants_js_1 = require("./constants.js");
14
+ const middlewareIngestkoreaMetadata = (next) => (input, context) => __awaiter(void 0, void 0, void 0, function* () {
15
+ input.request.headers = Object.assign(Object.assign({}, input.request.headers), { [constants_js_1.INGESTKOREA_USER_AGENT]: "@ingestkorea/client-sens/1.8.x" });
16
+ return next(input, context);
18
17
  });
19
18
  exports.middlewareIngestkoreaMetadata = middlewareIngestkoreaMetadata;
@@ -11,48 +11,53 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.middlewareRetry = void 0;
13
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;
14
+ const constants_js_1 = require("./constants.js");
15
+ const middlewareRetry = (next) => (input, context) => __awaiter(void 0, void 0, void 0, function* () {
16
+ var _a, _b;
17
+ var _c;
18
+ const MAX_RETRIES = 3;
19
+ const BASE_DELAY_MS = 500;
20
+ const MAX_DELAY_MS = 5000;
17
21
  let attempts = 0;
18
22
  let totalRetryDelay = 0;
23
+ (_a = (_c = input.request).headers) !== null && _a !== void 0 ? _a : (_c.headers = {});
19
24
  let lastError = new util_error_handler_1.IngestkoreaError({
20
25
  code: 400,
21
26
  type: "Bad Request",
22
27
  message: "Invalid Request",
23
- description: { attempts, maxAttempts, totalRetryDelay },
28
+ description: { attempts, maxRetries: MAX_RETRIES, totalRetryDelay },
24
29
  });
25
- while (true) {
30
+ while (attempts < MAX_RETRIES) {
31
+ const attemptNo = attempts + 1;
32
+ const requestLog = `attempt=${attemptNo}; max=${MAX_RETRIES}; totalRetryDelay=${totalRetryDelay}`;
33
+ input.request.headers[constants_js_1.INGESTKOREA_REQUEST_LOG] = requestLog;
26
34
  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
- };
35
+ const { response } = yield next(input, context);
36
+ response.headers[constants_js_1.INGESTKOREA_RETRY] = attemptNo.toString();
37
+ response.headers[constants_js_1.INGESTKOREA_RETRY_DELAY] = totalRetryDelay.toString();
38
+ return { response };
38
39
  }
39
- catch (err) {
40
+ catch (error) {
40
41
  attempts++;
41
- if (attempts == maxAttempts) {
42
- lastError.error.description.attempts = attempts;
43
- throw lastError;
42
+ lastError.error.description = { attempts, maxRetries: MAX_RETRIES, totalRetryDelay };
43
+ if (error instanceof util_error_handler_1.IngestkoreaError) {
44
+ lastError.error.description = Object.assign(Object.assign({}, lastError.error.description), { detail: error.error.description });
44
45
  }
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 });
46
+ else {
47
+ lastError.error.description = Object.assign(Object.assign({}, lastError.error.description), { detail: String((_b = error === null || error === void 0 ? void 0 : error.message) !== null && _b !== void 0 ? _b : error) });
50
48
  }
51
- if (err instanceof Error) {
52
- lastError.error.description = Object.assign(Object.assign({}, lastError.error.description), { detail: err.message });
49
+ if (attempts >= MAX_RETRIES) {
50
+ lastError.error.description = { attempts, maxRetries: MAX_RETRIES, totalRetryDelay };
51
+ throw lastError;
53
52
  }
53
+ const exp = BASE_DELAY_MS * Math.pow(2, (attempts - 1));
54
+ const capped = Math.min(MAX_DELAY_MS, exp);
55
+ const delay = Math.floor(Math.random() * capped);
56
+ totalRetryDelay += delay;
57
+ lastError.error.description = { attempts, maxRetries: MAX_RETRIES, totalRetryDelay };
54
58
  yield new Promise((resolve) => setTimeout(resolve, delay));
55
59
  }
56
60
  }
61
+ throw lastError;
57
62
  });
58
63
  exports.middlewareRetry = middlewareRetry;
@@ -9,20 +9,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.middlewareNcpSigner = void 0;
12
+ exports.middlewareNcpSign = void 0;
13
13
  const crypto_1 = require("crypto");
14
14
  const util_http_handler_1 = require("@ingestkorea/util-http-handler");
15
- const middlewareNcpSigner = (request, config) => __awaiter(void 0, void 0, void 0, function* () {
16
- const { accessKey, secretKey } = config.credentials;
17
- const method = request.method;
18
- const queryString = (0, util_http_handler_1.buildQueryString)(request.query);
19
- const path = queryString ? `${request.path}?${queryString}` : request.path;
15
+ const constants_js_1 = require("./constants.js");
16
+ const middlewareNcpSign = (next) => (input, context) => __awaiter(void 0, void 0, void 0, function* () {
17
+ const { accessKey, secretKey } = context.credentials;
18
+ const method = input.request.method;
19
+ const queryString = (0, util_http_handler_1.buildQueryString)(input.request.query);
20
+ const path = queryString ? `${input.request.path}?${queryString}` : input.request.path;
20
21
  const space = " ";
21
22
  const newLine = "\n";
22
23
  const timestamp = new Date().getTime().toString();
23
24
  const stringToSign = [method + space + path, timestamp, accessKey].join(newLine);
24
25
  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 });
26
- return request;
26
+ input.request.headers = Object.assign(Object.assign({}, input.request.headers), { [constants_js_1.NCP_ACCESS_KEY]: accessKey, [constants_js_1.NCP_TIMESTAMP]: timestamp, [constants_js_1.NCP_SIGNATURE]: signature });
27
+ return next(input, context);
27
28
  });
28
- exports.middlewareNcpSigner = middlewareNcpSigner;
29
+ exports.middlewareNcpSign = middlewareNcpSign;
@@ -1,4 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ALIMTALK_MAX_CONTENT_LENGTH = exports.ALIMTALK_MAX_RECIPIENTS = void 0;
4
+ exports.ALIMTALK_MAX_RECIPIENTS = 100;
5
+ exports.ALIMTALK_MAX_CONTENT_LENGTH = 1000;
3
6
  const ALIMTALK_BUTTON_TYPES = ["DS", "WL", "AL", "BK", "MD", "AC"];
4
7
  const ALIMTALK_BUTTON_NAMES = ["배송 조회", "웹 링크", "앱 링크", "봇 키워드", "메시지 전달", "채널 추가"];
@@ -1,2 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MMS_SUPPORT_FILE_EXTENSION = exports.MMS_MAX_SUPPORT_FILE_SIZE = void 0;
4
+ exports.MMS_MAX_SUPPORT_FILE_SIZE = 300; // KiByte
5
+ exports.MMS_SUPPORT_FILE_EXTENSION = [".jpg", ".jpeg"];
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SensError = void 0;
4
+ class SensError extends Error {
5
+ constructor(info) {
6
+ super(info.message);
7
+ this.name = "SensError";
8
+ this.code = info.code;
9
+ this.type = info.type;
10
+ this.invalidInputs = info.invalidInputs || [];
11
+ }
12
+ }
13
+ exports.SensError = SensError;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -14,17 +14,20 @@ 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);
19
- __exportStar(require("./SensCommand"), exports);
20
- __exportStar(require("./SendAlimtalk"), exports);
21
- __exportStar(require("./GetAlimtalkStatus"), exports);
22
- __exportStar(require("./GetAlimtalkResult"), exports);
23
- __exportStar(require("./GetAlimtalkTemplate"), exports);
24
- __exportStar(require("./ListAlimtalkStatus"), exports);
25
- __exportStar(require("./ListAlimtalkTemplates"), exports);
26
- __exportStar(require("./ListAlimtalkChannels"), exports);
27
- __exportStar(require("./SendSMS"), exports);
28
- __exportStar(require("./SendMMS"), exports);
29
- __exportStar(require("./GetSMSStatus"), exports);
30
- __exportStar(require("./GetSMSResult"), exports);
17
+ __exportStar(require("./GetAlimtalkResult.js"), exports);
18
+ __exportStar(require("./GetAlimtalkStatus.js"), exports);
19
+ __exportStar(require("./GetAlimtalkTemplate.js"), exports);
20
+ __exportStar(require("./GetSMSResult.js"), exports);
21
+ __exportStar(require("./GetSMSStatus.js"), exports);
22
+ __exportStar(require("./ListAlimtalkChannels.js"), exports);
23
+ __exportStar(require("./ListAlimtalkStatus.js"), exports);
24
+ __exportStar(require("./ListAlimtalkTemplates.js"), exports);
25
+ __exportStar(require("./ListSMSStatus.js"), exports);
26
+ __exportStar(require("./MetadataBearer.js"), exports);
27
+ __exportStar(require("./SendAlimtalk.js"), exports);
28
+ __exportStar(require("./SendMMS.js"), exports);
29
+ __exportStar(require("./SendSMS.js"), exports);
30
+ __exportStar(require("./SensClient.js"), exports);
31
+ __exportStar(require("./SensCommand.js"), exports);
32
+ __exportStar(require("./SensErrorInfo.js"), exports);
33
+ __exportStar(require("./SensMiddleware.js"), exports);
@@ -9,10 +9,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.deserializeIngestkorea_restJson_AlimtalkFailover = exports.deserializeIngestkorea_restJson_GetAlimtalkResultOutput = exports.deserializeIngestkorea_restJson_GetAlimtalkResultCommand = exports.serializeIngestkorea_restJson_GetAlimtalkResultCommand = void 0;
12
+ exports.de_GetAlimtalkResultCommand = exports.se_GetAlimtalkResultCommand = void 0;
13
13
  const util_http_handler_1 = require("@ingestkorea/util-http-handler");
14
- const _1 = require("./");
15
- const serializeIngestkorea_restJson_GetAlimtalkResultCommand = (input, config) => __awaiter(void 0, void 0, void 0, function* () {
14
+ const constants_js_1 = require("./constants.js");
15
+ const GetAlimtalkStatus_js_1 = require("./GetAlimtalkStatus.js");
16
+ const se_GetAlimtalkResultCommand = (input, config) => __awaiter(void 0, void 0, void 0, function* () {
16
17
  const hostname = "sens.apigw.ntruss.com";
17
18
  const path = "/alimtalk/v2/services/" + config.serviceId.kakao + "/messages/" + input.messageId;
18
19
  const headers = {
@@ -21,27 +22,24 @@ const serializeIngestkorea_restJson_GetAlimtalkResultCommand = (input, config) =
21
22
  return new util_http_handler_1.HttpRequest({
22
23
  protocol: "https:",
23
24
  method: "GET",
24
- hostname: hostname,
25
- path: path,
26
- headers: headers,
25
+ hostname,
26
+ path,
27
+ headers,
27
28
  });
28
29
  });
29
- exports.serializeIngestkorea_restJson_GetAlimtalkResultCommand = serializeIngestkorea_restJson_GetAlimtalkResultCommand;
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, _1.parseErrorBody)(httpResponse);
34
- const data = yield (0, _1.parseBody)(httpResponse);
35
- let contents = {};
36
- contents = yield (0, exports.deserializeIngestkorea_restJson_GetAlimtalkResultOutput)(data);
37
- return Object.assign({ $metadata: Object.assign(Object.assign({}, (0, _1.deserializeMetadata)(httpResponse)), output.$metadata) }, contents);
30
+ exports.se_GetAlimtalkResultCommand = se_GetAlimtalkResultCommand;
31
+ const de_GetAlimtalkResultCommand = (response, config) => __awaiter(void 0, void 0, void 0, function* () {
32
+ if (response.statusCode >= 300)
33
+ yield (0, constants_js_1.parseErrorBody)(response);
34
+ const data = yield (0, constants_js_1.parseBody)(response);
35
+ const contents = de_GetAlimtalkResultResult(data);
36
+ return Object.assign({ $metadata: (0, constants_js_1.deserializeMetadata)(response) }, (0, constants_js_1.compact)(contents));
38
37
  });
39
- exports.deserializeIngestkorea_restJson_GetAlimtalkResultCommand = deserializeIngestkorea_restJson_GetAlimtalkResultCommand;
40
- const deserializeIngestkorea_restJson_GetAlimtalkResultOutput = (output) => __awaiter(void 0, void 0, void 0, function* () {
41
- return Object.assign(Object.assign({}, (0, _1.parseStatusMessage)(output)), { failover: output.failover != undefined ? (0, exports.deserializeIngestkorea_restJson_AlimtalkFailover)(output.failover) : undefined });
42
- });
43
- exports.deserializeIngestkorea_restJson_GetAlimtalkResultOutput = deserializeIngestkorea_restJson_GetAlimtalkResultOutput;
44
- const deserializeIngestkorea_restJson_AlimtalkFailover = (output) => {
38
+ exports.de_GetAlimtalkResultCommand = de_GetAlimtalkResultCommand;
39
+ const de_GetAlimtalkResultResult = (output) => {
40
+ return Object.assign(Object.assign({}, (0, GetAlimtalkStatus_js_1.de_AlimtalkMessageStatus)(output)), { failover: output.failover ? de_Failover(output.failover) : undefined });
41
+ };
42
+ const de_Failover = (output) => {
45
43
  return {
46
44
  smsServiceId: output.smsServiceId != undefined ? output.smsServiceId : undefined,
47
45
  requestId: output.requestId != undefined ? output.requestId : undefined,
@@ -55,4 +53,3 @@ const deserializeIngestkorea_restJson_AlimtalkFailover = (output) => {
55
53
  messageStatusDesc: output.messageStatusDesc != undefined ? output.messageStatusDesc : undefined,
56
54
  };
57
55
  };
58
- exports.deserializeIngestkorea_restJson_AlimtalkFailover = deserializeIngestkorea_restJson_AlimtalkFailover;
@@ -9,59 +9,58 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.parseStatusMessage = exports.deserializeIngestkorea_restJson_GetAlimtalkStatusMessages = exports.deserializeIngestkorea_restJson_GetAlimtalkStatusOutput = exports.deserializeIngestkorea_restJson_GetAlimtalkStatusCommand = exports.serializeIngestkorea_restJson_GetAlimtalkStatusCommand = void 0;
12
+ exports.de_AlimtalkMessageStatus = exports.de_GetAlimtalkStatusResult = exports.de_GetAlimtalkStatusCommand = exports.se_GetAlimtalkStatusCommand = void 0;
13
13
  const util_http_handler_1 = require("@ingestkorea/util-http-handler");
14
- const _1 = require("./");
15
- const serializeIngestkorea_restJson_GetAlimtalkStatusCommand = (input, config) => __awaiter(void 0, void 0, void 0, function* () {
14
+ const constants_js_1 = require("./constants.js");
15
+ const SendAlimtalk_js_1 = require("./SendAlimtalk.js");
16
+ const se_GetAlimtalkStatusCommand = (input, config) => __awaiter(void 0, void 0, void 0, function* () {
16
17
  const hostname = "sens.apigw.ntruss.com";
17
18
  const path = "/alimtalk/v2/services/" + config.serviceId.kakao + "/messages";
18
19
  const headers = {
19
20
  host: hostname,
20
21
  };
21
- const query = {
22
- requestId: input.requestId,
23
- };
22
+ const query = Object.entries(input).reduce((acc, [key, value]) => {
23
+ if (value !== undefined && value !== null) {
24
+ acc[key] = String(value);
25
+ }
26
+ return acc;
27
+ }, {});
24
28
  return new util_http_handler_1.HttpRequest({
25
29
  protocol: "https:",
26
30
  method: "GET",
27
- hostname: hostname,
28
- path: path,
29
- headers: headers,
30
- query: query,
31
+ hostname,
32
+ path,
33
+ headers,
34
+ query,
31
35
  });
32
36
  });
33
- exports.serializeIngestkorea_restJson_GetAlimtalkStatusCommand = serializeIngestkorea_restJson_GetAlimtalkStatusCommand;
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, _1.parseErrorBody)(httpResponse);
38
- const data = yield (0, _1.parseBody)(httpResponse);
39
- let contents = {};
40
- contents = yield (0, exports.deserializeIngestkorea_restJson_GetAlimtalkStatusOutput)(data);
41
- return Object.assign({ $metadata: Object.assign(Object.assign({}, (0, _1.deserializeMetadata)(httpResponse)), output.$metadata) }, contents);
37
+ exports.se_GetAlimtalkStatusCommand = se_GetAlimtalkStatusCommand;
38
+ const de_GetAlimtalkStatusCommand = (response, config) => __awaiter(void 0, void 0, void 0, function* () {
39
+ if (response.statusCode >= 300)
40
+ yield (0, constants_js_1.parseErrorBody)(response);
41
+ const data = yield (0, constants_js_1.parseBody)(response);
42
+ const contents = (0, exports.de_GetAlimtalkStatusResult)(data);
43
+ return Object.assign({ $metadata: (0, constants_js_1.deserializeMetadata)(response) }, (0, constants_js_1.compact)(contents));
42
44
  });
43
- exports.deserializeIngestkorea_restJson_GetAlimtalkStatusCommand = deserializeIngestkorea_restJson_GetAlimtalkStatusCommand;
44
- const deserializeIngestkorea_restJson_GetAlimtalkStatusOutput = (output) => __awaiter(void 0, void 0, void 0, function* () {
45
+ exports.de_GetAlimtalkStatusCommand = de_GetAlimtalkStatusCommand;
46
+ const de_GetAlimtalkStatusResult = (output) => {
45
47
  return {
46
- requestId: output.requestId != undefined ? output.requestId : undefined,
47
- statusCode: output.statusCode != undefined ? output.statusCode : undefined,
48
- statusName: output.statusName != undefined ? output.statusName : undefined,
49
- messages: output.messages != undefined
50
- ? (0, exports.deserializeIngestkorea_restJson_GetAlimtalkStatusMessages)(output.messages)
51
- : undefined,
52
- pageSize: output.pageSize != undefined ? output.pageSize : undefined,
53
- pageIndex: output.pageIndex != undefined ? output.pageIndex : undefined,
54
- itemCount: output.itemCount != undefined ? output.itemCount : undefined,
55
- hasMore: output.hasMore != undefined ? output.hasMore : undefined,
48
+ requestId: output.requestId ? output.requestId : undefined,
49
+ statusCode: output.statusCode ? output.statusCode : undefined,
50
+ statusName: output.statusName ? output.statusName : undefined,
51
+ messages: output.messages ? de_AlimtalkMessageStatusList(output.messages) : [],
52
+ pageSize: output.pageSize !== undefined ? output.pageSize : undefined,
53
+ pageIndex: output.pageIndex !== undefined ? output.pageIndex : undefined,
54
+ itemCount: output.itemCount !== undefined ? output.itemCount : undefined,
55
+ hasMore: output.hasMore !== undefined ? output.hasMore : undefined,
56
+ nextToken: output.nextToken ? output.nextToken : undefined,
56
57
  };
57
- });
58
- exports.deserializeIngestkorea_restJson_GetAlimtalkStatusOutput = deserializeIngestkorea_restJson_GetAlimtalkStatusOutput;
59
- const deserializeIngestkorea_restJson_GetAlimtalkStatusMessages = (outputs) => {
60
- const result = outputs.map(exports.parseStatusMessage);
61
- return result;
62
58
  };
63
- exports.deserializeIngestkorea_restJson_GetAlimtalkStatusMessages = deserializeIngestkorea_restJson_GetAlimtalkStatusMessages;
64
- const parseStatusMessage = (output) => {
65
- return Object.assign(Object.assign({}, (0, _1.parseReceivedMessage)(output)), { requestId: output.requestId != undefined ? output.requestId : undefined, requestTime: output.requestTime != undefined ? output.requestTime : undefined, plusFriendId: output.plusFriendId != undefined ? output.plusFriendId : undefined, templateCode: output.templateCode != undefined ? output.templateCode : undefined, completeTime: output.completeTime != undefined ? output.completeTime : undefined, messageStatusCode: output.messageStatusCode != undefined ? output.messageStatusCode : undefined, messageStatusName: output.messageStatusName != undefined ? output.messageStatusName : undefined, messageStatusDesc: output.messageStatusDesc != undefined ? output.messageStatusDesc : undefined });
59
+ exports.de_GetAlimtalkStatusResult = de_GetAlimtalkStatusResult;
60
+ const de_AlimtalkMessageStatusList = (output) => {
61
+ return (output || []).filter((e) => e != null).map((entry) => (0, exports.de_AlimtalkMessageStatus)(entry));
62
+ };
63
+ const de_AlimtalkMessageStatus = (output) => {
64
+ return Object.assign(Object.assign({}, (0, SendAlimtalk_js_1.de_AlimtalkMessageRequestStatus)(output)), { requestId: output.requestId ? output.requestId : undefined, requestTime: output.requestTime ? (0, constants_js_1.convertToUtc)(output.requestTime) : undefined, plusFriendId: output.plusFriendId ? output.plusFriendId : undefined, templateCode: output.templateCode ? output.templateCode : undefined, completeTime: output.completeTime ? (0, constants_js_1.convertToUtc)(output.completeTime) : undefined, messageStatusCode: output.messageStatusCode ? output.messageStatusCode : undefined, messageStatusName: output.messageStatusName ? output.messageStatusName : undefined, messageStatusDesc: output.messageStatusDesc ? output.messageStatusDesc : undefined });
66
65
  };
67
- exports.parseStatusMessage = parseStatusMessage;
66
+ exports.de_AlimtalkMessageStatus = de_AlimtalkMessageStatus;