Skip to content

ZhekaSl/CloudStorage

Repository files navigation

Cloud Storage Service

REST API на Spring Boot для управления облачным хранилищем файлов и директорий с аутентификацией пользователей. Использует MinIO в качестве S3-совместимого хранилища объектов.

Описание

Этот проект предоставляет RESTful API для выполнения следующих операций:

  • Регистрация и аутентификация пользователей.
  • Создание и управление директориями пользователя в облачном хранилище.
  • Загрузка одного или нескольких файлов в указанную директорию.
  • Получение информации о файле или директории.
  • Получение содержимого директории.
  • Скачивание файла или директории (в виде ZIP-архива).
  • Перемещение/переименование файлов и директорий.
  • Удаление файлов и директорий (рекурсивно).
  • Поиск файлов по имени в хранилище пользователя.

Основные возможности

  • Аутентификация: Регистрация (Sign Up), Вход (Sign In), Выход (Sign Out), Получение текущего пользователя.
  • Управление ресурсами: CRUD-подобные операции для файлов и директорий.
  • Скачивание: Файлы скачиваются напрямую, директории - в виде ZIP-архива.
  • Рекурсивные операции: Удаление и перемещение директорий происходит рекурсивно.
  • Хранилище: Использует MinIO (или другое S3-совместимое хранилище).

Технологический стек

  • Язык: Java 21
  • Фреймворк: Spring Boot 3
  • Безопасность: Spring Security (Аутентификация, Авторизация, CORS)
  • Данные: Spring Data JPA, Hibernate
  • Объектное хранилище: MinIO Java Client
  • Сессии: Redis
  • База данных: PostgreSQL
  • Утилиты: Lombok, MapStruct
  • Тестирование: JUnit, Spring Boot Test, Testcontainers
  • Сборка: Gradle, Docker

Предварительные требования

  • JDK 21 или выше
  • Docker и Docker Compose (рекомендуется для локального запуска MinIO, Postgres и Redis)
  • Запущенный экземпляр MinIO
  • Запущенный экземпляр Redis
  • Запущенный экземпляр PostgreSQL

Настройка и запуск

  1. Клонируйте репозиторий:

    git clone <URL_ВАШЕГО_РЕПОЗИТОРИЯ>
  2. Настройте MinIO:

    • Убедитесь, что у вас запущен MinIO сервер.
    • Создайте бакет (bucket), имя которого вы укажете в конфигурации приложения.
  3. Настройте Базу Данных:

    • Создайте базу данных для приложения.
  4. Настройте приложение:

    • Отредактируйте application.yml, указав ваши параметры.
  5. Соберите проект:

    ./gradlew clean build
  6. Запустите приложение:

    ./gradlew bootRun
     # или запустите из вашей IDE

    Приложение будет доступно по адресу http://localhost:8080 (или порту, указанному в конфигурации).

API Endpoints

Сервис предоставляет RESTful API по следующим базовым путям:

  • /api/auth/**: Эндпоинты для аутентификации (sign-up, sign-in, sign-out, current).
  • /api/resources/**: Эндпоинты для управления ресурсами (upload, download, move, delete, search, info).
  • /api/directory/**: Эндпоинты для управления директориями (create, list).
  • /api/user/me**: Эндпоинт для получения информации о текущем пользователе.

Для получения детальной информации об эндпоинтах, параметрах и форматах запросов/ответов смотрите исходный код контроллеров или документацию Swagger/OpenAPI (/swagger-ui.html).

Запуск тестов

В проекте более 70 тестов. Для запуска тестов выполните:

./gradlew test

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published