Files
RSSHub/lib/middleware/api-response-handler.js
2019-06-13 15:23:28 +08:00

148 lines
4.1 KiB
JavaScript

/**
* HTTP Status codes
*/
const statusCodes = {
CONTINUE: 100,
OK: 200,
CREATED: 201,
ACCEPTED: 202,
NO_CONTENT: 204,
BAD_REQUEST: 400,
UNAUTHORIZED: 401,
FORBIDDEN: 403,
NOT_FOUND: 404,
REQUEST_TIMEOUT: 408,
UNPROCESSABLE_ENTITY: 422,
INTERNAL_SERVER_ERROR: 500,
NOT_IMPLEMENTED: 501,
BAD_GATEWAY: 502,
SERVICE_UNAVAILABLE: 503,
GATEWAY_TIME_OUT: 504,
};
function responseHandler() {
return async (ctx, next) => {
ctx.res.statusCodes = statusCodes;
ctx.statusCodes = ctx.res.statusCodes;
ctx.res.success = ({ statusCode, data = null, message = null }) => {
const status = 0;
ctx.status = statusCode;
ctx.body = { status, data, message };
};
// ctx.res.fail = ({ statusCode, code, data = null, message = null }) => {
// const status = -1;
// if (!!statusCode && (statusCode >= 400 && statusCode < 500)) {
// ctx.status = statusCode;
// } else if (!(ctx.status >= 400 && ctx.status < 500)) {
// ctx.status = statusCodes.BAD_REQUEST;
// }
// ctx.body = { status, code, data, message };
// };
// ctx.res.error = ({ statusCode, code, data = null, message = null }) => {
// const status = -2;
// if (!!statusCode && (statusCode >= 500 && statusCode < 600)) {
// ctx.status = statusCode;
// } else if (!(ctx.status >= 500 && ctx.status < 600)) {
// ctx.status = statusCodes.INTERNAL_SERVER_ERROR;
// }
// ctx.body = { status, code, data, message };
// };
ctx.res.ok = (params = {}) => {
ctx.res.success({
...params,
statusCode: statusCodes.OK,
});
};
// ctx.res.noContent = (params = {}) => {
// ctx.res.success({
// ...params,
// statusCode: statusCodes.NO_CONTENT,
// });
// };
// ctx.res.badRequest = (params = {}) => {
// ctx.res.fail({
// ...params,
// statusCode: statusCodes.BAD_REQUEST,
// });
// };
// ctx.res.forbidden = (params = {}) => {
// ctx.res.fail({
// ...params,
// statusCode: statusCodes.FORBIDDEN,
// });
// };
// ctx.res.notFound = (params = {}) => {
// ctx.res.fail({
// ...params,
// statusCode: statusCodes.NOT_FOUND,
// });
// };
// ctx.res.requestTimeout = (params = {}) => {
// ctx.res.fail({
// ...params,
// statusCode: statusCodes.REQUEST_TIMEOUT,
// });
// };
// ctx.res.unprocessableEntity = (params = {}) => {
// ctx.res.fail({
// ...params,
// statusCode: statusCodes.UNPROCESSABLE_ENTITY,
// });
// };
// ctx.res.internalServerError = (params = {}) => {
// ctx.res.error({
// ...params,
// statusCode: statusCodes.INTERNAL_SERVER_ERROR,
// });
// };
// ctx.res.notImplemented = (params = {}) => {
// ctx.res.error({
// ...params,
// statusCode: statusCodes.NOT_IMPLEMENTED,
// });
// };
// ctx.res.badGateway = (params = {}) => {
// ctx.res.error({
// ...params,
// statusCode: statusCodes.BAD_GATEWAY,
// });
// };
// ctx.res.serviceUnavailable = (params = {}) => {
// ctx.res.error({
// ...params,
// statusCode: statusCodes.SERVICE_UNAVAILABLE,
// });
// };
// ctx.res.gatewayTimeOut = (params = {}) => {
// ctx.res.error({
// ...params,
// statusCode: statusCodes.GATEWAY_TIME_OUT,
// });
// };
await next();
};
}
module.exports = responseHandler;