Metadata-Version: 2.1
Name: cbr-client
Version: 0.2.1
Summary: Tool for easy working with https://portal5.cbr.ru API
Home-page: https://github.com/mrslow/cbr-client
Author: Anton Shchetikhin
Author-email: animal2k@gmail.com
License: MIT
Keywords: cbr rest api client
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: httpx
Requires-Dist: pydantic

# cbr-client
![PyPI - License](https://img.shields.io/pypi/l/cbr-client)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/cbr-client)

Клиент для работы с api ЦБ РФ

Описание АПИ - https://cbr.ru/lk_uio/guide/rest_api/

## Установка
```bash
pip install cbr-client
```

## Зависимости
* [httpx](https://github.com/encode/httpx)
* [pydantic](https://github.com/samuelcolvin/pydantic)


## Использование
```python
from cbr_client import Client

client = Client(url='https://portal5test.cbr.ru/back/rapi2', 
                login='test', 
                password='test', 
                user_agent='test app')

files = [
        ('report.zip.enc', 'encrypted report content'),
        ('report.zip.enc.1.sig', 'operator signature'),
        ('report.zip.enc.2.sig', 'client signature')
    ]

# отправка отчета на портал ЦБ
# создание сообщения
msg = client.create_message(files, '1-ПИ')
# загрузка файлов
for f in msg.files:
    client.upload(f)
# или опциональная загрузка чанками
for f in msg.files:
    client.upload(f, chunked=True, chunk_size=2**16)
# финализация (закрытие сессии)
client.finalize_message(msg)

# получение квитанций
receipts = client.get_receipts(msg_id=msg.oid)
for rcpt in receipts:
    # получение файла из хранилища
    for f in rcpt.files:
        # сохраняется в f.content
        client.download(f)

# получение сообщений по типу формы
messages = client.get_messages(form='1-ПИ')
# или по статусу
messages = client.get_messages(status='draft')
# или по типу сообщения (inbox/outbox)
messages = client.get_messages(msg_type='outbox')
# паджинация, по умолчанию возвращается первая страница
messages = client.get_messages(status='draft', page=4)
# или комбинировать параметры как требуется 

# получение файлов сообщения
messages = client.get_messages()
for msg in messages:
    # получение файла из хранилища
    for f in msg.files:
        # сохраняется в f.content
        client.download(f)

# получение списка возможных задач
tasks = client.get_tasks()

# получение списка справочников с данными
dictionaries = client.get_dictionaries()

# получение данных из определенного справочника
d = client.get_dictionary(oid='dictionary_id')

# получение данных профиля
profile = client.get_profile()

# получение доступной квоты использования хранилища
quota = client.get_profile_quota()

# удаление сообщения 
client.delete_message(msg_id='message_id')
```


