mares-apistore-message-error
Version:
apistore api호출시 필요한 error handling module 입니다.
93 lines (83 loc) • 2.66 kB
JavaScript
const _ = require('lodash');
const codes = {
invalidUser: 'invalidUser',
invalidParameter: 'invalidParameter',
etc: 'etc',
insufficient: 'insufficient',
invalidRegistration: 'invalidRegistration',
unknown: 'unknown',
};
/**
* apistore error를 mares error object로 변환해준다.
* @param {Object} input - 외부 error
* @param {'register' | 'sendSMS' | 'sendLMS' | 'sendMMS' | 'report'} type - 요청타입 register | sendSMS | sendLMS | sendMMS | report
* @returns {{status: number}|{status: number, body: {rows: {domain: string, code: string, param: string, msg: string}[], count: number}}} - 변환된 mares 객체.
*/
const convert = (type, input) => {
let rows = [];
let code = _.get(input, 'result_code');
code = Number(code);
let ret = {
status: 400,
body: {}
};
if (type === 'sendSMS' || type === 'sendLMS') {
switch (code) {
case 100:
rows.push({
domain: null,
code: codes.invalidUser,
msg: '사용자 에러입니다.',
param: null
});
break;
case 300:
rows.push({
domain: null,
code: codes.invalidParameter,
msg: '잘못된 파라미터입니다.',
param: null
});
break;
case 400:
rows.push({
domain: null,
code: codes.etc,
msg: '기타 에러입니다.',
param: null
});
break;
case 500:
rows.push({
domain: null,
code: codes.invalidRegistration,
msg: '등록되지 않은 발송번호입니다.',
param: null
});
break;
case 600:
rows.push({
domain: null,
code: codes.insufficient,
msg: '잔액이 부족합니다.',
param: null
});
break;
default:
rows.push({
domain: null,
code: codes.unknown,
msg: '알수없는 에러입니다. apistore에 문의가 필요합니다.',
param: null
});
break;
}
} else {
}
ret.body.rows = rows;
return ret;
};
module.exports = {
convert,
codes: codes
};