Initial commit
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
const config = require('../config');
|
||||
|
||||
class ApiResponse {
|
||||
constructor(success, statusCode, data = null, message = null, errors = null) {
|
||||
this.success = success;
|
||||
this.statusCode = statusCode;
|
||||
this.data = data;
|
||||
this.message = message;
|
||||
this.errors = errors;
|
||||
this.timestamp = new Date().toISOString();
|
||||
}
|
||||
|
||||
toJSON() {
|
||||
const response = {
|
||||
success: this.success,
|
||||
timestamp: this.timestamp,
|
||||
};
|
||||
|
||||
if (this.message) response.message = this.message;
|
||||
if (this.data !== null) response.data = this.data;
|
||||
if (this.errors) response.errors = this.errors;
|
||||
|
||||
return response;
|
||||
}
|
||||
}
|
||||
|
||||
class ResponseHandler {
|
||||
static success(res, data, message = 'Success', statusCode = config.HTTP_STATUS.OK) {
|
||||
const response = new ApiResponse(true, statusCode, data, message);
|
||||
return res.status(statusCode).json(response.toJSON());
|
||||
}
|
||||
|
||||
static created(res, data, message = 'Resource created successfully') {
|
||||
return this.success(res, data, message, config.HTTP_STATUS.CREATED);
|
||||
}
|
||||
|
||||
static error(
|
||||
res,
|
||||
message,
|
||||
statusCode = config.HTTP_STATUS.INTERNAL_SERVER_ERROR,
|
||||
errors = null
|
||||
) {
|
||||
const response = new ApiResponse(false, statusCode, null, message, errors);
|
||||
return res.status(statusCode).json(response.toJSON());
|
||||
}
|
||||
|
||||
static badRequest(res, message = 'Bad request', errors = null) {
|
||||
return this.error(res, message, config.HTTP_STATUS.BAD_REQUEST, errors);
|
||||
}
|
||||
|
||||
static notFound(res, message = 'Resource not found') {
|
||||
return this.error(res, message, config.HTTP_STATUS.NOT_FOUND);
|
||||
}
|
||||
|
||||
static unauthorized(res, message = 'Unauthorized') {
|
||||
return this.error(res, message, config.HTTP_STATUS.UNAUTHORIZED);
|
||||
}
|
||||
|
||||
static forbidden(res, message = 'Forbidden') {
|
||||
return this.error(res, message, config.HTTP_STATUS.FORBIDDEN);
|
||||
}
|
||||
|
||||
static conflict(res, message = 'Resource conflict', errors = null) {
|
||||
return this.error(res, message, config.HTTP_STATUS.CONFLICT, errors);
|
||||
}
|
||||
|
||||
static internalError(res, message = 'Internal server error', error = null) {
|
||||
if (error && config.isDevelopment) {
|
||||
console.error('Internal Error:', error);
|
||||
}
|
||||
return this.error(res, message, config.HTTP_STATUS.INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ResponseHandler;
|
||||
Reference in New Issue
Block a user