UNPKG

appolo

Version:
63 lines (47 loc) 1.72 kB
"use strict"; import {IRouteOptions} from "../interfaces/IRouteOptions"; import {IRequest, IResponse} from "appolo-agent"; import {IController} from "./IController"; import {BadRequestError, InternalServerError, NotFoundError, UnauthorizedError} from "appolo-agent/index"; export abstract class Controller implements IController { protected req: IRequest; protected res: IResponse; protected route: IRouteOptions; protected action: string | Function; public constructor(req: IRequest, res: IResponse, route: IRouteOptions) { this.req = req; this.res = res; this.route = route; } public send(statusCode?: number, data?: any) { if (arguments.length === 1) { this.sendOk(arguments[0]) } else { this.res.status(statusCode).json(data); } } public sendOk(data?: any) { this.res.status(200).json(data); } public sendCreated(data?: any) { this.res.status(201).send(data); } public sendNoContent() { this.res.status(204).send(); } public sendError(error?: Error | string, code?: number, data?: any) { throw new InternalServerError(error, data, code) } public sendBadRequest(error?: Error | string, code?: number, data?: any) { throw new BadRequestError(error, data, code) } public sendUnauthorized(error?: Error | string, code?: number, data?: any) { throw new UnauthorizedError(error, data, code) } public sendNotFound(error?: Error | string, code?: number, data?: any) { throw new NotFoundError(error, data, code) } public getModel<T>(): T { return (this.req as any).model; } }