@sap/xsodata
Version:
Expose data from a HANA database as OData V2 service with help of .xsodata files.
74 lines (65 loc) • 2.18 kB
JavaScript
;
//Include
var json = require('./../serializer/jsonSerializer');
var HttpError = require('./../utils/errors/httpError');
var configuration = require('./../configuration');
//Code
//
exports.process = function (context, error) {
var content, serializer;
context.logger.silly('error processor', 'process');
context.payloadType = 'application/json';
if (error.statusCode === 304) {
// In case of "304 Not modified" message
serializer = new json.JsonSerializer(context, 0, 304);
serializer.flush();
return;
}
const stringStatusCode = error.statusCode ? ('' + error.statusCode) : null;
if (context.mode === configuration.modes.development) {
context.logger.debug('error processor', 'in dev mode');
content = {
error: {
code: stringStatusCode || '500',
message: {
lang: 'en-US',
value: error.message,
stack: error.stack
}
}
};
} else {
if (error instanceof HttpError) {
content = {
error: {
code: stringStatusCode || '500',
message: {
lang: 'en-US',
value: error.message
}
}
};
if (error.innerError) {
if (error.innerError instanceof Error) {
content.error.innererror = error.innerError.message;
} else {
content.error.innererror = error.innerError;
}
}
} else {
content = {
error: {
code: '500',
message: {
lang: 'en-US',
value: error.message
}
}
};
}
}
context.logger.silly('error processor', 'content' + JSON.stringify(content));
serializer = new json.JsonSerializer(context, 65536, content.error.code);
serializer.write(content);
serializer.flush();
};