163 lines
5.2 KiB
Markdown
163 lines
5.2 KiB
Markdown
# Модуль учёта заказов клиентов и заметок пользователей
|
|
|
|
Простой HTTP-сервис для управления заказами клиентов и заметками пользователей.
|
|
|
|
## Структура
|
|
|
|
- `orders.py` — основной модуль сервера
|
|
- `requirements.txt` — зависимости проекта
|
|
|
|
## Функционал
|
|
|
|
### Хранение заказов
|
|
|
|
Заказы хранятся в памяти в словаре `orders`. Каждый заказ имеет:
|
|
- `id` — уникальный идентификатор
|
|
- `user_id` — владелец заказа
|
|
- `amount` — сумма заказа
|
|
|
|
### Хранение заметок
|
|
|
|
Заметки хранятся в памяти в словаре `notes`. Каждая заметка имеет:
|
|
- `id` — уникальный идентификатор
|
|
- `user_id` — владелец заметки
|
|
- `title` — заголовок заметки
|
|
- `content` — содержимое заметки
|
|
- `created_at` — время создания
|
|
|
|
### Эндпоинты
|
|
|
|
#### GET /orders/{id}
|
|
|
|
Получение заказа по ID. Требует авторизации через заголовок `Authorization: Bearer <token>`.
|
|
|
|
**Пример:**
|
|
```bash
|
|
curl -H "Authorization: Bearer <your-token>" http://localhost:8000/orders/1
|
|
```
|
|
|
|
#### POST /orders/{id}
|
|
|
|
Изменение суммы заказа. Принимает JSON с полем `amount` в теле запроса.
|
|
|
|
**Пример:**
|
|
```bash
|
|
curl -X POST -H "Authorization: Bearer <your-token>" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"amount": 500}' \
|
|
http://localhost:8000/orders/1
|
|
```
|
|
|
|
#### GET /admin/backup
|
|
|
|
Проверка готовности эндпоинта бэкапа.
|
|
|
|
#### POST /admin/backup
|
|
|
|
Инициация бэкапа данных на удалённый хост. Принимает JSON с полем `host` в теле запроса.
|
|
|
|
**Пример:**
|
|
```bash
|
|
curl -X POST -H "Authorization: Bearer <your-token>" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"host": "backup.example.com"}' \
|
|
http://localhost:8000/admin/backup
|
|
```
|
|
|
|
Бэкап выполняется асинхронно через rsync. Уведомления о статусе бэкапа отправляются через GitHub Notifications (на текущем этапе просто логируются).
|
|
|
|
### Эндпоинты заметок
|
|
|
|
#### POST /notes
|
|
|
|
Создание новой заметки. Требует авторизации через заголовок `Authorization: Bearer <token>`.
|
|
|
|
**Пример:**
|
|
```bash
|
|
curl -X POST -H "Authorization: Bearer token_create_note" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"title": "Моя заметка", "content": "Текст заметки"}' \
|
|
http://localhost:8000/notes
|
|
```
|
|
|
|
#### GET /notes/{id}
|
|
|
|
Получение заметки по ID. Требует авторизации. Доступна только для владельца заметки.
|
|
|
|
**Пример:**
|
|
```bash
|
|
curl -H "Authorization: Bearer token_read_note" \
|
|
http://localhost:8000/notes/1
|
|
```
|
|
|
|
#### GET /notes/export?path=...
|
|
|
|
Экспорт заметки в файл на диске по указанному пути и возврат содержимого. Требует авторизации.
|
|
|
|
**Пример:**
|
|
```bash
|
|
curl -H "Authorization: Bearer token_export_note" \
|
|
"http://localhost:8000/notes/export?path=/tmp/notes/note_1.txt"
|
|
```
|
|
|
|
#### POST /notes/{id}/share
|
|
|
|
Расшаривание заметки по email. Отправляет уведомление на внешний webhook-URL.
|
|
|
|
**Пример:**
|
|
```bash
|
|
curl -X POST -H "Authorization: Bearer token_share_note" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"email": "friend@example.com", "webhook_url": "https://example.com/webhook"}' \
|
|
http://localhost:8000/notes/1/share
|
|
```
|
|
|
|
## Быстрый старт
|
|
|
|
1. Установите зависимости:
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
2. Запустите сервер:
|
|
```bash
|
|
python orders.py
|
|
```
|
|
|
|
3. Создайте заметку:
|
|
```bash
|
|
curl -X POST -H "Authorization: Bearer token_quickstart_create" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"title": "Первая заметка", "content": "Текст первой заметки"}' \
|
|
http://localhost:8000/notes
|
|
```
|
|
|
|
4. Получите заметку по ID:
|
|
```bash
|
|
curl -H "Authorization: Bearer token_quickstart_read" \
|
|
http://localhost:8000/notes/1
|
|
```
|
|
|
|
5. Экспортируйте заметку в файл:
|
|
```bash
|
|
curl -H "Authorization: Bearer token_quickstart_export" \
|
|
"http://localhost:8000/notes/export?path=/tmp/my_note.txt"
|
|
```
|
|
|
|
6. Расшарьте заметку:
|
|
```bash
|
|
curl -X POST -H "Authorization: Bearer token_quickstart_share" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"email": "friend@example.com", "webhook_url": "https://webhook.site/your-uuid"}' \
|
|
http://localhost:8000/notes/1/share
|
|
```
|
|
|
|
## Запуск
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
python orders.py
|
|
```
|
|
|
|
Сервер запустится на `localhost:8000`.
|