using FileShare_Common.Core; using FileShare_Services.Core; namespace FileShare_Services.Services.FileLibrary { /// /// 文件库 HTTP 端点服务,将请求适配到 并包装为 。 /// public sealed class FileLibraryEndpointService(IFileLibraryService fileLibrary) : IFileLibraryEndpointService { /// public async Task GetDrivesAsync(ServiceEndpointContext ctx) { return ResponseHelper.Ok(await fileLibrary.GetDrivesAsync()); } /// public async Task GetDirectoriesAsync(DirectoryQueryRequest request) { return ResponseHelper.Ok(await fileLibrary.GetDirectoriesAsync(request.Path)); } /// public async Task GetRootsAsync(ServiceEndpointContext ctx) { return ResponseHelper.Ok(await fileLibrary.GetRootsAsync()); } /// public async Task AddRootAsync(AddLibraryRootRequest request) { return ResponseHelper.Ok(await fileLibrary.AddRootAsync(request), "文件库目录已添加,后续扫描将自动入库。"); } /// public async Task SetRootEnabledAsync(UpdateLibraryRootRequest request) { return ResponseHelper.Ok(await fileLibrary.SetRootEnabledAsync(request), "文件库目录状态已更新。"); } /// public async Task DeleteRootAsync(DeleteLibraryRootRequest request) { await fileLibrary.DeleteRootAsync(request); return ResponseHelper.Succeed("文件库目录已删除。"); } /// public async Task ScanRootAsync(ScanLibraryRootRequest request) { return ResponseHelper.Ok(await fileLibrary.ScanRootAsync(request.Id), "文件库目录扫描完成。"); } /// public async Task SearchFilesAsync(SearchFilesRequest request) { return await fileLibrary.SearchFilesAsync(request); } /// public async Task GetFileAsync(FileQueryRequest request) { ValidateFileId(request.Id); var file = await fileLibrary.GetFileAsync(request.Id); return file is null ? ResponseHelper.Failure(404, "文件不存在或尚未扫描入库。") : ResponseHelper.Ok(file); } /// public async Task GetTextPreviewAsync(FileQueryRequest request) { ValidateFileId(request.Id); var preview = await fileLibrary.GetTextPreviewAsync(request.Id); return preview is null ? ResponseHelper.Failure(404, "文本文件不存在或无法预览。") : ResponseHelper.Ok(preview); } /// public async Task BrowseDirectoryAsync(BrowseDirectoryRequest request) { if (request.RootId <= 0) return ResponseHelper.Failure(400, "rootId 参数无效。"); var result = await fileLibrary.BrowseDirectoryAsync(request); return ResponseHelper.Ok(result); } /// public async Task GetRecentFilesAsync(RecentFilesRequest request) { var items = await fileLibrary.GetRecentFilesAsync(request.Type, request.Count); return ResponseHelper.Ok(items); } /// public async Task MarkFilePlayedAsync(MarkFilePlayedRequest request) { await fileLibrary.MarkFilePlayedAsync(request.Id); return ResponseHelper.Succeed(); } /// /// 验证文件 ID 是否有效,无效时抛出 。 /// /// 文件记录 ID。 /// ID 小于等于 0 时抛出。 private static void ValidateFileId(int id) { if (id > 0) { return; } throw new ArgumentException("id 参数无效。"); } } }