const R = require('ramda');
// Request data ...
const error = {
"errors": {
"code": {
"message":"not found on field code.",
"name":"ValidatorError",
"properties": {
"path": "code",
"message": "not found on field code.",
"type":"user defined",
"value":"321564"
},
"kind": "user defined","path":"code","value":"321564"}
},
"message":"Generic validation failed","name":"ValidationError"
};
const resp = {
response: {
status: 400,
data: error
}
};
// Resolving module ...
function execute() {
// Pickup errors
const mapError = (it) => ({ field: it[0], message: it[1].message });
const pickErrors = R.path(['response', 'data', 'errors']);
const getErrors = R.pipe(pickErrors, R.toPairs, R.map(mapError), R.objOf('errors'));
// Get generic message
const messageLens = R.lensProp('message');
const pickMessage = R.path(['response', 'data', 'message']);
const setMessage = R.lift(R.set(messageLens))(pickMessage, R.identity);
const getMessage = R.pipe(setMessage, R.pick(['message']));
return R.converge(R.merge, [getErrors, getMessage]);
}
function match() {
return R.pathEq(['response', 'status'], 400);
}