All files / src/utils responseHandler.ts

66.66% Statements 18/27
46.15% Branches 6/13
46.15% Functions 6/13
66.66% Lines 18/27

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71  7x 7x   7x 7x 7x     7x                       7x           7x           7x           7x     118x 118x       118x           99x     1x     9x     9x           7x    
import HttpStatusCode from './HTTPStatusCodes';
 
export class ApiResponseBody<T = undefined> {
  error?: {
    code: HttpStatusCode;
    message: string;
  };
  data?: T;
}
 
export class APIError extends Error {
  code: number;

  constructor(code: HttpStatusCode, message: string) {
    super(message);
    this.code = code;
 
    // Set the prototype explicitly.
    Object.setPrototypeOf(this, APIError.prototype);
  }
 
  toString() {
    return `Error ${this.code}: ${this.message}`;
  }
}
 
export class NotFoundError extends APIError {
  constructor(message: string) {
    super(HttpStatusCode.NOT_FOUND, message);
  }
}
export class UnauthorizedError extends APIError {
  constructor(message: string) {
    super(HttpStatusCode.UNAUTHORIZED, message);
  }
}
export class ForbiddenError extends APIError {
  constructor(message: string) {
    super(HttpStatusCode.FORBIDDEN, message);
  }
}
 
export class ResponseHandler {
  static response<T>(message: any, status: HttpStatusCode) {
    const response = new ApiResponseBody<T>();
    response.error = {
      code: status,
      message: message,
    };
    return response;
  }
  static NoDataResponse<T>(message: any = 'Operation successful') {
    return this.response<T>(message, HttpStatusCode.OK);
  }
  static NotFound<T>(message: any = 'Not found') {
    return this.response<T>(message, HttpStatusCode.NOT_FOUND);
  }
  static InvalidBody<T>(message: any = 'Invalid request body') {
    return this.response<T>(message, HttpStatusCode.UNPROCESSABLE_ENTITY);
  }
  static Unauthorized<T>(message: any = 'Unauthorized') {
    return this.response<T>(message, HttpStatusCode.UNAUTHORIZED);
  }
  static Forbidden<T>(message: any = 'Forbidden') {
    return this.response<T>(message, HttpStatusCode.FORBIDDEN);
  }
  static BadRequest<T>(message: any = 'Bad Request') {
    return this.response<T>(message, HttpStatusCode.BAD_REQUEST);
  }
}