Spaces:
Paused
Paused
| import os | |
| from python.helpers.api import ApiHandler, Input, Output, Request, Response | |
| from python.helpers import files, runtime | |
| from typing import TypedDict | |
| class FileInfoApi(ApiHandler): | |
| async def process(self, input: Input, request: Request) -> Output: | |
| path = input.get("path", "") | |
| info = await runtime.call_development_function(get_file_info, path) | |
| return info | |
| class FileInfo(TypedDict): | |
| input_path: str | |
| abs_path: str | |
| exists: bool | |
| is_dir: bool | |
| is_file: bool | |
| is_link: bool | |
| size: int | |
| modified: float | |
| created: float | |
| permissions: int | |
| dir_path: str | |
| file_name: str | |
| file_ext: str | |
| message: str | |
| async def get_file_info(path: str) -> FileInfo: | |
| abs_path = files.get_abs_path(path) | |
| exists = os.path.exists(abs_path) | |
| message = "" | |
| if not exists: | |
| message = f"File {path} not found." | |
| return { | |
| "input_path": path, | |
| "abs_path": abs_path, | |
| "exists": exists, | |
| "is_dir": os.path.isdir(abs_path) if exists else False, | |
| "is_file": os.path.isfile(abs_path) if exists else False, | |
| "is_link": os.path.islink(abs_path) if exists else False, | |
| "size": os.path.getsize(abs_path) if exists else 0, | |
| "modified": os.path.getmtime(abs_path) if exists else 0, | |
| "created": os.path.getctime(abs_path) if exists else 0, | |
| "permissions": os.stat(abs_path).st_mode if exists else 0, | |
| "dir_path": os.path.dirname(abs_path), | |
| "file_name": os.path.basename(abs_path), | |
| "file_ext": os.path.splitext(abs_path)[1], | |
| "message": message | |
| } |