Skip to content

Проектная работа пятого спринта курса «Асинхронное программирование на Python».

Notifications You must be signed in to change notification settings

robky/async-python-sprint-5

Repository files navigation

Файловое хранилище

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

Описание

Сервис, который обрабатывает поступающие запросы.

Список необходимых эндпойнтов.
  1. Регистрация пользователя.

    Описание изменений.
    POST /api/v1/user/register
    

    Регистрация нового пользователя. Запрос принимает на вход логин и пароль для создания новой учетной записи.

  2. Авторизация пользователя.

    Описание изменений.
    POST /api/v1/user/auth
    

    Запрос принимает на вход логин и пароль учетной записи и возвращает авторизационный токен. Далее все запросы проверяют наличие токена в заголовках - Authorization: Bearer <token>

  3. Информация о загруженных файлах.

    Описание изменений.
    GET /api/v1/files
    

    Возвращает информацию о ранее загруженных файлах. Доступно только авторизованному пользователю.

    Response

    {
        "account": "user_name",
        "files": [
              {
                "id": "a19ad56c-d8c6-4376-b9bb-ea82f7f5a853",
                "name": "notes.txt",
                "created_ad": "2020-09-11T17:22:05Z",
                "path": "/homework/test-folder/notes.txt",
                "size": 8512
              },
            ...
              {
                "id": "113c7ab9-2300-41c7-9519-91ecbc527de1",
                "name": "tree-picture.png",
                "created_ad": "2019-06-19T13:05:21Z",
                "path": "/homework/work-folder/environment/tree-picture.png",
                "size": 1945
              }
        ]
    }
  4. Загрузить файл в хранилище.

    Описание изменений.
    POST /api/v1/files/upload
    

    Метод загрузки файла в хранилище. Доступно только авторизованному пользователю. Для загрузки заполняется полный путь до файла, в который будет загружен/переписан загружаемый файл.

    Request

    {
        "path": <full-path-to-file>||<path-to-folder>,
    }
    

    Response

    {
        "id": "a19ad56c-d8c6-4376-b9bb-ea82f7f5a853",
        "name": "notes.txt",
        "created_ad": "2020-09-11T17:22:05Z",
        "path": "/homework/test-folder/notes.txt",
        "size": 8512
    }
  5. Скачать загруженный файл.

    Описание изменений.
    GET /api/v1/files/download
    

    Скачивание ранее загруженного файла. Доступно только авторизованному пользователю.

    Path parameters

    /?path=<path-to-file>||<file-meta-id>
    

    Возможность скачивания как по переданному пути до файла, так и по идентификатору.

Как запустить проект:

Клонировать репозиторий и перейти в него. Переименовать файл .env.example в .env

mv .env.example .env

Заполнить файл .env актуальными данными.

Запустить контейнеры

docker-compose up -d

Проект будет доступен на 8080 порту.

About

Проектная работа пятого спринта курса «Асинхронное программирование на Python».

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published