fix: Go-пакеты со слешами в имени ломали роутинг

Использован :path в FastAPI-роутах, имя+версия парсятся из URL.
Шаблоны urlencode-ят имена пакетов при генерации ссылок.
This commit is contained in:
Marker689
2026-05-10 06:41:00 +03:00
parent 6523f55dcd
commit 22dc87851a
5 changed files with 22 additions and 11 deletions

View File

@@ -2,6 +2,7 @@
import csv
import io
from urllib.parse import unquote
from fastapi import APIRouter, Depends, Query, Response
from sqlalchemy import select
@@ -108,17 +109,20 @@ async def export_packages_csv(
)
@router.get("/{name}/{version}")
@router.get("/{name:path}")
async def get_package(
name: str,
version: str,
session: AsyncSession = Depends(get_session),
):
parts = name.rsplit("/", 1)
pkg_name = unquote(parts[0])
pkg_version = unquote(parts[1]) if len(parts) == 2 else ""
scans = (
(
await session.execute(
select(Scan)
.where(Scan.package_name == name, Scan.package_version == version)
.where(Scan.package_name == pkg_name, Scan.package_version == pkg_version)
.order_by(Scan.started_at.desc())
)
)