mirror of
https://github.com/DIYgod/RSSHub.git
synced 2025-12-06 21:18:57 +08:00
optimize directory structure
This commit is contained in:
165
lib/middleware/api-response-handler.js
Normal file
165
lib/middleware/api-response-handler.js
Normal file
@@ -0,0 +1,165 @@
|
||||
/**
|
||||
* 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 = 'success';
|
||||
|
||||
if (!!statusCode && statusCode < 400) {
|
||||
ctx.status = statusCode;
|
||||
} else if (!(ctx.status < 400)) {
|
||||
ctx.status = statusCodes.OK;
|
||||
}
|
||||
|
||||
ctx.body = { status, data, message };
|
||||
};
|
||||
|
||||
ctx.res.fail = ({ statusCode, code, data = null, message = null }) => {
|
||||
const status = 'fail';
|
||||
|
||||
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 = 'error';
|
||||
|
||||
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.created = (params = {}) => {
|
||||
ctx.res.success({
|
||||
...params,
|
||||
statusCode: statusCodes.CREATED,
|
||||
});
|
||||
};
|
||||
|
||||
ctx.res.accepted = (params = {}) => {
|
||||
ctx.res.success({
|
||||
...params,
|
||||
statusCode: statusCodes.ACCEPTED,
|
||||
});
|
||||
};
|
||||
|
||||
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;
|
||||
Reference in New Issue
Block a user