This commit is contained in:
kodi
2026-03-11 15:25:32 +01:00
parent 6a1a575383
commit d1f018a130
22 changed files with 909 additions and 49 deletions
+13 -2
View File
@@ -11,13 +11,22 @@ class BrowseService:
self._filesystem = filesystem
def browse(self, path: str, show_hidden: bool) -> BrowseResponse:
if self._path_guard.is_virtual_volumes_path(path):
directories = [
DirectoryEntry(name=item["name"], path=item["path"], modified="")
for item in self._path_guard.virtual_volumes_entries()
]
return BrowseResponse(path="/Volumes", directories=directories, files=[])
resolved = self._path_guard.resolve_directory_path(path)
directories_raw, files_raw = self._filesystem.list_directory(resolved.absolute, show_hidden=show_hidden)
directories = [
DirectoryEntry(
name=item["name"],
path=self._path_guard.entry_relative_path(resolved.alias, item["absolute"]),
path=self._path_guard.entry_relative_path(
resolved.alias, item["absolute"], display_style=resolved.display_style
),
modified=item["modified"],
)
for item in directories_raw
@@ -26,7 +35,9 @@ class BrowseService:
files = [
FileEntry(
name=item["name"],
path=self._path_guard.entry_relative_path(resolved.alias, item["absolute"]),
path=self._path_guard.entry_relative_path(
resolved.alias, item["absolute"], display_style=resolved.display_style
),
size=item["size"],
modified=item["modified"],
)
@@ -17,7 +17,7 @@ class CopyTaskService:
def create_copy_task(self, source: str, destination: str) -> TaskCreateResponse:
resolved_source = self._path_guard.resolve_existing_path(source)
_, _, lexical_source = self._path_guard.resolve_lexical_path(source)
_, _, lexical_source, _ = self._path_guard.resolve_lexical_path(source)
if lexical_source.is_symlink():
raise AppError(
code="type_conflict",
@@ -36,7 +36,11 @@ class CopyTaskService:
resolved_destination = self._path_guard.resolve_path(destination)
destination_parent = resolved_destination.absolute.parent
parent_relative = self._path_guard.entry_relative_path(resolved_destination.alias, destination_parent)
parent_relative = self._path_guard.entry_relative_path(
resolved_destination.alias,
destination_parent,
display_style=resolved_destination.display_style,
)
self._map_directory_validation(parent_relative)
if resolved_destination.absolute.exists():
@@ -68,7 +68,11 @@ class FileOpsService:
resolved_source = self._path_guard.resolve_existing_path(path)
safe_name = self._path_guard.validate_name(new_name, field="new_name")
parent_relative = self._path_guard.entry_relative_path(resolved_source.alias, resolved_source.absolute.parent)
parent_relative = self._path_guard.entry_relative_path(
resolved_source.alias,
resolved_source.absolute.parent,
display_style=resolved_source.display_style,
)
target_relative = self._join_relative(parent_relative, safe_name)
resolved_target = self._path_guard.resolve_path(target_relative)
@@ -15,7 +15,7 @@ class MoveTaskService:
def create_move_task(self, source: str, destination: str) -> TaskCreateResponse:
resolved_source = self._path_guard.resolve_existing_path(source)
_, _, lexical_source = self._path_guard.resolve_lexical_path(source)
_, _, lexical_source, _ = self._path_guard.resolve_lexical_path(source)
if lexical_source.is_symlink():
raise AppError(
@@ -34,7 +34,11 @@ class MoveTaskService:
resolved_destination = self._path_guard.resolve_path(destination)
destination_parent = resolved_destination.absolute.parent
parent_relative = self._path_guard.entry_relative_path(resolved_destination.alias, destination_parent)
parent_relative = self._path_guard.entry_relative_path(
resolved_destination.alias,
destination_parent,
display_style=resolved_destination.display_style,
)
self._map_directory_validation(parent_relative)
if resolved_destination.absolute.exists():