mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-02-09 04:52:32 +08:00
feat(api): add v2 internal files endpoint
Adds a new V2 endpoint for listing files with structured JSON response including file size and modification time.
This commit is contained in:
parent
138241b406
commit
99a1484574
@ -76,6 +76,45 @@ class InternalRoutes:
|
|||||||
return web.json_response([entry.name for entry in sorted_files], status=200)
|
return web.json_response([entry.name for entry in sorted_files], status=200)
|
||||||
|
|
||||||
|
|
||||||
|
def get_app(self):
|
||||||
|
if self._app is None:
|
||||||
|
self._app = web.Application()
|
||||||
|
self.setup_routes()
|
||||||
|
self._app.add_routes(self.routes)
|
||||||
|
return self._app
|
||||||
|
|
||||||
|
class InternalRoutesV2:
|
||||||
|
'''
|
||||||
|
V2 internal routes with structured responses.
|
||||||
|
'''
|
||||||
|
|
||||||
|
def __init__(self, prompt_server):
|
||||||
|
self.routes: web.RouteTableDef = web.RouteTableDef()
|
||||||
|
self._app: Optional[web.Application] = None
|
||||||
|
self.prompt_server = prompt_server
|
||||||
|
|
||||||
|
def setup_routes(self):
|
||||||
|
@self.routes.get('/files/{directory_type}')
|
||||||
|
async def get_files(request: web.Request) -> web.Response:
|
||||||
|
directory_type = request.match_info['directory_type']
|
||||||
|
directory = get_directory_for_type(directory_type)
|
||||||
|
if directory is None:
|
||||||
|
return web.json_response({"error": "Invalid directory type"}, status=400)
|
||||||
|
|
||||||
|
files = []
|
||||||
|
for entry in os.scandir(directory):
|
||||||
|
if not is_visible_file(entry):
|
||||||
|
continue
|
||||||
|
stat = entry.stat()
|
||||||
|
files.append({
|
||||||
|
"name": entry.name,
|
||||||
|
"modified": stat.st_mtime,
|
||||||
|
"size": stat.st_size
|
||||||
|
})
|
||||||
|
|
||||||
|
files.sort(key=lambda item: -item["modified"])
|
||||||
|
return web.json_response(files, status=200)
|
||||||
|
|
||||||
def get_app(self):
|
def get_app(self):
|
||||||
if self._app is None:
|
if self._app is None:
|
||||||
self._app = web.Application()
|
self._app = web.Application()
|
||||||
|
|||||||
@ -39,7 +39,7 @@ from app.model_manager import ModelFileManager
|
|||||||
from app.custom_node_manager import CustomNodeManager
|
from app.custom_node_manager import CustomNodeManager
|
||||||
from app.subgraph_manager import SubgraphManager
|
from app.subgraph_manager import SubgraphManager
|
||||||
from typing import Optional, Union
|
from typing import Optional, Union
|
||||||
from api_server.routes.internal.internal_routes import InternalRoutes
|
from api_server.routes.internal.internal_routes import InternalRoutes, InternalRoutesV2
|
||||||
from protocol import BinaryEventTypes
|
from protocol import BinaryEventTypes
|
||||||
|
|
||||||
# Import cache control middleware
|
# Import cache control middleware
|
||||||
@ -203,6 +203,7 @@ class PromptServer():
|
|||||||
self.custom_node_manager = CustomNodeManager()
|
self.custom_node_manager = CustomNodeManager()
|
||||||
self.subgraph_manager = SubgraphManager()
|
self.subgraph_manager = SubgraphManager()
|
||||||
self.internal_routes = InternalRoutes(self)
|
self.internal_routes = InternalRoutes(self)
|
||||||
|
self.internal_routes_v2 = InternalRoutesV2(self)
|
||||||
self.supports = ["custom_nodes_from_web"]
|
self.supports = ["custom_nodes_from_web"]
|
||||||
self.prompt_queue = execution.PromptQueue(self)
|
self.prompt_queue = execution.PromptQueue(self)
|
||||||
self.loop = loop
|
self.loop = loop
|
||||||
@ -984,6 +985,7 @@ class PromptServer():
|
|||||||
self.custom_node_manager.add_routes(self.routes, self.app, nodes.LOADED_MODULE_DIRS.items())
|
self.custom_node_manager.add_routes(self.routes, self.app, nodes.LOADED_MODULE_DIRS.items())
|
||||||
self.subgraph_manager.add_routes(self.routes, nodes.LOADED_MODULE_DIRS.items())
|
self.subgraph_manager.add_routes(self.routes, nodes.LOADED_MODULE_DIRS.items())
|
||||||
self.app.add_subapp('/internal', self.internal_routes.get_app())
|
self.app.add_subapp('/internal', self.internal_routes.get_app())
|
||||||
|
self.app.add_subapp('/v2/internal', self.internal_routes_v2.get_app())
|
||||||
|
|
||||||
# Prefix every route with /api for easier matching for delegation.
|
# Prefix every route with /api for easier matching for delegation.
|
||||||
# This is very useful for frontend dev server, which need to forward
|
# This is very useful for frontend dev server, which need to forward
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user