Metadata-Version: 2.4
Name: request-rule-decorators
Version: 0.1.0
Summary: Library for validating and parsing HTTP response objects with decorators
Author-email: Your Name <your.email@example.com>
License: MIT
Project-URL: Homepage, https://github.com/yourusername/request-rule-decorators
Project-URL: Documentation, https://github.com/yourusername/request-rule-decorators/blob/main/DOCS.md
Project-URL: Repository, https://github.com/yourusername/request-rule-decorators
Project-URL: Issues, https://github.com/yourusername/request-rule-decorators/issues
Keywords: http,validation,parsing,decorator,response,json,html
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Internet :: WWW/HTTP
Requires-Python: >=3.13
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: jsonpath-ng>=1.6.0
Requires-Dist: lxml>=4.9.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: httpx>=0.24.0; extra == "dev"
Dynamic: license-file

# Request Rule Decorators

Библиотека для валидации и парсинга HTTP-ответов с использованием декораторов.

## Установка

```bash
pip install -e .
```

Для разработки с тестами:

```bash
pip install -e ".[dev]"
```

## Быстрый старт

```python
from request_rule_decorators import ResponseHandler, Validator, Parser

@ResponseHandler.handlers(
    Validator.STATUS_CODE().whitelist([200, 201]),
    Validator.CONTENT_TYPE().equals("application/json"),
    Validator.JSON("$.username").whitelist().values(["john_doe"]),
    Validator.JSON("$.age").range(18, 100),
    Parser.JSON("$.age").save_to("parsed_age"),
)
async def my_function():
    # Ваша функция, возвращающая response объект
    return response

result = await my_function()
# result.response - оригинальный response
# result.valid.ERRORS - список ошибок валидации
# result.valid.PARSED - распарсенные данные
# result.is_valid() - проверка валидации
```

## Документация

Подробная документация доступна в файле [DOCS.md](DOCS.md)

## Запуск тестов

```bash
pytest tests/
```

## Запуск демонстрационного примера

```bash
python demo.py
```

## Структура проекта

- `request_rule_decorators/` - основной пакет библиотеки
  - `dto.py` - DTO классы (ValidationError, ValidationData, WithValid)
  - `decorator.py` - декоратор ResponseHandler
  - `rules.py` - фабрика правил (Validator, Parser)
  - `exceptions.py` - кастомные исключения
  - `validators/` - валидаторы (JSON, Headers, StatusCode, ContentType, HTML)
  - `parsers/` - парсеры (JSON, HTML)
- `tests/` - тесты
- `demo.py` - демонстрационный файл
- `DOCS.md` - подробная документация

