@ingestkorea/client-sens
Version:
INGESTKOREA SDK Naver Cloud Platform SENS Client for Node.js.
88 lines (87 loc) • 4.2 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SendSMSCommand = void 0;
const models_1 = require("../models");
const SendSMS_1 = require("../protocols/SendSMS");
const util_error_handler_1 = require("@ingestkorea/util-error-handler");
const constants_1 = require("./constants");
class SendSMSCommand extends models_1.SensCommand {
constructor(input) {
super(input);
const { content, messageType: defaultMessageType } = resolveInputContent(input.content);
const { messages, messageType: childMessageType } = resolveInputMessages(input.messages);
this.input = Object.assign(Object.assign({}, input), { from: (0, constants_1.prettyPhoneNum)(input.from), content: content, type: defaultMessageType === childMessageType ? defaultMessageType : "LMS", messages: messages });
}
serialize(input, config) {
return __awaiter(this, void 0, void 0, function* () {
if (!config.serviceId.sms)
throw new util_error_handler_1.IngestkoreaError({
code: 400,
type: "Bad Request",
message: "Invalid Params",
description: "Please Check SMS ServiceId",
});
let request = yield (0, SendSMS_1.serializeIngestkorea_restJson_SendSMSCommand)(input, config);
return request;
});
}
deserialize(response) {
return __awaiter(this, void 0, void 0, function* () {
let output = yield (0, SendSMS_1.deserializeIngestkorea_restJson_SendSMSCommand)(response);
return output;
});
}
}
exports.SendSMSCommand = SendSMSCommand;
const getMessageType = (input) => {
const contentLength = (0, constants_1.getContentLength)(input);
if (!contentLength)
throw new util_error_handler_1.IngestkoreaError({
code: 400,
type: "Bad Request",
message: "Invalid Request",
description: `Please check input message`,
});
if (contentLength > constants_1.LMS_MAX)
throw new util_error_handler_1.IngestkoreaError({
code: 400,
type: "Bad Request",
message: "Invalid Request",
description: `Maximum message length is ${constants_1.LMS_MAX}bytes`,
});
return contentLength > constants_1.SMS_MAX ? "LMS" : "SMS";
};
const resolveInputContent = (content) => {
const resolvedContent = (0, constants_1.trimText)(content);
const messageType = getMessageType(resolvedContent);
return {
content: resolvedContent,
messageType: messageType,
};
};
const resolveInputMessages = (messages) => {
let init = {
messages: [],
messageType: "SMS",
};
const output = messages.reduce((acc, message) => {
const to = (0, constants_1.prettyPhoneNum)(message.to);
const content = message.content != undefined ? (0, constants_1.trimText)(message.content) : undefined;
const subject = message.subject != undefined ? (0, constants_1.trimText)(message.subject) : undefined;
const messageType = content != undefined ? getMessageType(content) : "SMS";
if (messageType == "LMS")
acc.messageType = messageType;
acc.messages.push(Object.assign(Object.assign({ to: to }, (content != undefined && { content: content })), (subject != undefined && acc.messageType === "LMS" && { subject: subject })));
return acc;
}, init);
return output;
};