Filesystem Service
Файл:
backend/src/services/filesystem.rs
Сервис работы с локальной файловой системой. Предоставляет API для чтения директорий, получения метаданных файлов, проверки прав доступа и определения платформо-зависимых путей по умолчанию.
Эндпоинты
| Метод | Путь | Функция | Описание |
|---|---|---|---|
| POST | /api/filesystem/read-directory | read_directory_svc | Чтение директории |
| POST | /api/filesystem/file-info | get_file_info_svc | Метаданные файла |
| POST | /api/filesystem/read-directory-state | read_directory_with_state_svc | Чтение с состоянием синхронизации |
| POST | /api/filesystem/file-info-state | get_file_info_with_state_svc | Метаданные с состоянием синхронизации |
| GET | /api/filesystem/default-directory | get_default_directory_svc | Директория по умолчанию |
| POST | /api/filesystem/check-access | check_storage_access_svc | Проверка доступа к пути |
| GET | /api/filesystem/check-permissions | check_storage_permissions_svc | Проверка прав storage |
Зависимости
Нет внешних зависимостей — работает напрямую с std::fs.
read_directory_svc
POST /api/filesystem/read-directory
Читает содержимое директории с метаданными каждого элемента.
Параметры
| Имя | Тип | Описание |
|---|---|---|
path | String | Путь к директории |
Возвращает
Result<Vec<FileEntry>, String> — отсортированный список (директории первыми, затем алфавитно)
Логика
- Валидирует и канонизирует путь
- Читает все записи директории
- Для каждой записи вызывает
get_entry_info()— size, modified, created, is_dir, hidden - Сортирует: директории первыми, затем алфавитно
get_file_info_svc
POST /api/filesystem/file-info
Возвращает метаданные одного файла/директории.
read_directory_with_state_svc
POST /api/filesystem/read-directory-state
Чтение директории с определением статуса синхронизации каждого файла по паттернам имени.
Паттерны статусов
| Паттерн в имени | Статус |
|---|---|
.syncing. | syncing |
.pending. | pending |
.conflict. | conflict |
.remote. | remote |
.error. | error |
| (без паттерна) | synced |
get_file_info_with_state_svc
POST /api/filesystem/file-info-state
Метаданные одного файла с определением статуса синхронизации.
get_default_directory_svc
GET /api/filesystem/default-directory
Возвращает платформо-зависимую директорию по умолчанию.
Платформы
| Платформа | Логика |
|---|---|
| Android | $EXTERNAL_STORAGE → /storage/emulated/0/Documents → /sdcard/Documents |
| Windows | $USERPROFILE → C:\ |
| Unix/macOS | $HOME → / |
check_storage_access_svc
POST /api/filesystem/check-access
Проверяет, доступна ли директория для чтения.
Логика
- Проверяет существование пути
- Пытается прочитать содержимое
- Возвращает
trueпри успехе
check_storage_permissions_svc
GET /api/filesystem/check-permissions
Проверяет разрешения на доступ к storage.
- Android: тестирует доступ к
$EXTERNAL_STORAGE - Другие платформы: всегда
true