nodram
Version:
A Really MEAN Web Framework
281 lines (206 loc) • 7 kB
text/typescript
import {RResponse} from './RResponse';
export class RError extends RResponse{
constructor(err: Error);
constructor(status : number, message : string);
constructor(err : RError, message : string);
constructor(status : number, code: number, message : string);
constructor(status_err : any, code_message?: any, message? : string){
let status, code;
if(typeof status_err === "number") {
status = status_err;
if(typeof code_message === "number")
code = code_message;
else if(typeof code_message === "string")
message = code_message;
}
else if(status_err instanceof RError) {
let error = status_err;
status = error.status;
code = error.code;
message = error.message + " - " + code_message;
}
else if(status_err instanceof Error) {
let error = RError.handleError(status_err);
status = error.status;
code = error.code;
message = error.message;
}
super(status,code,message);
}
public static handleError(err){
let code : number;
let status : number;
let message : string;
if (err.code) {
switch (err.code) {
case 11000:
case 11001:
status = 400;
code = 1103;
message = "Email Already Exists";
break;
case "ENOENT":
status = 500;
code = 5001;
message = "Connection Error";
break;
case "ETIMEDOUT":
status = 504;
code = 1401;
message = "Server Timed Out";
break;
case "EPERM":
status = 500;
code = 5002;
message = "File Operation not permitted";
break;
case "ETIMEDOUT":
status = 500;
code = 5003;
message = "Connection Timed Out";
break;
default:
status = 500;
code = 500;
message = err.message || "Service Unavailable";
}
} else {
if(!err.errors) {
status = 500;
code = 500;
message = err.message || err;
}
else {
for (var errName in err.errors) {
if (err.errors[errName].message) {
status = 400;
code = RResponse.BAD_REQUEST;
message = err.errors[errName].message;
}
else {
status = 500;
code = 500;
message = "Service Unavailable";
}
}
}
}
return {status: status, code : code, message : message};
}
// ============================== BAD_REQUEST 1300 ==================================== //
public static get UNKNOWN_USER(){
return new RError(RResponse.BAD_REQUEST, 1301, "Unknown User");
}
public static get INVALID_TOKEN(){
return new RError(RResponse.BAD_REQUEST, 1303, "Invalid Token");
}
public static get EMAIL_EXISTS(){
return new RError(RResponse.BAD_REQUEST, 1103, "Email Already Exists");
}
public static get INVALID_PARAMETERS(){
return new RError(RResponse.BAD_REQUEST, 1304, "Invalid Parameters");
}
public static get EXPIRED() {
return new RError(RResponse.BAD_REQUEST, 1305, "Resource has expired");
}
public static get CARD_EXISTS(){
return new RError(RResponse.BAD_REQUEST, 1306, "Card Already Exists");
}
public static get CARD_NOT_FOUND(){
return new RError(RResponse.BAD_REQUEST, 1307, "Card Not Found");
}
public static get INVALID_AUTH_CODE(){
return new RError(RResponse.BAD_REQUEST, 1308, "Invalid Authorization Code");
}
public static get NO_PHOTO_SPECIFIED(){
return new RError(RResponse.BAD_REQUEST, 1309, "No photo was specified");
}
public static get UNKNOWN_DRIVER(){
return new RError(RResponse.BAD_REQUEST, 1310, "Unknown Driver");
}
public static get UNKNOWN_OWNER(){
return new RError(RResponse.BAD_REQUEST, 1311, "Unknown Owner");
}
public static get ACTION_NOT_ALLOWED(){
return new RError(RResponse.BAD_REQUEST, 1312, "Action not allowed");
}
public static get UNKNOWN_VEHICLE(){
return new RError(RResponse.BAD_REQUEST, 1313, "Unknown Vehicle");
}
// ============================== RESOURCE_NOT_FOUND 1400 ==================================== //
public static get PHOTO_NOT_FOUND(){
return new RError(RResponse.RESOURCE_NOT_FOUND, 1401, "Photo Not Found");
}
public static get DOCUMENT_NOT_FOUND(){
return new RError(RResponse.RESOURCE_NOT_FOUND, 1402, "Document Not Found");
}
// ============================== UNAUTHORIZED 1000 ==================================== //
public static get ACCOUNT_UNCONFIRMED(){
return new RError(RResponse.UNAUTHORIZED, 1001, "Account Unconfirmed");
}
public static get ACCOUNT_UNAUTHORIZED(){
return new RError(RResponse.UNAUTHORIZED, 1002, "Account Unauthorized to perform this action");
}
public static get INSUFFICIENT_FUND(){
return new RError(RResponse.UNAUTHORIZED,1003, "Insufficient Fund");
}
public static get UNKNOWN_ACCOUNT(){
return new RError(RResponse.UNAUTHORIZED, 1004, "Account Not Found");
}
public static get INVALID_PASSWORD(){
return new RError(RResponse.UNAUTHORIZED, 1005, "Invalid Password");
}
// ============================== RESOURCE_NOT_FOUND 1500 ==================================== //
public static get SERVICE_UNAVAILABLE(){
return new RError(RResponse.SERVER_ERROR, 1501, "Service Unavailable");
}
public static get INTERNET_UNAVAILABLE(){
return new RError(RResponse.SERVER_ERROR, 1502, "Internet Unavailable");
}
public static get ERROR_STREAMING_IMAGE(){
return new RError(RResponse.SERVER_ERROR, 1503, "Error Streaming Image");
}
public static get WRITE_OPERATION_FAILED(){
return new RError(RResponse.SERVER_ERROR, 1503, "Couldn't write file to drive");
}
public static get FILE_NOT_FOUND_ON_DRIVE(){
return new RError(RResponse.SERVER_ERROR, 1504, "No such file or directory on drive");
}
public static get CONNECTION_ERROR(){
return new RError(RResponse.SERVER_ERROR, 1505, "Couldn't Connect to resource");
}
}
function getErrorMessage(err): RError{
var error : RError;
if(err instanceof RError)
error = err;
else if (err.code) {
switch (err.code) {
case 11000:
case 11001:
error = RError.EMAIL_EXISTS;
break;
case "ENOENT":
{
if(err.syscall == "getaddrinfo")
error = RError.INTERNET_UNAVAILABLE;
else if(err.syscall == "unlink")
error = RError.FILE_NOT_FOUND_ON_DRIVE;
else
error = RError.CONNECTION_ERROR;
break;
}
default:
error = RError.SERVICE_UNAVAILABLE;
break;
}
} else {
for (var errName in err.errors) {
if (err.errors[errName].message)
error = new RError(RResponse.BAD_REQUEST,err.errors[errName].message);
else
error = RError.SERVICE_UNAVAILABLE;
}
}
return error;
}