SuperRealCo commited on
Commit
592ea8b
·
verified ·
1 Parent(s): 3d5bd2b

Delete api_server

Browse files
api_server/__init__.py DELETED
File without changes
api_server/routes/__init__.py DELETED
File without changes
api_server/routes/internal/README.md DELETED
@@ -1,3 +0,0 @@
1
- # ComfyUI Internal Routes
2
-
3
- All routes under the `/internal` path are designated for **internal use by ComfyUI only**. These routes are not intended for use by external applications may change at any time without notice.
 
 
 
 
api_server/routes/internal/__init__.py DELETED
File without changes
api_server/routes/internal/internal_routes.py DELETED
@@ -1,73 +0,0 @@
1
- from aiohttp import web
2
- from typing import Optional
3
- from folder_paths import folder_names_and_paths, get_directory_by_type
4
- from api_server.services.terminal_service import TerminalService
5
- import app.logger
6
- import os
7
-
8
- class InternalRoutes:
9
- '''
10
- The top level web router for internal routes: /internal/*
11
- The endpoints here should NOT be depended upon. It is for ComfyUI frontend use only.
12
- Check README.md for more information.
13
- '''
14
-
15
- def __init__(self, prompt_server):
16
- self.routes: web.RouteTableDef = web.RouteTableDef()
17
- self._app: Optional[web.Application] = None
18
- self.prompt_server = prompt_server
19
- self.terminal_service = TerminalService(prompt_server)
20
-
21
- def setup_routes(self):
22
- @self.routes.get('/logs')
23
- async def get_logs(request):
24
- return web.json_response("".join([(l["t"] + " - " + l["m"]) for l in app.logger.get_logs()]))
25
-
26
- @self.routes.get('/logs/raw')
27
- async def get_raw_logs(request):
28
- self.terminal_service.update_size()
29
- return web.json_response({
30
- "entries": list(app.logger.get_logs()),
31
- "size": {"cols": self.terminal_service.cols, "rows": self.terminal_service.rows}
32
- })
33
-
34
- @self.routes.patch('/logs/subscribe')
35
- async def subscribe_logs(request):
36
- json_data = await request.json()
37
- client_id = json_data["clientId"]
38
- enabled = json_data["enabled"]
39
- if enabled:
40
- self.terminal_service.subscribe(client_id)
41
- else:
42
- self.terminal_service.unsubscribe(client_id)
43
-
44
- return web.Response(status=200)
45
-
46
-
47
- @self.routes.get('/folder_paths')
48
- async def get_folder_paths(request):
49
- response = {}
50
- for key in folder_names_and_paths:
51
- response[key] = folder_names_and_paths[key][0]
52
- return web.json_response(response)
53
-
54
- @self.routes.get('/files/{directory_type}')
55
- async def get_files(request: web.Request) -> web.Response:
56
- directory_type = request.match_info['directory_type']
57
- if directory_type not in ("output", "input", "temp"):
58
- return web.json_response({"error": "Invalid directory type"}, status=400)
59
-
60
- directory = get_directory_by_type(directory_type)
61
- sorted_files = sorted(
62
- (entry for entry in os.scandir(directory) if entry.is_file()),
63
- key=lambda entry: -entry.stat().st_mtime
64
- )
65
- return web.json_response([entry.name for entry in sorted_files], status=200)
66
-
67
-
68
- def get_app(self):
69
- if self._app is None:
70
- self._app = web.Application()
71
- self.setup_routes()
72
- self._app.add_routes(self.routes)
73
- return self._app
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
api_server/services/__init__.py DELETED
File without changes
api_server/services/terminal_service.py DELETED
@@ -1,60 +0,0 @@
1
- from app.logger import on_flush
2
- import os
3
- import shutil
4
-
5
-
6
- class TerminalService:
7
- def __init__(self, server):
8
- self.server = server
9
- self.cols = None
10
- self.rows = None
11
- self.subscriptions = set()
12
- on_flush(self.send_messages)
13
-
14
- def get_terminal_size(self):
15
- try:
16
- size = os.get_terminal_size()
17
- return (size.columns, size.lines)
18
- except OSError:
19
- try:
20
- size = shutil.get_terminal_size()
21
- return (size.columns, size.lines)
22
- except OSError:
23
- return (80, 24) # fallback to 80x24
24
-
25
- def update_size(self):
26
- columns, lines = self.get_terminal_size()
27
- changed = False
28
-
29
- if columns != self.cols:
30
- self.cols = columns
31
- changed = True
32
-
33
- if lines != self.rows:
34
- self.rows = lines
35
- changed = True
36
-
37
- if changed:
38
- return {"cols": self.cols, "rows": self.rows}
39
-
40
- return None
41
-
42
- def subscribe(self, client_id):
43
- self.subscriptions.add(client_id)
44
-
45
- def unsubscribe(self, client_id):
46
- self.subscriptions.discard(client_id)
47
-
48
- def send_messages(self, entries):
49
- if not len(entries) or not len(self.subscriptions):
50
- return
51
-
52
- new_size = self.update_size()
53
-
54
- for client_id in self.subscriptions.copy(): # prevent: Set changed size during iteration
55
- if client_id not in self.server.sockets:
56
- # Automatically unsub if the socket has disconnected
57
- self.unsubscribe(client_id)
58
- continue
59
-
60
- self.server.send_sync("logs", {"entries": entries, "size": new_size}, client_id)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
api_server/utils/file_operations.py DELETED
@@ -1,42 +0,0 @@
1
- import os
2
- from typing import List, Union, TypedDict, Literal
3
- from typing_extensions import TypeGuard
4
- class FileInfo(TypedDict):
5
- name: str
6
- path: str
7
- type: Literal["file"]
8
- size: int
9
-
10
- class DirectoryInfo(TypedDict):
11
- name: str
12
- path: str
13
- type: Literal["directory"]
14
-
15
- FileSystemItem = Union[FileInfo, DirectoryInfo]
16
-
17
- def is_file_info(item: FileSystemItem) -> TypeGuard[FileInfo]:
18
- return item["type"] == "file"
19
-
20
- class FileSystemOperations:
21
- @staticmethod
22
- def walk_directory(directory: str) -> List[FileSystemItem]:
23
- file_list: List[FileSystemItem] = []
24
- for root, dirs, files in os.walk(directory):
25
- for name in files:
26
- file_path = os.path.join(root, name)
27
- relative_path = os.path.relpath(file_path, directory)
28
- file_list.append({
29
- "name": name,
30
- "path": relative_path,
31
- "type": "file",
32
- "size": os.path.getsize(file_path)
33
- })
34
- for name in dirs:
35
- dir_path = os.path.join(root, name)
36
- relative_path = os.path.relpath(dir_path, directory)
37
- file_list.append({
38
- "name": name,
39
- "path": relative_path,
40
- "type": "directory"
41
- })
42
- return file_list