74 lines
2.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
Сервис интеграции ПП Парус 8 с WEB API
Модуль ядра: вспомогательные функции
*/
//----------------------
// Подключение библиотек
//----------------------
const _ = require("lodash"); //Работа с массивами и объектами
const Schema = require("validate"); //Схемы валидации
const { SERR_UNEXPECTED, SMODULES_PATH_MODULES } = require("./constants"); //Глобавльные константы системы
const { ServerError } = require("./server_errors"); //Ошибка сервера
//------------
// Тело модуля
//------------
//Валидация объекта
const validateObject = (obj, schema, sObjName) => {
//Объявим результат
let sRes = "";
if (schema instanceof Schema) {
if (obj) {
const objTmp = _.cloneDeep(obj);
const errors = schema.validate(objTmp, { strip: false });
if (errors && Array.isArray(errors)) {
if (errors.length > 0) {
let a = errors.map(e => {
return e.message;
});
sRes =
"Объект" +
(sObjName ? " '" + sObjName + "' " : " ") +
"имеет некорректный формат: " +
_.uniq(a).join("; ");
}
} else {
sRes = "Неожиданный ответ валидатора";
}
} else {
sRes = "Объект" + (sObjName ? " '" + sObjName + "' " : " ") + "не указан";
}
} else {
sRes = "Ошибочный формат схемы валидации";
}
//Вернем результат
return sRes;
};
//Формирование полного пути к подключаемому модулю
const makeModuleFullPath = sModuleName => {
if (sModuleName) {
return SMODULES_PATH_MODULES + "/" + sModuleName;
} else {
return "";
}
};
//Формирование текста ошибки
const makeErrorText = e => {
let sErr = `${SERR_UNEXPECTED}: ${e.message}`;
if (e instanceof ServerError) sErr = `${e.sCode}: ${e.sMessage}`;
return sErr;
};
//-----------------
// Интерфейс модуля
//-----------------
exports.validateObject = validateObject;
exports.makeModuleFullPath = makeModuleFullPath;
exports.makeErrorText = makeErrorText;