Metadata-Version: 2.1
Name: smsaero_api
Version: 3.2.0
Summary: Python client for working with SMS Aero API.
Home-page: https://github.com/smsaero/smsaero_python/
Download-URL: https://github.com/smsaero/smsaero_python/archive/refs/tags/3.1.0.tar.gz
Author: SMS Aero
Author-email: admin@smsaero.ru
Maintainer: SMS Aero Team
Maintainer-email: support@smsaero.ru
License: MIT
Project-URL: Homepage, https://smsaero.ru/
Project-URL: Repository, https://github.com/smsaero/smsaero_python/
Project-URL: Bug Tracker, https://github.com/smsaero/smsaero_python/issues
Project-URL: Help Center, https://smsaero.ru/support/
Keywords: smsaero,api,smsaero_api,sms,hlr,viber
Platform: any
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Communications :: Telephony
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: AUTHORS.md
Requires-Dist: setuptools
Requires-Dist: requests
Requires-Dist: phonenumbers
Requires-Dist: email-validator
Provides-Extra: dev
Requires-Dist: pytest >=8.2.2 ; extra == 'dev'
Requires-Dist: requests >=2.0.0 ; extra == 'dev'
Requires-Dist: types-requests >=2.2.2 ; extra == 'dev'
Requires-Dist: flake8 >=7.1.0 ; extra == 'dev'
Requires-Dist: ruff >=0.4.10 ; extra == 'dev'
Requires-Dist: pylint >=3.2.4 ; extra == 'dev'
Requires-Dist: tox >=4.15.1 ; extra == 'dev'
Requires-Dist: mypy >=1.10.0 ; extra == 'dev'
Requires-Dist: coverage >=7.5.4 ; extra == 'dev'
Requires-Dist: bandit >=1.7.9 ; extra == 'dev'
Requires-Dist: build >=1.2.1 ; extra == 'dev'
Requires-Dist: twine >=5.1.1 ; extra == 'dev'

# Python library for sending SMS messages via SMS Aero API

[![PyPI version](https://badge.fury.io/py/smsaero-api.svg)](https://badge.fury.io/py/smsaero-api)
[![Python Versions](https://img.shields.io/pypi/pyversions/smsaero-api.svg)](https://pypi.org/project/smsaero-api/)
[![Downloads](https://pepy.tech/badge/smsaero-api)](https://pepy.tech/project/smsaero-api)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](MIT-LICENSE)

## Installation (from PyPI):

```bash
pip install -U smsaero-api
```

## Usage example:

Get credentials from account settings page: https://smsaero.ru/cabinet/settings/apikey/

```python
from pprint import pprint
from smsaero import SmsAero, SmsAeroException


SMSAERO_EMAIL = "your email"
SMSAERO_API_KEY = "your api key"


def send_sms(phone: int, message: str) -> dict:
    """
    Sends an SMS message

    Parameters:
    phone (int): The phone number to which the SMS message will be sent.
    message (str): The content of the SMS message to be sent.

    Returns:
    dict: A dictionary containing the response from the SmsAero API.
    """
    api = SmsAero(SMSAERO_EMAIL, SMSAERO_API_KEY)
    return api.send_sms(phone, message)


def send_telegram_code(phone: int, code: int, sign: str = None, text: str = None) -> dict:
    """
    Sends a Telegram code

    Parameters:
    phone (int): The phone number to which the Telegram code will be sent.
    code (int): The Telegram code (4 to 8 digits).
    sign (str, optional): The SMS sender name for fallback.
    text (str, optional): The SMS message text for fallback.

    Returns:
    dict: A dictionary containing the response from the SmsAero API.
    """
    api = SmsAero(SMSAERO_EMAIL, SMSAERO_API_KEY)
    return api.send_telegram(phone, code, sign, text)


if __name__ == "__main__":
    try:
        # Send SMS
        result = send_sms(70000000000, "Hello, World!")
        pprint(result)
        
        # Send Telegram code
        telegram_result = send_telegram_code(70000000000, 1234, "SMS Aero", "Your code is 1234")
        pprint(telegram_result)
    except SmsAeroException as e:
        print(f"An error occurred: {e}")
```

#### Exceptions:

* `SmsAeroException` - base exception class for all exceptions raised by the library.
* `SmsAeroConnectionException` - exception raised when there is a connection error.
* `SmsAeroNoMoneyException` - exception raised when there is not enough money in the account.


## Command line usage:

```bash
SMSAERO_EMAIL="your email"
SMSAERO_API_KEY="your api key"

smsaero_send --email "$SMSAERO_EMAIL" --api_key "$SMSAERO_API_KEY" --phone 70000000000 --message 'Hello, World!'
```

## Run on Docker:

```bash
docker pull 'smsaero/smsaero_python:latest'
docker run -it --rm 'smsaero/smsaero_python:latest' smsaero_send --email "your email" --api_key "your api key" --phone 70000000000 --message 'Hello, World!'
```

## Compatibility:

* Currently version of library is compatible with Python 3.6+.
* Previous versions of Python supported by versions 2.2.0 and below.


## License:

```
MIT License
```
