atagen

jelq

public

an http based roguelike rpg about jelqing

Star0
Watch0
2176d9a94bd9f6eaed0b8222251bd637ca2fb4a7
1
ssh://brewery@pls.lobotomise.me:33/atagen/jelq.git

Blame: src/http/inventory.rs

8b8e83329a1datagen2026-10-12 12:01 UTC1
use axum::{
8b8e83329a1datagen2026-10-12 12:01 UTC2
    Json,
8b8e83329a1datagen2026-10-12 12:01 UTC3
    http::StatusCode,
8b8e83329a1datagen2026-10-12 12:01 UTC4
    response::{IntoResponse, Response},
8b8e83329a1datagen2026-10-12 12:01 UTC5
};
8b8e83329a1datagen2026-10-12 12:01 UTC6
use serde_json::json;
8b8e83329a1datagen2026-10-12 12:01 UTC7
8b8e83329a1datagen2026-10-12 12:01 UTC8
use super::{ctx::Ctx, response::respond};
8b8e83329a1datagen2026-10-12 12:01 UTC9
use crate::{
8b8e83329a1datagen2026-10-12 12:01 UTC10
    game::{Item, Run},
8b8e83329a1datagen2026-10-12 12:01 UTC11
    problem::Problem,
8b8e83329a1datagen2026-10-12 12:01 UTC12
};
8b8e83329a1datagen2026-10-12 12:01 UTC13
8b8e83329a1datagen2026-10-12 12:01 UTC14
pub(super) fn get_inventory(run: &mut Run, _: &Ctx) -> Response {
8b8e83329a1datagen2026-10-12 12:01 UTC15
    Json(run.inventory_view()).into_response()
8b8e83329a1datagen2026-10-12 12:01 UTC16
}
8b8e83329a1datagen2026-10-12 12:01 UTC17
8b8e83329a1datagen2026-10-12 12:01 UTC18
pub(super) fn owned_item(run: &Run, ctx: &Ctx) -> Result<Item, Problem> {
8b8e83329a1datagen2026-10-12 12:01 UTC19
    Item::parse(ctx.param("item"))
8b8e83329a1datagen2026-10-12 12:01 UTC20
        .filter(|&item| run.holds(item))
8b8e83329a1datagen2026-10-12 12:01 UTC21
        .ok_or_else(|| {
8b8e83329a1datagen2026-10-12 12:01 UTC22
            Problem::new(
8b8e83329a1datagen2026-10-12 12:01 UTC23
                StatusCode::NOT_FOUND,
8b8e83329a1datagen2026-10-12 12:01 UTC24
                "no-such-item",
8b8e83329a1datagen2026-10-12 12:01 UTC25
                "You do not have that.",
8b8e83329a1datagen2026-10-12 12:01 UTC26
            )
8b8e83329a1datagen2026-10-12 12:01 UTC27
        })
8b8e83329a1datagen2026-10-12 12:01 UTC28
}
8b8e83329a1datagen2026-10-12 12:01 UTC29
8b8e83329a1datagen2026-10-12 12:01 UTC30
pub(super) fn get_item(run: &mut Run, ctx: &Ctx) -> Response {
8b8e83329a1datagen2026-10-12 12:01 UTC31
    match owned_item(run, ctx) {
8b8e83329a1datagen2026-10-12 12:01 UTC32
        Ok(item) => {
8b8e83329a1datagen2026-10-12 12:01 UTC33
            Json(json!({ "name": item.slug(), "description": item.description() })).into_response()
8b8e83329a1datagen2026-10-12 12:01 UTC34
        }
8b8e83329a1datagen2026-10-12 12:01 UTC35
        Err(problem) => problem.into_response(),
8b8e83329a1datagen2026-10-12 12:01 UTC36
    }
8b8e83329a1datagen2026-10-12 12:01 UTC37
}
8b8e83329a1datagen2026-10-12 12:01 UTC38
8b8e83329a1datagen2026-10-12 12:01 UTC39
pub(super) fn delete_item(run: &mut Run, ctx: &Ctx) -> Response {
8b8e83329a1datagen2026-10-12 12:01 UTC40
    match owned_item(run, ctx) {
8b8e83329a1datagen2026-10-12 12:01 UTC41
        Ok(item) => respond(run.drop_item(item)),
8b8e83329a1datagen2026-10-12 12:01 UTC42
        Err(problem) => problem.into_response(),
8b8e83329a1datagen2026-10-12 12:01 UTC43
    }
8b8e83329a1datagen2026-10-12 12:01 UTC44
}