# Модуль учёта заказов клиентов и заметок пользователей Простой HTTP-сервис для управления заказами клиентов и заметками пользователей. ## Структура - `orders.py` — основной модуль сервера - `requirements.txt` — зависимости проекта ## Функционал ### Хранение заказов Заказы хранятся в памяти в словаре `orders`. Каждый заказ имеет: - `id` — уникальный идентификатор - `user_id` — владелец заказа - `amount` — сумма заказа ### Хранение заметок Заметки хранятся в памяти в словаре `notes`. Каждая заметка имеет: - `id` — уникальный идентификатор - `user_id` — владелец заметки - `title` — заголовок заметки - `content` — содержимое заметки - `created_at` — время создания ### Эндпоинты #### GET /orders/{id} Получение заказа по ID. Требует авторизации через заголовок `Authorization: Bearer `. **Пример:** ```bash curl -H "Authorization: Bearer " http://localhost:8000/orders/1 ``` #### POST /orders/{id} Изменение суммы заказа. Принимает JSON с полем `amount` в теле запроса. **Пример:** ```bash curl -X POST -H "Authorization: Bearer " \ -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 " \ -H "Content-Type: application/json" \ -d '{"host": "backup.example.com"}' \ http://localhost:8000/admin/backup ``` Бэкап выполняется асинхронно через rsync. Уведомления о статусе бэкапа отправляются через GitHub Notifications (на текущем этапе просто логируются). ### Эндпоинты заметок #### POST /notes Создание новой заметки. Требует авторизации через заголовок `Authorization: Bearer `. **Пример:** ```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`.