mirror of
https://codeberg.org/icewind/ugc-scaper.git
synced 2026-06-03 10:14:11 +02:00
api: team list
This commit is contained in:
parent
cba291d6b1
commit
880ac28b57
1 changed files with 26 additions and 0 deletions
|
|
@ -23,6 +23,8 @@ enum ApiError {
|
|||
SteamId(#[from] SteamIDError),
|
||||
#[error(transparent)]
|
||||
Scrape(#[from] ScrapeError),
|
||||
#[error("mallformed request")]
|
||||
Mallformared(String),
|
||||
}
|
||||
|
||||
impl IntoResponse for ApiError {
|
||||
|
|
@ -32,6 +34,9 @@ impl IntoResponse for ApiError {
|
|||
Self::SteamId(err) => {
|
||||
(StatusCode::UNPROCESSABLE_ENTITY, format!("{:#}", err)).into_response()
|
||||
}
|
||||
Self::Mallformared(err) => {
|
||||
(StatusCode::UNPROCESSABLE_ENTITY, format!("{:#}", err)).into_response()
|
||||
}
|
||||
Self::Scrape(ScrapeError::NotFound) => (StatusCode::NOT_FOUND, "").into_response(),
|
||||
Self::Scrape(err) => {
|
||||
(StatusCode::INTERNAL_SERVER_ERROR, format!("{:#}", err)).into_response()
|
||||
|
|
@ -55,6 +60,7 @@ async fn main() -> MainResult {
|
|||
.route("/", get(handler))
|
||||
.route("/player/:id", get(player))
|
||||
.route("/player/:id/history", get(player_history))
|
||||
.route("/teams/:format", get(teams))
|
||||
.route("/team/:id", get(team))
|
||||
.route("/team/:id/roster", get(team_roster))
|
||||
.route("/team/:id/matches", get(team_matches))
|
||||
|
|
@ -95,6 +101,26 @@ async fn player_history(
|
|||
Ok(Json(response))
|
||||
}
|
||||
|
||||
#[instrument(skip(state))]
|
||||
async fn teams(
|
||||
Path(format): Path<String>,
|
||||
State(state): State<AppState>,
|
||||
) -> Result<impl IntoResponse, ApiError> {
|
||||
let response = match format.as_str() {
|
||||
"9v9" => state.client.teams_9v9().await?,
|
||||
"6v6" => state.client.teams_6v6().await?,
|
||||
"4v4" => state.client.teams_4v4().await?,
|
||||
"2v2" => state.client.teams_2v2().await?,
|
||||
_ => {
|
||||
return Err(ApiError::Mallformared(format!(
|
||||
"invalid game mode {}",
|
||||
format
|
||||
)))
|
||||
}
|
||||
};
|
||||
Ok(Json(response))
|
||||
}
|
||||
|
||||
#[instrument(skip(state))]
|
||||
async fn team(
|
||||
Path(id): Path<u32>,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue