/yandex_academy_task

Web App with REST API

Primary LanguagePythonMIT LicenseMIT

Задание для школы бэкенд-разработки Яндекса

Описание задания

Необходимо реализовать бэкенд для веб-сервиса хранения файлов, аналогичный Я.Диск

Пользователь может загружать файлы, изменять их, получать данные о папке и тд.

Моя задача - написать REST API сервис, который позволит пользователям загружать, обновлять и скачивать информацию о файлах и директориях.

Реализованные обработчики

1. POST /imports

Принимает на вход данные об импортируемых файлах и директориях в формате json.

Отвечает за добавление элементов в базу.

Каждый элемент имеет свой уникальный id, который, как и остальные параметры, хранится в БД

В случае успеха обработчки возвращает 200.

В случае получения невалидных данных возвращает 400: { "code": 400, "message": "Validation Failed" }

2. GET /nodes/$id

Принимает на вход уникальный id элемента.

При валидном значении id возращает 200 и информацию об элементе и его дочерних файлах (если это папка) в формате json.

При невалидной схеме запроса возращает 400: { "code": 400, "message": "Validation Failed" }

При отсутствии элемента в базе возвращает 404: { "code": 404, "message": "Item not found" }

3. DELETE /delete/$id

Принимает на вход 2 обязательный параметра: id элемента и date - дата и время запроса (ISO 8601)

При валидных входных данных удаляет элемент и его дочерние файлы и возвращает 200

При невалидный схеме запроса возвращает 400: { "code": 400, "message": "Validation Failed" }

При отсутствии элемента в базе возвращает 404: { "code": 404, "message": "Item not found" }

4. GET /updates

Принимает на вход параметр date - дату в рамках, которой надо вернуть файлы, измененные в промежутке от date до date - 24h

При валидных входных данных возвращает список файлов в формате json

В ином случае возвращает 400: { "code": 400, "message": "Validation Failed" }

Инструкции

Запуск приложения

Настраиваем виртуальное окружение

Устанавливаем python3-venv
  sudo apt install python3-venv
Создаем виртуальное окружение
  python3 -m venv venv
Переходим в созданное окружение
  source venv/bin/activate
Устанавливаем необходимые пакеты
  pip install wheel
  pip install uwsgi flask
Запускаем приложение
  sudo uwsgi --ini wsgi-config.ini

Тесты

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

  python3 tests/unit_test.py

Запуск тестов на проверку /imports

  python3 tests/import_test.py

Запуск тестов на проверку /nodes

  python3 tests/nodes_test.py

Запуск тестов на проверку /delete

  python3 tests/delete_test.py

Запуск тестов на проверку /updates

  python3 tests/updates_test.py