44 lines
No EOL
1.2 KiB
JavaScript
44 lines
No EOL
1.2 KiB
JavaScript
'use strict';
|
|
|
|
var ApiResponse = function(config) {
|
|
this.config = config;
|
|
this.reponse = config.response;
|
|
this.targetVersion = config.targetVersion;
|
|
this.version = config.version;
|
|
};
|
|
|
|
ApiResponse.factory = function factory(config) {
|
|
return new ApiResponse(config);
|
|
};
|
|
|
|
module.exports = ApiResponse;
|
|
|
|
ApiResponse.prototype.respond = function respond(err, res, statusCodeOpt) {
|
|
var statusCode = statusCodeOpt || 200;
|
|
if (err) return this.response.json(statusCode, this._buildErr(err));
|
|
this.response.json(statusCode, this._buildResponse(res));
|
|
};
|
|
|
|
ApiResponse.prototype._buildErr = function _buildErr(err) {
|
|
// Handle err as either string or error type
|
|
var message = err.message || err;
|
|
var name = err.name || null;
|
|
|
|
if (this.targetVersion < 1) return {err: message, errType: name};
|
|
return {err: {
|
|
name: name,
|
|
message: message,
|
|
version: this.version
|
|
}
|
|
};
|
|
};
|
|
|
|
ApiResponse.prototype._buildResponse = function _buildResponse(res) {
|
|
if (this.targetVersion < 1) {
|
|
var fullRes = res;
|
|
fullRes = fullRes || {};
|
|
fullRes.err = null;
|
|
return fullRes;
|
|
}
|
|
return {err: null, result: res || null, version: this.version};
|
|
}; |