Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/downloads
# Byte-compiled / optimized / DLL files
__pycache__/
**/__pycache__
*.py[codz]
*$py.class

Expand Down Expand Up @@ -173,7 +174,7 @@ cython_debug/
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
.idea/

# Abstra
# Abstra is an AI-powered process automation framework.
Expand All @@ -186,7 +187,7 @@ cython_debug/
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
# and can be added to the global gitignore or merged into this file. However, if you prefer,
# you could uncomment the following to ignore the entire vscode folder
# .vscode/
.vscode/

# Ruff stuff:
.ruff_cache/
Expand Down
129 changes: 128 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,128 @@
# http-client-python
# http-client-python

Простой HTTP-клиент для командной строки, написанный на Python. Позволяет отправлять HTTP-запросы различных типов и сохранять ответы в файлы.

## Возможности

- ✅ CLI интерфейс
- ✅ Указание URL для запроса
- ✅ Указание метода запроса (GET, POST, PUT, DELETE и др.)
- ✅ Указание тела запроса
- ✅ Указание заголовков запроса
- ✅ Таймаут ожидания ответа
- ✅ Возможность сохранить данные из ответа в файл
- ✅ Поддержка куки

## Установка

### Требования

- Python 3.13 или выше
- Poetry (для управления зависимостями)

### Установка проекта

1. Клонируйте репозиторий (замените `/path/to/your/projects` на абсолютный путь к директории, где вы хотите разместить проект):
```bash
git clone https://github.com/MatrikSer/http-client-python.git /path/to/your/projects/http-client-python
cd /path/to/your/projects/http-client-python
```

2. Создайте и активируйте виртуальное окружение (опционально, но рекомендуется):
```bash
python -m venv .venv
source .venv/bin/activate # для Linux/Mac
# или
.venv\Scripts\activate # для Windows
```

3. Установите зависимости с помощью Poetry:
```bash
poetry install
```

## Запуск

Проект запускается через Poetry:

```bash
poetry run http-client [аргументы]
```

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

### Основные аргументы

- `url` - обязательный аргумент, URL для запроса (например, `https://example.com`)
- `--method` - HTTP-метод (GET, POST, PUT, DELETE и др.), по умолчанию GET
- `--body` - тело запроса (для POST/PUT запросов)
- `--header` - заголовок запроса (можно указывать несколько раз)
- `--timeout` - таймаут в секундах, по умолчанию 10
- `--cookie` - куки для запроса (например, `name1=value1; name2=value2`)
- `--output` - файл для сохранения ответа
- `--full` / `-f` - сохранить полный HTTP-ответ (включая заголовки)

### Примеры использования

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

```bash
poetry run http-client https://httpbin.org/get
```

#### POST-запрос с телом и заголовками

```bash
poetry run http-client https://httpbin.org/post \
--method POST \
--body "Hello, World!" \
--header "Content-Type: text/plain" \
--header "User-Agent: MyHTTPClient/1.0"
```

#### Запрос с куки и сохранением ответа в файл

```bash
poetry run http-client https://httpbin.org/cookies \
--cookie "session=abc123; user=john" \
--output response.json
```

#### Сохранение полного ответа (с заголовками)

```bash
poetry run http-client https://httpbin.org/get \
--output full_response.txt \
--full
```

#### Запрос с кастомным таймаутом

```bash
poetry run http-client https://slow-api.example.com/data \
--timeout 30
```

## Функции

Проект состоит из следующих основных модулей:

- `client.py` - основной класс HTTP-клиента для отправки запросов
- `parser.py` - парсер аргументов командной строки
- `structures.py` - структуры данных для хранения информации о запросах
- `__main__.py` - точка входа приложения

Клиент поддерживает:
- HTTP и HTTPS соединения
- SSL/TLS шифрование
- Автоматическое определение порта (80 для HTTP, 443 для HTTPS)
- Обработку ответов сервера
- Сохранение ответов в файлы в директорию `downloads/`

## Тестирование

Для запуска тестов используйте:

```bash
poetry run pytest
```
Loading