diff --git a/modules/egragdd.js b/modules/egragdd.js new file mode 100644 index 0000000..badae99 --- /dev/null +++ b/modules/egragdd.js @@ -0,0 +1,62 @@ +/* + Сервис интеграции ПП Парус 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;