in progress

This commit is contained in:
2026-01-31 19:30:41 +03:00
parent c62ca01584
commit 69ec3a6050
7 changed files with 267 additions and 2 deletions

112
README.md
View File

@@ -1,3 +1,111 @@
# smsc
# SMSc - Отправка SMS через smsc.ru
Отправка смс при помощи сервиса smsc.ru
Пакет `smsc` предоставляет простой способ отправки SMS через сервис [smsc.ru](https://smsc.ru) на языке Go.
## Установка
```bash
go get git.gm6.ru/icewind/smsc
```
## Использование
```go
package main
import (
"git.gm6.ru/icewind/smsc"
)
func main() {
// Создание запроса на отправку SMS
req := smsc.RequestSMS{
ApiKey: аш_api_ключ", // Замените на ваш реальный API-ключ
Phone: "+79991234567", // Номер получателя
Message: "Привет от Go!", // Текст сообщения
}
// Отправка SMS
resp := smsc.SendSMS(req)
// Проверка результата
if resp.Error != "" {
// Обработка ошибки
panic(resp.Error)
}
// Успешная отправка
fmt.Printf("SMS отправлена. ID: %d, Количество сообщений: %d\n", resp.ID, resp.Cnt)
}
```
## Функции
### `SendSMS(req RequestSMS) ResponseSMS`
Отправляет SMS через сервис smsc.ru.
**Параметры:**
- `req` — структура `RequestSMS` с данными для отправки.
**Возвращает:**
- `ResponseSMS` — ответ от сервера, включая `ID` и `Cnt`, или ошибку.
## Структуры
### `RequestSMS`
| Поле | Тип | Описание | JSON-тег |
|-----------|--------|------------------------------|--------------|
| `ApiKey` | string | API-ключ от smsc.ru | `apikey` |
| `Phone` | string | Номер телефона получателя | `phones` |
| `Message` | string | Текст сообщения | `mes` |
### `ResponseSMS`
| Поле | Тип | Описание | JSON-тег |
|-----------|-----|---------------------------------|----------|
| `ID` | int | Уникальный идентификатор SMS | `id` |
| `Cnt` | int | Количество отправленных SMS | `cnt` |
| `Error` | string | Описание ошибки (если есть) | `error` |
| `ErrorCode`| int | Код ошибки | `error_code` |
## Обработка ошибок
Если произошла ошибка при отправке, поле `Error` в `ResponseSMS` будет содержать описание ошибки.
```go
resp := smsc.SendSMS(req)
if resp.Error != "" {
log.Printf("Ошибка: %s (код: %d)\n", resp.Error, resp.ErrorCode)
}
```
## Тестирование
Для тестирования функции `SendSMS` можно использовать реальные вызовы (интеграционные тесты). Пример теста:
```go
func TestSendSMS(t *testing.T) {
req := RequestSMS{
ApiKey: аш_api_ключ",
Phone: "+79991234567",
Message: "Тестовое сообщение",
}
resp := SendSMS(req)
if resp.Error != "" {
t.Errorf("Ошибка при отправке SMS: %s", resp.Error)
}
if resp.ID == 0 {
t.Error("Ожидался ненулевой ID")
}
}
```
> **Внимание:** Не забудьте заменить `ваш_api_ключ` на реальный ключ и убедитесь, что номер телефона корректен.
## Лицензия
MIT