Metadata-Version: 2.4
Name: EOF_413_LH
Version: 1.0.0
Summary: HTTP-клиент с логированием на основе LLS
Home-page: https://github.com/EOF-413/LibraryHttp
Author: EOF-413
Author-email: org.animea@mail.com
Classifier: Programming Language :: Python :: 3
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: Operating System :: OS Independent
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: EOF_413_LLS>=1.1.0
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# LibraryHttp (LH)

**LH** - это универсальная библиотека для выполнения HTTP запросов с поддержкой повторных попыток и логирования.

## Особенности

- Поддержка GET запросов
- Поддержка скачивания файлов
- Автоматические повторные попытки при ошибках
- Прогресс-бар для скачивания
- Интеграция с LibraryLogSystem (LLS)
- Настраиваемый User-Agent
- Настраиваемые таймауты и задержки

## Установка

```python
from modules import Http
```

## Использование

### GET запрос

```python
from modules import Http
```

# Простой GET запрос

```python
response = Http.get('https://api.example.com/data')
```

# GET запрос с таймаутом

```python
response = Http.get('https://api.example.com/data', timeout=10)
```

# GET запрос с JSON

```python
data = Http.get_json('https://api.example.com/data')
```

### Скачивание файлов

```python
from modules import Http
```

# Скачивание с прогрессом

```python
def progress(percent):
    print(f"Загружено: {percent}%")

Http.download(
    'https://example.com/file.zip',
    'downloads/file.zip',
    progress_callback=progress
)
```

# Скачивание без прогресса

```python
Http.download('https://example.com/file.zip', 'downloads/file.zip')
```

### Настройка параметров

# GET запрос с кастомными параметрами

```python
response = Http.get(
    url='https://api.example.com/data',
    timeout=30,
    attempts=5,
    backoff=2.0
)
```

## API

### Http.get()

```python
Http.get(url, timeout=15, attempts=3, backoff=1.5)
```

Выполняет GET запрос.

Параметры:

```python
- url (str): URL запроса
- timeout (int): Таймаут в секундах (по умолчанию: 15)
- attempts (int): Количество попыток (по умолчанию: 3)
- backoff (float): Множитель задержки между попытками (по умолчанию: 1.5)
```

Возвращает:

```python
- bytes: Содержимое ответа
```

Исключения:

```sql
- urllib.error.HTTPError: Ошибка HTTP
- urllib.error.URLError: Ошибка сети
```

### Http.get_json()

```python
Http.get_json(url, timeout=15)
```

Выполняет GET запрос и возвращает JSON.

Параметры:

```python
- url (str): URL запроса
- timeout (int): Таймаут в секундах (по умолчанию: 15)
```

Возвращает:

```python
- dict/list: Парсенный JSON
```

### Http.download()

```python
Http.download(url, dest_path, progress_callback=None, timeout=15, attempts=3, backoff=1.5)
```

Скачивает файл по URL.

Параметры:

```python
- url (str): URL файла
- dest_path (str): Путь для сохранения
- progress_callback (callable): Функция для отслеживания прогресса (получает процент)
- timeout (int): Таймаут в секундах (по умолчанию: 15)
- attempts (int): Количество попыток (по умолчанию: 3)
- backoff (float): Множитель задержки между попытками (по умолчанию: 1.5)
```

## Логирование

Библиотека автоматически логирует все запросы и ошибки через LLS:

```log
[25.07.2026 21:59:18] [DEBUG] [client.py] [get] [25] -> Попытка 1/3 не удалась для https://api.example.com: Connection refused. Повтор через 1.5 с.
[25.07.2026 21:59:18] [INFO] [client.py] [get] [30] -> Запрос выполнен успешно
```

## Зависимости
[LibraryLogSystem (LLS)](https://github.com/EOF-413/LibraryLogSystem)

