fix: Go-пакеты со слешами в имени ломали роутинг
Использован :path в FastAPI-роутах, имя+версия парсятся из URL. Шаблоны urlencode-ят имена пакетов при генерации ссылок.
This commit is contained in:
@@ -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())
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user