nodram
Version:
A Really MEAN Web Framework
147 lines (107 loc) • 3.68 kB
text/typescript
import {RResponse} from './RResponse';
import {logger} from "./Logger";
export class RError extends RResponse{
constructor(code : number, message : string);
constructor(err: Error);
constructor(code_err : any, message? : any){
let code : number = typeof code_err === "number" ? code_err : null;
if(code_err instanceof Error) {
let error = RError.handleError(code_err);
code = error.code;
message = error.message;
}
super(code,message);
}
public static handleError(err){
let code : number;
let message : string;
if (err.code) {
switch (err.code) {
case 11000:
case 11001:
code = 1103;
message = "Email Already Exists";
break;
case "ENOENT":
code = 5001;
message = "Internet Unavailable";
break;
default:
code = 500;
message = err.message || "Service Unavailable";
}
} else {
if(!err.errors) {
code = 500;
message = err.message;
}
else {
for (var errName in err.errors) {
if (err.errors[errName].message) {
code = RResponse.BAD_REQUEST;
message = err.errors[errName].message;
}
else {
code = 500;
message = "Service Unavailable";
}
}
}
}
return {code : code, message : message};
}
public static get UNKNOWN_USER(){
return new RError(1101, "Unknown User");
}
public static get INVALID_PASSWORD(){
return new RError(1102, "Invalid Password");
}
public static get EMAIL_EXISTS(){
return new RError(1103, "Email Already Exists");
}
public static get EXPIRED(){
return new RError(1104, "Internet Unavailable");
}
public static get ACCOUNT_UNCONFIRMED(){
return new RError(1105, "Account Unconfirmed");
}
public static get UNKNOWN_APP(){
return new RError(1106, "Unknown App");
}
public static get INSUFFICIENT_FUND(){
return new RError(1107, "Insufficient Fund");
}
public static get SERVICE_UNAVAILABLE(){
return new RError(500, "Service Unavailable");
}
public static get INTERNET_UNAVAILABLE(){
return new RError(5001, "Internet Unavailable");
}
}
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":
error = RError.INTERNET_UNAVAILABLE;
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;
}