timi-codes/Banka

View on GitHub
API/utils/ResponseGenerator.js

Summary

Maintainability
A
0 mins
Test Coverage
import Utils from './common';
 
/**
* A class for generating API responses
*/
class ResponseGenerator {
constructor() {
this.status = null;
this.type = null;
this.data = null;
this.message = null;
}
 
/**
* @description API response for 200 & 201
* @param{int} statusCode
* @param {object} data
* @param{string} message
*/
sendSuccess(res, statusCode, data, message) {
this.status = statusCode;
this.data = data;
this.message = message;
this.type = 'success';
 
return this.send(res);
}
 
/**
* @description API response for 400, 401, 403, 404, 503
* @param{int} statusCode
* @param{string} message
* @param {object} data
*/
sendError(res, statusCode, message) {
this.status = statusCode;
this.message = message;
this.type = 'error';
 
return this.send(res);
}
 
/**
* Sends response
* @param {object} res
* @returns {object} response
*/
send(res) {
const filteredResponse = Utils.stripNull({
status: this.status,
message: this.message,
data: this.data,
});
 
if (this.type === 'success') {
return res.status(this.status).json(filteredResponse);
}
// Here this.type === 'error'
return res.status(this.status).json({
status: this.status,
error: this.message,
});
}
}
 
export default ResponseGenerator;