Files
Oxicloud/src/application/services/mod.rs
T
abnvle d15d7b8f8e feat(share): public folder browsing API + range support + zip
Five new public endpoints under /api/s/{token}/...:
  GET /contents
  GET /contents/{folder_id}
  GET /file/{file_id}
  GET /zip
  GET /zip/{folder_id}

All honour the unlock cookie from /verify, so password-protected
folder shares work end-to-end.

Folder/file IDs are validated against the share subtree via a single
ltree containment query (O(log N) on the existing GiST index).
Out-of-scope IDs return 404.

download_shared_file refactored to a Range/304/206/416-aware
serve_share_file helper, shared with the new /file/{file_id}
endpoint. content_disposition extracted from FileHandler so RFC 5987
formatting is identical across auth and share download paths.
2026-05-05 22:41:55 +02:00

40 lines
1.1 KiB
Rust

pub mod admin_settings_service;
pub mod app_password_service;
pub mod auth_application_service;
pub mod batch_operations;
pub mod calendar_service;
pub mod contact_service;
pub mod device_auth_service;
pub mod favorites_service;
pub mod file_management_service;
pub mod file_retrieval_service;
pub mod file_upload_service;
pub mod file_use_case_factory;
pub mod folder_service;
pub mod i18n_application_service;
pub mod music_service;
pub mod nextcloud_file_id_service;
pub mod nextcloud_login_flow_service;
pub mod recent_service;
pub mod search_service;
pub mod share_browse_service;
pub mod share_service;
pub mod storage_settings_service;
pub mod storage_usage_service;
pub mod trash_service;
pub mod wopi_lock_service;
pub mod wopi_token_service;
#[cfg(test)]
mod batch_operations_test;
#[cfg(test)]
mod idor_protection_test;
#[cfg(test)]
mod trash_service_test;
// Re-exportar para facilitar acceso
pub use file_management_service::FileManagementService;
pub use file_retrieval_service::FileRetrievalService;
pub use file_upload_service::FileUploadService;
pub use file_use_case_factory::AppFileUseCaseFactory;