Metadata-Version: 2.1
Name: encrypt-storage
Version: 0.2.1
Summary: Позволяет использовать Яндекс диск как хранилище с шифрованием
Home-page: https://github.com/ig-rudenko/encrypt-storage
License: Apache 2.0
Keywords: remote-storage,encryption,yandex-disk,aws-s3,encryption-decryption
Author: ig-rudenko
Author-email: ig.rudenko1@yandex.ru
Requires-Python: >3.9
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Provides-Extra: aws
Requires-Dist: aiofiles (>=23.2.1)
Requires-Dist: aiohttp (>=3.8.6)
Requires-Dist: boto3 (>=1.28.83) ; extra == "aws"
Requires-Dist: botocore (>=1.31.83) ; extra == "aws"
Requires-Dist: cryptography (>=41.0.5)
Requires-Dist: requests (>=2.31.0)
Project-URL: Repository, https://github.com/ig-rudenko/encrypt-storage
Description-Content-Type: text/markdown

### Позволяет использовать Яндекс диск как хранилище с шифрованием

Используется потоковое шифрование

Доступные хранилища:

- Yandex.Disk
- AWS S3

### Установка

Поддержка только яндекс диска

```shell
pip install encrypt-storage
```

С поддержкой AWS S3

```shell
pip install encrypt-storage[aws]
```

### Пример

Синхронное использование

```python
from encrypt_storage import YandexDiskStorage

# Замените 'YOUR_ACCESS_TOKEN' на ваш токен Яндекс.Диска
# Замените 'YOUR_ENCRYPTION_KEY' на ваш ключ шифрования
yandex_disk = YandexDiskStorage(
    "YOUR_ACCESS_TOKEN",
    "YOUR_ENCRYPTION_KEY",
)

# Пример загрузки и шифрования файла
local_file = "docker-compose.yaml"
remote_path = "docker-compose.yaml"
yandex_disk.upload_and_encrypt_file(local_file, remote_path)

# Пример дешифрования файла
decrypted_local_file = "docker-compose2.yaml"
yandex_disk.download_and_decrypt_file(remote_path, decrypted_local_file)

# Пример получения данных файлов
files = yandex_disk.list_files("/")
print(files)
```

Асинхронное использование

```python
import asyncio

from encrypt_storage.asyncio import YandexDiskStorage


async def main():
    # Замените 'YOUR_ACCESS_TOKEN' на ваш токен Яндекс.Диска
    # Замените 'YOUR_ENCRYPTION_KEY' на ваш ключ шифрования
    yandex_disk = YandexDiskStorage(
        "YOUR_ACCESS_TOKEN",
        "YOUR_ENCRYPTION_KEY",
    )

    # Пример загрузки и шифрования файла
    local_file = "docker-compose.yaml"
    remote_path = "docker-compose.yaml"
    await yandex_disk.upload_and_encrypt_file(local_file, remote_path)

    # Пример дешифрования файла
    decrypted_local_file = "docker-compose2.yaml"
    await yandex_disk.download_and_decrypt_file(remote_path, decrypted_local_file)

    # Пример получения метаданных файлов
    files = await yandex_disk.list_files("/")
    print(files)


if __name__ == "__main__":
    asyncio.run(main())

```
