Skip to content

odysseymorphey/drive-grpc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gRPC Cloud Drive

Описание

Данное творение ничто иное, как удаленное хранилище файлов, построеное по технологии gRPC

Возможности:

  • Загужать файлы
  • Скачивать файлы
  • Получить список всех файлов на сервере

Момент превозмогания...

В качестве отслеживания загружаемых файлов используется CSV-таблица, которая хранит UUID файла и его название. Сделано это было во избежание файловых коллизий, когда загружаются два файла с одинаковым названием. Поэтому для скачивания файла указываются его название и UUID.

Решение не идеальное, но, в рамках проекта, рабочее. По хорошему, если развивать идею, нужно заводить отдельную систему с версионированием File->Version->Content а-ля гит для файлов с привязкой к юзеру, которая избавит проблем с коллизиями, где, вкратце, File - родительская сущность, Version - очередной дубликат, Content - сам файл.

P.S.

Некоторые параметры захардкожены, при сохранении информации о файле в БД UUID переводится в строку. Так делать нельзя, но для демонстрации сгодится.

Инструкция

Сборка

❗ Все команды выполняются из корневой директории проекта

Собираем клиент:

make client

Так как в проекте уже лежат сгенерированные файлы, можно сразу приступить к поднятию докера.
Однако если в file_transfer.proto были внесены изменения, то выполняем следующее:

make gen

Поднимаем докер

docker-compose up -d --build

Запуск

Взаимодействие с ручками происходит средствами аргументов командной строки, описанных ниже.
Пример:

./client --action=upload --file=./files_storage/simple.json

Параметры:

  • --server - путь до gRPC сервера. По дефолту localhost:50051
  • --action - команда к действию. Ниже описаны доступные команды
  • --file - путь до файла включая название с расширением
  • --filename - название файла для скачивания
  • --id - айди файла для скачивания

Доспупные команды для --action:

  • upload - загрузка файла на сервер. Обязателен параметр --file
  • download - скачивание файла с сервера. Обязательны параметры --filename и --id
  • list - получение списка файлов, хранящихся на сервере в виде имя файла | дата создания | дата модификации

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages