SealSkin
Server Referencerouters

files

File manager endpoints for the user's home directories.

attributelogger
= logging.getLogger(__name__)
attributerouter
= APIRouter(prefix='/api/files', dependencies=[Depends(verify_persistent_storage_enabled)], route_class=EncryptedRoute)
attributeCHUNK_SIZE
= 2 * 1024 * 1024
funcget_validated_path(username, home_dir, sub_path, check_existence=True) -> pathlib.Path

Resolve a path inside a user's home directory, refusing traversal.

paramusernamestr

Owner of the home directory.

paramhome_dirstr

Home directory name.

paramsub_pathstr

Path relative to the home directory.

paramcheck_existencebool
= True

Raise 404 when the path does not exist.

Returns

pathlib.Path

The resolved absolute path.

func_perform_deletion(task_id, username, home_dir, paths) -> None

Background worker deleting files and folders.

paramtask_idstr
paramusernamestr
paramhome_dirstr
parampathslist[str]

Returns

None
funcdownload_file_chunk(home_dir, path=Query(...), chunk_index=Query(..., ge=0), user=Depends(verify_persistent_storage_enabled)) -> dict[str, Any]

Return one 2 MiB chunk of a file as base64.

paramhome_dirstr
parampathstr
= Query(...)
paramchunk_indexint
= Query(..., ge=0)
paramuserdict[str, Any]
= Depends(verify_persistent_storage_enabled)

Returns

dict[str, typing.Any]
funccreate_folder(home_dir, decrypted_body=Depends(get_decrypted_request_body), user=Depends(verify_persistent_storage_enabled)) -> dict[str, str]

Create a folder.

paramhome_dirstr
paramdecrypted_bodydict[str, Any]
= Depends(get_decrypted_request_body)
paramuserdict[str, Any]
= Depends(verify_persistent_storage_enabled)

Returns

dict[str, str]
funcinitiate_deletion(home_dir, decrypted_body=Depends(get_decrypted_request_body), user=Depends(verify_persistent_storage_enabled)) -> dict[str, str]

Start deleting files and folders in the background.

paramhome_dirstr
paramdecrypted_bodydict[str, Any]
= Depends(get_decrypted_request_body)
paramuserdict[str, Any]
= Depends(verify_persistent_storage_enabled)

Returns

dict[str, str]
funccheck_deletion_status(task_id, user=Depends(verify_token)) -> dict[str, Any]

Return the status of a deletion task.

paramtask_idstr
paramuserdict[str, Any]
= Depends(verify_token)

Returns

dict[str, typing.Any]
funclist_files(home_dir, path=Query('/'), page=Query(1, ge=1), per_page=Query(50, ge=1, le=200), user=Depends(verify_persistent_storage_enabled)) -> dict[str, Any]

List a directory page by page (folders first).

paramhome_dirstr
parampathstr
= Query('/')
parampageint
= Query(1, ge=1)
paramper_pageint
= Query(50, ge=1, le=200)
paramuserdict[str, Any]
= Depends(verify_persistent_storage_enabled)

Returns

dict[str, typing.Any]
funcfinalize_upload_to_dir(home_dir, decrypted_body=Depends(get_decrypted_request_body), user=Depends(verify_persistent_storage_enabled)) -> dict[str, str]

Move a finished upload into a directory of a home directory.

paramhome_dirstr
paramdecrypted_bodydict[str, Any]
= Depends(get_decrypted_request_body)
paramuserdict[str, Any]
= Depends(verify_persistent_storage_enabled)

Returns

dict[str, str]
funclaunch_from_storage(decrypted_body=Depends(get_decrypted_request_body), user=Depends(verify_persistent_storage_enabled)) -> dict[str, Any]

Return a launch context for a server-side file (the client opens the launcher).

paramdecrypted_bodydict[str, Any]
= Depends(get_decrypted_request_body)
paramuserdict[str, Any]
= Depends(verify_persistent_storage_enabled)

Returns

dict[str, typing.Any]