fix(fc3b): replace FC-3a KNOWN_PLATFORMS w/ registry; drop /api/sources/platforms

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-20 18:37:17 -04:00
parent e77d976ff0
commit 6fe8d199a0
4 changed files with 10 additions and 19 deletions
-5
View File
@@ -24,11 +24,6 @@ def _bad(error: str, *, status: int = 400, detail: str | None = None, **extra):
return jsonify(body), status
@sources_bp.route("/platforms", methods=["GET"])
async def platforms():
return jsonify({"platforms": sorted(KNOWN_PLATFORMS)})
@sources_bp.route("", methods=["GET"])
async def list_sources():
artist_id_raw = request.args.get("artist_id")
+4 -4
View File
@@ -9,11 +9,11 @@ from sqlalchemy.exc import IntegrityError
from sqlalchemy.ext.asyncio import AsyncSession
from ..models import Artist, Source
from .platforms import known_platform_keys
# App-level allowlist (frozenset to make accidental mutation loud).
KNOWN_PLATFORMS: frozenset[str] = frozenset({
"patreon", "fanbox", "subscribestar", "pixiv", "deviantart",
})
# Re-exported for back-compat with FC-3a; the registry in
# services/platforms.py is the single source of truth.
KNOWN_PLATFORMS = known_platform_keys()
# --- Errors -----------------------------------------------------------------
-8
View File
@@ -25,14 +25,6 @@ async def artist(db):
return a
@pytest.mark.asyncio
async def test_platforms_endpoint(client):
resp = await client.get("/api/sources/platforms")
assert resp.status_code == 200
body = await resp.get_json()
assert "patreon" in body["platforms"]
@pytest.mark.asyncio
async def test_create_list_get_delete(client, artist):
create = await client.post("/api/sources", json={
+6 -2
View File
@@ -23,8 +23,12 @@ async def _artist(db, name="Alice"):
@pytest.mark.asyncio
async def test_known_platforms_contains_starter_set(db):
assert {"patreon", "fanbox", "subscribestar", "pixiv", "deviantart"} <= KNOWN_PLATFORMS
async def test_known_platforms_is_gs_six(db):
assert KNOWN_PLATFORMS == frozenset({
"patreon", "subscribestar", "hentaifoundry",
"discord", "pixiv", "deviantart",
})
assert "fanbox" not in KNOWN_PLATFORMS
@pytest.mark.asyncio