Browse Source

Added a respond function and status code definitions

dev
David Ludwig 4 years ago
parent
commit
f28281921f
2 changed files with 60 additions and 0 deletions
  1. +1
    -0
      packages/webserver/src/index.ts
  2. +59
    -0
      packages/webserver/src/response/index.ts

+ 1
- 0
packages/webserver/src/index.ts View File

@ -1,5 +1,6 @@
export * from "./RouteRegisterFactory";
export * from "./middleware";
export * from "./requests";
export * from "./response";
export * from "./RouteRegisterFactory";
export * from "./WebServerService";

+ 59
- 0
packages/webserver/src/response/index.ts View File

@ -0,0 +1,59 @@
import { FastifyReply } from "fastify";
/**
* The basic response schema
*/
export interface IResponse<T> {
result?: T,
status : string
}
/**
* Supported status codes
*/
export enum Status {
Ok = 200,
BadRequest = 400,
Unauthorized = 401,
Forbidden = 403,
Conflict = 409,
PayloadTooLarge = 413,
UnprocessableEntity = 422
}
/**
* Create a response
*/
function createResponse<T = any>(status: Status, result?: T): IResponse<T> {
switch(status) {
case Status.Ok:
return { result, status: "OK" };
case Status.BadRequest:
return { result, status: "Bad Request" };
case Status.Unauthorized:
return { result, status: "Unauthorized" }
case Status.Forbidden:
return { result, status: "Forbidden" }
case Status.Conflict:
return { result, status: "Conflict" }
case Status.Conflict:
return { result, status: "Payload Too Large" }
case Status.UnprocessableEntity:
return { result, status: "Unprocessable Entity" }
}
throw new Error(`Unknown response code: ${status}`);
}
/**
* Respond to a request
*/
export function respond<T = any>(reply: FastifyReply, status: Status, result?: T) {
try {
let response = createResponse(status, result);
reply.status(status);
reply.send(response);
} catch(e) {
reply.status(500);
reply.send({ status: "Internal Server Error" });
}
}

Loading…
Cancel
Save