Browse Source

Add more response codes to webserver package. Clean up response generation

dev
David Ludwig 4 years ago
parent
commit
c50ab3016a
1 changed files with 22 additions and 19 deletions
  1. +22
    -19
      packages/webserver/src/response/index.ts

+ 22
- 19
packages/webserver/src/response/index.ts View File

@ -18,45 +18,48 @@ export enum Status {
Forbidden = 403,
NotFound = 404,
Conflict = 409,
Gone = 410,
PayloadTooLarge = 413,
UnprocessableEntity = 422
UnprocessableEntity = 422,
InternalServerError = 500
}
/**
* Create a response
*/
function createResponse<T = any>(status: Status, result?: T): IResponse<T> {
function statusMessage(status: Status): string {
switch(status) {
case Status.Ok:
return { result, status: "OK" };
return "OK"
case Status.BadRequest:
return { result, status: "Bad Request" };
return "Bad Request";
case Status.Unauthorized:
return { result, status: "Unauthorized" }
return "Unauthorized";
case Status.Forbidden:
return { result, status: "Forbidden" }
return "Forbidden";
case Status.NotFound:
return { result, status: "Not Found" }
return "Not Found";
case Status.Conflict:
return { result, status: "Conflict" }
case Status.Conflict:
return { result, status: "Payload Too Large" }
return "Conflict";
case Status.Gone:
return "Gone";
case Status.PayloadTooLarge:
return "Payload Too Large";
case Status.UnprocessableEntity:
return { result, status: "Unprocessable Entity" }
return "Unprocessable Entity";
case Status.InternalServerError:
return "Internal Server Error";
}
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" });
let response: IResponse<any> = { status: statusMessage(status) };
if (result !== undefined) {
response.result = result;
}
reply.status(status);
reply.send(response);
}

Loading…
Cancel
Save