UNPKG

node-smsc

Version:

Convenient wrapper of http/https smsc api.

134 lines (108 loc) 6.66 kB
Пример ====== ```javascript var smsc = require('node-smsc')({ login: 'login', password: '5f4dcc3b5aa765d61d8327deb882cf99', hashed: true, }) smsc.send({ phones: '79XXXXXXXXX', mes: 'Hello from node-smsc!', }) ``` Для дополнительных примеров использования обратитесь к тестам. API === ###initSmsc `function initSmsc (options)` - непосредственно функция, возвращаемая модулем. Принимает необязательный параметр `options`. ####options * `login` - логин пользователя smsc * `psw` - пароль пользователя smsc * `password` - алиас для `psw` * `hashed` - флаг, указывающий, что передан уже захешированный пароль * `request` - опция, позволяющая указать путь к API, либо же объект с теми же ключами, что и ожидаемые функцией `request` модуля `http` или `https`, значение по умолчанию `https://smsc.ru/sys/`. * `apiCalls` - объект, позволяет определить пользовательские методы апи, или переопределить встроенные. Ключи - названия методов, значение - функция, имеющая ту же структуру, что и встроенные. Возвращает объект, ключами которого являются названия роутов API: - `send` - `jobs` - `status` - `balance` - `phones` - `users` - `info` - `get` - `get_mnp` - `receive_phones` - `senders` Значениями ключей являются функции, с учетом некоторого переопределенного поведения и параметров, обладающие следующим общим интерфейсом: `function apiCall (query, options, cb)` - `query` - параметры, принимаемые и описываемые API - `options` - опции - `options.files` - массив объектов с полями `field`, `value`, `options`. Значения полей используются для параметризации метода `append` модуля `form-data`. Если это поле указано, поле `requestBodyStream` игнорируется. - `options.requestBodyStream` - указывает `Readable` stream, используемый для наполнения тела запроса - `options.stream` - флаг, указывающий, что следует вернуть не обработанный ответ API, а поток ответа - `options.responseParser` - объект с методом `parse`, принимающий два аргумента - `utf8` строку ответа и дополнительные опции - `options.responseParserOptions` - дополнительные опции для метода `parse` `responseParser`'а - `options.request` - переопределение опций запроса (опции, которые принимает метод `request` модуля `http` или `https`) - `cb` - необязательный коллбэк, если не передан, `Promise` возвращается ###SmscApiError `SmscApiError (message, response)` - Класс-наследник класса `Error`. Экземпляры этого класса могут передаваться первым параметром в коллбеке или rejection handler промиса при выполнении вызова API. Отличия от провайдера ===================== * Кодировка по умолчанию - `utf-8` * В случаях, когда провайдер возвращает строку `OK`, методы модуля возвращают `{result: 'OK'}`. Тесты ===== __Перед запуском тестов следует включить режим тестирования в личном кабинете, иначе запуск тестов может привести к отправке настоящих смс и, как следствие, снятию средств со счета.__ Тесты требуют предварительной настройки. Для этих целей служит файл конфигурации `test/config.json`, который необходимо предварительно создать. Пример структуры конфигурационного файла: ```json { "init": { "login": "<LOGIN>", "password": "<PASSWORD>", "hashed": true }, "phone": "79XXXXXXXXX", "email": "a@b.c", "sublogin": "sublogin", "subpassword": "subpassword" } ``` #####Описание полей: - `init` - формат поля полностью соответствует формату опций, принимаемых модулем (функцией `initSmsc`) - `phone` - контроллируемый вами номер телефона. В случае, если вы забыли включить режим тестирования в личном кабинете, именно на этот номер посыпятся сообщения. - `email` - контроллируемый вами адрес электронной почты. Для отправки сообщений электронной почты предварительлно придется зарегистрировать ваш адрес электронной почты в личном кабинете. Тестовый режим не действует на сообщения электонной почты, они отправляются по-настоящему даже при включенном тестовом режиме. По этой причине соответствующие тесты выключены на уровне кода теста. - `sublogin` - желаемый тестовый логин субклиента. Все тесты на управление субклиентами выключены, из-за невозможности программной очистки результатов тестов, ввиду отсутствия соответствующей поддержки со стороны API. - `subpassword` - соответствующий субклиенту пароль