fix: route historical leaderboard snapshots to rcon read model
This commit is contained in:
@@ -5,6 +5,7 @@ from __future__ import annotations
|
|||||||
from http import HTTPStatus
|
from http import HTTPStatus
|
||||||
from urllib.parse import parse_qs, urlparse
|
from urllib.parse import parse_qs, urlparse
|
||||||
|
|
||||||
|
from .config import get_historical_data_source_kind
|
||||||
from .payloads import (
|
from .payloads import (
|
||||||
build_community_payload,
|
build_community_payload,
|
||||||
build_current_match_kill_feed_payload,
|
build_current_match_kill_feed_payload,
|
||||||
@@ -40,6 +41,7 @@ from .payloads import (
|
|||||||
build_weekly_leaderboard_payload,
|
build_weekly_leaderboard_payload,
|
||||||
build_weekly_top_kills_payload,
|
build_weekly_top_kills_payload,
|
||||||
)
|
)
|
||||||
|
from .rcon_historical_leaderboards import build_rcon_materialized_leaderboard_snapshot_payload
|
||||||
from .scoreboard_origins import get_trusted_public_scoreboard_origin
|
from .scoreboard_origins import get_trusted_public_scoreboard_origin
|
||||||
|
|
||||||
|
|
||||||
@@ -199,6 +201,13 @@ def resolve_get_payload(path: str) -> tuple[HTTPStatus | None, dict[str, object]
|
|||||||
return HTTPStatus.BAD_REQUEST, build_error_payload("Invalid metric parameter")
|
return HTTPStatus.BAD_REQUEST, build_error_payload("Invalid metric parameter")
|
||||||
if timeframe not in {"weekly", "monthly"}:
|
if timeframe not in {"weekly", "monthly"}:
|
||||||
return HTTPStatus.BAD_REQUEST, build_error_payload("Invalid timeframe parameter")
|
return HTTPStatus.BAD_REQUEST, build_error_payload("Invalid timeframe parameter")
|
||||||
|
if get_historical_data_source_kind() == "rcon":
|
||||||
|
return HTTPStatus.OK, build_rcon_materialized_leaderboard_snapshot_payload(
|
||||||
|
limit=limit,
|
||||||
|
server_id=server_id,
|
||||||
|
metric=metric,
|
||||||
|
timeframe=timeframe,
|
||||||
|
)
|
||||||
return HTTPStatus.OK, build_leaderboard_snapshot_payload(
|
return HTTPStatus.OK, build_leaderboard_snapshot_payload(
|
||||||
limit=limit,
|
limit=limit,
|
||||||
server_id=server_id,
|
server_id=server_id,
|
||||||
@@ -215,6 +224,13 @@ def resolve_get_payload(path: str) -> tuple[HTTPStatus | None, dict[str, object]
|
|||||||
metric = params.get("metric", ["kills"])[0]
|
metric = params.get("metric", ["kills"])[0]
|
||||||
if metric not in {"kills", "deaths", "support", "matches_over_100_kills"}:
|
if metric not in {"kills", "deaths", "support", "matches_over_100_kills"}:
|
||||||
return HTTPStatus.BAD_REQUEST, build_error_payload("Invalid metric parameter")
|
return HTTPStatus.BAD_REQUEST, build_error_payload("Invalid metric parameter")
|
||||||
|
if get_historical_data_source_kind() == "rcon":
|
||||||
|
return HTTPStatus.OK, build_rcon_materialized_leaderboard_snapshot_payload(
|
||||||
|
limit=limit,
|
||||||
|
server_id=server_id,
|
||||||
|
metric=metric,
|
||||||
|
timeframe="monthly",
|
||||||
|
)
|
||||||
return HTTPStatus.OK, build_monthly_leaderboard_snapshot_payload(
|
return HTTPStatus.OK, build_monthly_leaderboard_snapshot_payload(
|
||||||
limit=limit,
|
limit=limit,
|
||||||
server_id=server_id,
|
server_id=server_id,
|
||||||
@@ -265,6 +281,13 @@ def resolve_get_payload(path: str) -> tuple[HTTPStatus | None, dict[str, object]
|
|||||||
metric = params.get("metric", ["kills"])[0]
|
metric = params.get("metric", ["kills"])[0]
|
||||||
if metric not in {"kills", "deaths", "support", "matches_over_100_kills"}:
|
if metric not in {"kills", "deaths", "support", "matches_over_100_kills"}:
|
||||||
return HTTPStatus.BAD_REQUEST, build_error_payload("Invalid metric parameter")
|
return HTTPStatus.BAD_REQUEST, build_error_payload("Invalid metric parameter")
|
||||||
|
if get_historical_data_source_kind() == "rcon":
|
||||||
|
return HTTPStatus.OK, build_rcon_materialized_leaderboard_snapshot_payload(
|
||||||
|
limit=limit,
|
||||||
|
server_id=server_id,
|
||||||
|
metric=metric,
|
||||||
|
timeframe="weekly",
|
||||||
|
)
|
||||||
return HTTPStatus.OK, build_weekly_leaderboard_snapshot_payload(
|
return HTTPStatus.OK, build_weekly_leaderboard_snapshot_payload(
|
||||||
limit=limit,
|
limit=limit,
|
||||||
server_id=server_id,
|
server_id=server_id,
|
||||||
|
|||||||
Reference in New Issue
Block a user