UNPKG

mares-apistore-message-sender

Version:

apistore용 rest api를 wrapping한 node.js용 모듈입니다.

77 lines (68 loc) 2.37 kB
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;