Something went wrong. Try again.
A social knowledge tool for research trails, built on ATProto semble.so
research-tool social-network tools-for-thought atproto
Something went wrong. Try again.
TypeScript
at development
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110import * as express from 'express';
export abstract class BaseController { protected abstract executeImpl( req: express.Request, res: express.Response, ): Promise<void | any>;
public async execute( req: express.Request, res: express.Response, ): Promise<void> { try { await this.executeImpl(req, res); } catch (err) { console.log(`[BaseController]: Uncaught controller error`); console.log(err); this.fail(res, 'An unexpected error occurred'); } }
public static jsonResponse( res: express.Response, code: number, message: string, ) { return res.status(code).json({ message }); }
public ok<T>(res: express.Response, dto?: T) { if (dto) { res.type('application/json'); return res.status(200).json(dto); } else { return res.sendStatus(200); } }
public created(res: express.Response) { return res.sendStatus(201); }
public clientError(res: express.Response, message?: string) { return BaseController.jsonResponse( res, 400, message ? message : 'Unauthorized', ); }
public unauthorized(res: express.Response, message?: string) { return BaseController.jsonResponse( res, 401, message ? message : 'Unauthorized', ); }
public paymentRequired(res: express.Response, message?: string) { return BaseController.jsonResponse( res, 402, message ? message : 'Payment required', ); }
public forbidden(res: express.Response, message?: string) { return BaseController.jsonResponse( res, 403, message ? message : 'Forbidden', ); }
public notFound(res: express.Response, message?: string) { return BaseController.jsonResponse( res, 404, message ? message : 'Not found', ); }
public conflict(res: express.Response, message?: string) { return BaseController.jsonResponse( res, 409, message ? message : 'Conflict', ); }
public tooMany(res: express.Response, message?: string) { return BaseController.jsonResponse( res, 429, message ? message : 'Too many requests', ); }
public todo(res: express.Response) { return BaseController.jsonResponse(res, 400, 'TODO'); }
public fail(res: express.Response, error: Error | string) { console.log(error); return res.status(500).json({ message: error.toString(), }); }}