node-smsc
Version:
Convenient wrapper of http/https smsc api.
134 lines (108 loc) • 6.66 kB
Markdown
Пример
======
```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` - соответствующий субклиенту пароль