@sap/xsodata
Version:
Expose data from a HANA database as OData V2 service with help of .xsodata files.
77 lines (68 loc) • 2.21 kB
JavaScript
;
//Include
const json = require('./../serializer/jsonSerializer');
const HttpError = require('./../utils/errors/httpError');
const configuration = require('./../configuration');
//Code
//
exports.process = function (context, error) {
let 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();
};