63 lines
2.4 KiB
JavaScript
Raw Permalink 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
Дополнительный модуль: Интеграция с ЕГРЮЛ/ЕГРИП (DaData)
*/
//------------
// Тело модуля
//------------
//Обработчик "До" отправки запроса к сервису
const beforeProcess = async prms => {
try {
//Считаем токен доступа из контекста сервиса
let sToken = prms.service.sSrvPass;
//Если не заполнен токен доступа - значит нет аутентификации на сервере
if (!sToken) return { bUnAuth: true };
//Собираем и отдаём общий результат работы - отдаём запрос в XML, и ответ ожидаем (ключ заголовка "Accept") в XML
return {
options: {
headers: {
"Content-type": "application/xml; charset=utf-8",
Accept: "application/xml; charset=utf-8",
Authorization: "Token " + sToken
},
simple: false
}
};
} catch (e) {
throw Error(e);
}
};
//Обработчик "После" запроса к сервису
const afterProcess = async prms => {
//Разберем ответ
if (prms.queue.blResp) {
//Нормальные данные приходят в XML (мы так просили), но ошибки - всегда в JSON
try {
//Поэтому пробуем разобрать ответ как JSON
resp = JSON.parse(prms.queue.blResp.toString());
//Если получилось - положим в тело текст ошибки сервера
return {
blResp: Buffer.from(resp.message)
};
} catch (e) {
//Разобрать не получилось - видимо пришли обычные данные
return;
}
} else {
//Вообще нет данных в теле ответа
return {
blResp: Buffer.from("Сервер ЕГРЮЛ/ЕГРИП (DaData) не вернул ответ")
};
}
};
//-----------------
// Интерфейс модуля
//-----------------
exports.beforeProcess = beforeProcess;
exports.afterProcess = afterProcess;