npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

smev3-soap

v1.0.1

Published

Формирование SOAP-сообщений для СМЭВ 3

Downloads

3

Readme

workflow Jest coverage

node-smev3-soap

Disclaimer

This software is developed solely for integration with Russian government IT systems, so the Cyrillic script is widely used in its documentation.

Описание

node-smev3-soap -- библиотека node.js для формирования SOAP-запросов к Системе межведомственного электронного взаимодействия 3-й версии (СМЭВ 3).

Здесь рассматривается только задача составления текста сообщений в соответствии с утверждёнными схемами XML из данных, представленных обычными объектами javaScript.

Ограничения

Отправка сообщений по сети, отслеживание очередей, обработка содержательной части ответов и т. п. задачи должны решаться приложениями, использующими node-smev3-soap, а не ей самой.

Подписывание сообщений также не относится к задачам, решаемым данной библиотекой. Она генерирует XML-документы, некоторое из элементов которых помечены атрибутами Id. Предполагается, что электронная подпись прикрепляется вызовом отдельного сервиса перед отправкой сообщения в СМЭВ.

Установка

npm install smev3-soap

Использование

const {SmevSoap} = require ('smev3-soap')
const smevSoap = new SmevSoap ()

const OriginalMessageID = '59a8e1bd-7cdd-11ed-a125-005056a5851b'
const data = {
  ExportDebtRequestsRequest: {	
    "information-system-id": "1c33b13d-992f-4eb5-b891-7bf845fda440",
    "organization-id": "360617e3-6813-4481-9c45-43a574f6b1af",
    "request-id": [
      "eb629532-8995-483f-b9fc-018ee5e5d8cd",
      "fd34f457-c8a8-4b95-8a72-1b6ce00cb6c1",
    ],
  }
}

const sendRequestXML = smevSoap.sendRequest (OriginalMessageID, data, 'dom-gosuslugi-ru-smev3-debt-responses.xsd')
const getResponseXML = smevSoap.getResponse ()

const MessageId      = smevSoap.getMessageId (responseResponseXML)
const ackXML         = smevSoap.ack (MessageId)

Конструктор

const smevSoap = new SmevSoap (/*{
//  soap: '1.1',
//  smev: '1.1',
//  declaration: {encoding: 'UTF-8'},
//  header: '',
}*/)

Создаёт экземпляр объекта, пригодный для генерации множества SOAP-сообщений с аналогичным набором опций.

Опции

| Имя | По умолчанию | Описание | Примечание | | ---- | ------------ | -------- | ---------- | | soap | '1.1' | Версия SOAP | Допустимо '1.1' или '1.2' | | smev | '1.1' | Версия СМЭВ | Пока допустимо только '1.1' | | declaration | {encoding: 'UTF-8'} | Содержимое декларации XML | Можно подавить вывод декларации, указав null, или же установить собствееный encoding. В последнем случае, скорее всего, потребуется дополнительное перекодирование результата, поскольку XML генерируется всегда как String| | header | undefined | Содержимое SOAP-элемента Header | По умолчанию (undefined) Header отсутствует. Иначе он генерируется, причём значение опции header подставляется внутрь как есть (без замены скобок, кавычек и т. п.). В частности, если требуется пустой Header, можно указать здесь строку нулевой длины ('')|

Методы

sendRequest

Генерирует SOAP-конверт, содержащий элемент СМЭВ SendRequestRequest с содержимым (SenderProvidedRequestData), которое получено из заданного объекта данных по требуемой "схеме вида сведений".

const OriginalMessageID = '59a8e1bd-7cdd-11ed-a125-005056a5851b'
const data = {
  ExportDebtRequestsRequest: {	
    "information-system-id": "1c33b13d-992f-4eb5-b891-7bf845fda440",
    "organization-id": "360617e3-6813-4481-9c45-43a574f6b1af",
    "request-id": [
      "eb629532-8995-483f-b9fc-018ee5e5d8cd",
      "fd34f457-c8a8-4b95-8a72-1b6ce00cb6c1",
    ],
  }
}

const sendRequestXML = smevSoap.sendRequest (OriginalMessageID, data, 'dom-gosuslugi-ru-smev3-debt-responses.xsd'/*, {
// Id: 1,
// test: true,
}*/)

Параметры

| Имя | Описание | Примечание | | ---- | -------- | ---------- | | OriginalMessageID | Идентификатор отправляемого сообщения | В результате подставляется в элемент MessageID | | data | Объект данных для упаковки согласно схеме | Подробнее о сериализации см. XMLMarshaller | | path | Путь к корневому файлу XML-схемы | Или объект XMLSchemata, полученный из него | | options | Набор опций | См. следующий раздел |

Опции

| Имя | По умолчанию | Описание | Примечание | | ---- | ------------ | -------- | ---------- | | Id | 'U' + OriginalMessageID | Атрибут Id | Используется для обозначения подписываемого элемента. Значение самостоятельного смысла не имеет, так что необходимость в его использовании маловероятна | | test | false | Добавлять ли TestMessage | При истинном значении этой опции TestMessage добавляется |

getResponse

Генерирует SOAP-конверт, содержащий элемент СМЭВ GetResponseRequest.

const getResponseXML = smevSoap.getResponse (/*, {
// Id: 1,
// Timestamp: new Date (),
}*/)

Параметры

| Имя | Описание | Примечание | | ---- | -------- | ---------- | | options | Набор опций | См. следующий раздел |

Опции

| Имя | По умолчанию | Описание | Примечание | | ---- | ------------ | -------- | ---------- | | Id | 'U9552f341-4b2b-4cb3-b0b5-fea58fa165e1' | Атрибут Id | | | Timestamp | new Date () | Метка времени в MessageTypeSelector | |

getMessageId

Читает из данного XML содержимое первого встреченного элемента с локальным именем MessageId.

const MessageId = smevSoap.getMessageId (responseResponseXML)

В отличие от остальных методов, этот не генерирует, а, наоборот, разбирает XML. Извлекаемое им значение далее нужно для составления запроса Ack.

responseResponseXML должен быть полученным от СМЭВ SOAP-сообщением, содержащим GetResponseResponse.

ack

Генерирует SOAP-конверт, содержащий элемент СМЭВ AckRequest для заданного MessageID.

const ackXML = smevSoap.ack (MessageID /*, {
// Id: 1,
// accepted: true,
}*/)

Параметры

| Имя | Описание | Примечание | | ---- | -------- | ---------- | | MessageID | Идентификатор сообщения | о получении которого требуется сообщить | | options | Набор опций | См. следующий раздел |

Опции

| Имя | По умолчанию | Описание | Примечание | | ---- | ------------ | -------- | ---------- | | Id | 'U' + OriginalMessageID | Атрибут Id | | | accepted | true | Значение атрибута accepted | |