From 4c0d94e9ecbc53503815eed4b7148260f3a521b0 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Wed, 2 Mar 2022 18:22:22 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD=D0=B8?= =?UTF-8?q?=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=BC=D0=BE=D0=B4?= =?UTF-8?q?=D1=83=D0=BB=D1=8C:=20=D0=98=D0=BD=D1=82=D0=B5=D0=B3=D1=80?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=20=D1=81=20=D0=95=D0=93=D0=A0=D0=AE?= =?UTF-8?q?=D0=9B/=D0=95=D0=93=D0=A0=D0=98=D0=9F=20(DaData)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/egragdd.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 modules/egragdd.js 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;