mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-06-23 16:29:25 +08:00
Self-contained package under app/model_downloader/: - Allowlist + path-validated downloads (SSRF guard: HF/Civitai/localhost + model extension). - Streaming worker: writes to <final>.tmp, atomic rename on success, cooperative cancellation with epoch-based session identity, orphan .tmp sweep. - Unified availability probe with per-URL gated/size caching; is_hf_downloadable recomputed per call so login/license changes surface within one poll. - HuggingFace OAuth 2.0 PKCE flow with loopback callback server and on-disk (0600) token storage + transparent refresh. - Pydantic request/response schemas and aiohttp routes under api/. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
"""Request schemas for the model-downloader API.
|
|
|
|
Each endpoint accepts a small JSON body. Pydantic enforces the shape at
|
|
the boundary; route handlers operate only on validated values past that.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class AvailabilityStatusRequest(BaseModel):
|
|
"""``POST /api/models-availability-status``.
|
|
|
|
Sent by the frontend on each poll. Each entry is ``{model_id: url}``;
|
|
the URL is the one declared in ``properties.models[i].url`` in the
|
|
workflow JSON and lets the server compute per-id metadata
|
|
(``file_size`` + ``is_hf_downloadable``) on the same request.
|
|
"""
|
|
models: dict[str, str] = Field(default_factory=dict)
|
|
|
|
|
|
class DownloadModelsRequest(BaseModel):
|
|
"""``POST /api/download-models``.
|
|
|
|
Same shape as the metadata request — the URL for each model_id.
|
|
Returns immediately after validation and scheduling.
|
|
"""
|
|
models: dict[str, str] = Field(default_factory=dict)
|
|
|
|
|
|
class CancelDownloadSessionRequest(BaseModel):
|
|
"""``POST /api/cancel-model-download-session``."""
|
|
model_id: str
|
|
|
|
|
|
__all__ = [
|
|
"AvailabilityStatusRequest",
|
|
"DownloadModelsRequest",
|
|
"CancelDownloadSessionRequest",
|
|
]
|