mares-apistore-message-sender
Version:
apistore용 rest api를 wrapping한 node.js용 모듈입니다.
77 lines (68 loc) • 2.37 kB
JavaScript
const MaresApistoreMessageError = require('mares-apistore-message-error');
const utils = require('./utils');
const _ = require('lodash');
class ApistoreMessageSender {
constructor(token) {
this.token = token;
}
/**
* MaresApistoreMessageError의 error code 반환.
* @returns {{invalidUser, invalidParameter, etc, insufficient, invalidRegistration, unknown}|*}
*/
static getCodes() {
return MaresApistoreMessageError.codes;
};
/**
* 문자를 발송할 번호를 등록한다.
* @param {string} from - 발송번호
* @returns {Promise<*>}
* @throws {MaresError}
*/
async registerNumber(from) {
let result = await utils.register(this.token, from);
try {
result = JSON.parse(result);
} catch (e) {
let result = {result_code: 700};
throw new MaresApistoreMessageError('send', result);
}
let sendCode = Number(_.get(result, 'result_code'));
if (sendCode !== 200) {
throw new MaresApistoreMessageError('register', result);
}
return result.cmid;
}
/**
* 문자를 발송한다.
* @param {string} from - 발신번호
* @param {string} to - 착신번호
* @param {string} title - 문자제목 LMS에서만 가능하다.
* @param {string} body - 문자 내용
* @returns {Promise<*>}
* @throws {MaresError}
*/
async sendMessage(from, to, title, body) {
let result;
try {
if (process.env.NODE_ENV !== 'production') {
return (Math.random() * 100000000) + '';
}
result = await utils.send(this.token, from, to, title, body);
try {
result = JSON.parse(result);
} catch (e) {
let result = {result_code: 700};
throw new MaresApistoreMessageError('sendSMS', result);
}
let sendCode = Number(_.get(result, 'result_code'));
if (sendCode !== 200) {
throw new MaresApistoreMessageError('sendSMS', result);
}
return result.cmid;
} catch (e) {
let result = {result_code: 300};
throw new MaresApistoreMessageError('sendSMS', result);
}
}
}
module.exports = ApistoreMessageSender;