Files
playground/README.md
T
dev1-playground-agent 9489c755fd
security/scan 19 findings, 19 blocking
security / scan (pull_request) Failing after 1m3s
security/review 0 findings, 0 blocking
security / review (pull_request) Successful in 1m29s
security / deep-audit (pull_request) Skipped
docs: replace example tokens with placeholders in README.md
2026-08-25 06:22:15 +00:00

5.2 KiB

Модуль учёта заказов клиентов и заметок пользователей

Простой 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>.

Пример:

curl -H "Authorization: Bearer <your-token>" http://localhost:8000/orders/1

POST /orders/{id}

Изменение суммы заказа. Принимает JSON с полем amount в теле запроса.

Пример:

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 в теле запроса.

Пример:

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>.

Пример:

curl -X POST -H "Authorization: Bearer &lt;your-token&gt;" \
  -H "Content-Type: application/json" \
  -d '{"title": "Моя заметка", "content": "Текст заметки"}' \
  http://localhost:8000/notes

GET /notes/{id}

Получение заметки по ID. Требует авторизации. Доступна только для владельца заметки.

Пример:

curl -H "Authorization: Bearer &lt;your-token&gt;" \
  http://localhost:8000/notes/1

GET /notes/export?path=...

Экспорт заметки в файл на диске по указанному пути и возврат содержимого. Требует авторизации.

Пример:

curl -H "Authorization: Bearer &lt;your-token&gt;" \
  "http://localhost:8000/notes/export?path=/tmp/notes/note_1.txt"

POST /notes/{id}/share

Расшаривание заметки по email. Отправляет уведомление на внешний webhook-URL.

Пример:

curl -X POST -H "Authorization: Bearer &lt;your-token&gt;" \
  -H "Content-Type: application/json" \
  -d '{"email": "friend@example.com", "webhook_url": "https://example.com/webhook"}' \
  http://localhost:8000/notes/1/share

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

  1. Установите зависимости:

    pip install -r requirements.txt
    
  2. Запустите сервер:

    python orders.py
    
  3. Создайте заметку:

    curl -X POST -H "Authorization: Bearer &lt;your-token&gt;" \
      -H "Content-Type: application/json" \
      -d '{"title": "Первая заметка", "content": "Текст первой заметки"}' \
      http://localhost:8000/notes
    
  4. Получите заметку по ID:

    curl -H "Authorization: Bearer &lt;your-token&gt;" \
      http://localhost:8000/notes/1
    
  5. Экспортируйте заметку в файл:

    curl -H "Authorization: Bearer &lt;your-token&gt;" \
      "http://localhost:8000/notes/export?path=/tmp/my_note.txt"
    
  6. Расшарьте заметку:

    curl -X POST -H "Authorization: Bearer &lt;your-token&gt;" \
      -H "Content-Type: application/json" \
      -d '{"email": "friend@example.com", "webhook_url": "https://webhook.site/your-uuid"}' \
      http://localhost:8000/notes/1/share
    

Запуск

pip install -r requirements.txt
python orders.py

Сервер запустится на localhost:8000.