"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* @namespace error/badRequestError
* @desc エラー
*/
const querystring = require("querystring");
const errors_1 = require("./errors");
/**
* エラー
* @memberof error/badRequestError
* @class BadRequestError
* @extends Error
*/
class BadRequestError extends Error {
constructor(message) {
super(message);
this.name = 'GMOServiceBadRequestError';
this.errors = this.parseErrorMessage();
}
/**
* エラーメッセージパース
* @method parseErrorMessage
* @returns {IError[]}
*/
parseErrorMessage() {
// 継承元のErrorでmessageはstringに変換される
if (this.message.length === 0) {
return [];
}
const errorMessage = querystring.parse(this.message);
const codeArray = errorMessage.ErrCode.split('|');
const infoArray = errorMessage.ErrInfo.split('|');
return codeArray.map((value, index) => {
const code = value;
const info = infoArray[index];
const error = errors_1.errors.list.find((data) => {
return (data.code === code && data.info === info);
});
if (error === undefined) {
return {
errorNumber: '',
code: code,
info: info,
state: '',
billing: '',
content: errors_1.notApplicable.content,
userMessage: errors_1.notApplicable.userMessage
};
}
return error;
});
}
}
exports.BadRequestError = BadRequestError;