53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
const defaultExcludedItemsFromResponse = ['__v', 'password'];
|
|
|
|
class HttpResponse {
|
|
|
|
/**
|
|
* @author Sunil Kumar Samanta
|
|
* @param data : Object | Array | String
|
|
* @param options : {totalCount: Number, statusCode: Number, deleted: Boolean}
|
|
*/
|
|
error = false;
|
|
responseTimestamp = new Date();
|
|
|
|
constructor(data, options = { 'totalCount': 0, 'statusCode': 200, 'deleted': null }) {
|
|
this.statusCode = options.statusCode || 200;
|
|
let filteredData = data;
|
|
|
|
if (typeof (filteredData) === 'object') {
|
|
filteredData = this.filterData(JSON.parse(JSON.stringify(filteredData)));
|
|
}
|
|
if (options.deleted) {
|
|
this.deleted = options.deleted;
|
|
}
|
|
if (Array.isArray(filteredData)) {
|
|
this.data = [...filteredData];
|
|
this.totalCount = options.totalCount || undefined;
|
|
} else if (typeof (filteredData) === 'object') {
|
|
this.data = { ...filteredData };
|
|
} else {
|
|
this.data = data;
|
|
}
|
|
}
|
|
|
|
filterData(data) {
|
|
if (Array.isArray(data)) {
|
|
data.map((x, index) => {
|
|
Object.keys(x).forEach((key) => {
|
|
if (defaultExcludedItemsFromResponse.includes(key)) {
|
|
delete data[index][key];
|
|
}
|
|
});
|
|
});
|
|
} else if (typeof (data) === 'object') {
|
|
Object.keys(data).forEach((key) => {
|
|
if (defaultExcludedItemsFromResponse.includes(key)) {
|
|
delete data[key];
|
|
}
|
|
});
|
|
}
|
|
return data;
|
|
}
|
|
}
|
|
|
|
module.exports = { HttpResponse }; |