Files
tensors/tensors/server/sd_client.py
T
Adam Ladachowski 0cd3216125 💬 Commit message: Update 2026-02-15 00:07:11, 20 files, 231 lines
📁 Files changed: 20
📝 Lines changed: 231

  • .coverage
  • models.db
  • screenshot.png
  • tensors-deployed.png
  • tensors-dropdown.png
  • tensors-final.png
  • tensors-fixed.png
  • tensors-reloaded.png
  • tensors-ui.png
  • civitai_routes.py
  • generate_routes.py
  • models_routes.py
  • sd_client.py
  • index-BQdjF_w0.css
  • index-CKJOpgtQ.js
  • index-DmOZ-7Sw.js
  • index.html
  • GenerateView.vue
  • app.ts
  • index.ts
2026-02-15 00:07:11 +01:00

40 lines
1.4 KiB
Python

"""HTTP client utilities for sd-server communication."""
from __future__ import annotations
from typing import TYPE_CHECKING, Any
import httpx
if TYPE_CHECKING:
from fastapi import Request
def get_sd_headers(request: Request) -> dict[str, str]:
"""Get headers for sd-server requests, including API key if configured."""
headers: dict[str, str] = {}
api_key = getattr(request.app.state, "sd_server_api_key", None)
if api_key:
headers["X-API-Key"] = api_key
return headers
async def sd_get(request: Request, path: str, *, timeout: float = 30) -> httpx.Response:
"""Make a GET request to sd-server."""
url = f"{request.app.state.sd_server_url}/{path.lstrip('/')}"
headers = get_sd_headers(request)
async with httpx.AsyncClient(timeout=timeout) as client:
response = await client.get(url, headers=headers)
response.raise_for_status()
return response
async def sd_post(request: Request, path: str, *, json: dict[str, Any] | None = None, timeout: float = 300) -> httpx.Response:
"""Make a POST request to sd-server."""
url = f"{request.app.state.sd_server_url}/{path.lstrip('/')}"
headers = get_sd_headers(request)
async with httpx.AsyncClient(timeout=timeout) as client:
response = await client.post(url, json=json, headers=headers)
response.raise_for_status()
return response