Skip to main content

zlicenser_server/http/
upgrade.rs

1use std::sync::Arc;
2
3use axum::{
4    Json,
5    extract::{Path, State},
6    http::StatusCode,
7    response::{IntoResponse, Response},
8};
9use serde::Deserialize;
10use uuid::Uuid;
11
12use crate::issuance::handlers::HandlerContext;
13use crate::storage::Storage;
14
15#[derive(Deserialize)]
16pub struct UpgradeBody {
17    pub to_bundle_version: String,
18}
19
20pub async fn upgrade_handler<S: Storage + Clone + Send + Sync + 'static>(
21    State(ctx): State<Arc<HandlerContext<S>>>,
22    Path(license_id): Path<Uuid>,
23    Json(body): Json<UpgradeBody>,
24) -> Response {
25    match crate::issuance::upgrade::handle_upgrade_activation(
26        &ctx.storage,
27        license_id,
28        &body.to_bundle_version,
29    )
30    .await
31    {
32        Ok(()) => StatusCode::NO_CONTENT.into_response(),
33        Err(e) => e.into_response(),
34    }
35}