saleor-apps-rs/sitemap-generator/src/routes/register.rs

41 lines
1.1 KiB
Rust
Raw Normal View History

2024-02-21 21:37:06 +00:00
use anyhow::Context;
use axum::{
2024-02-27 16:50:48 +00:00
extract::Json,
2024-02-21 21:37:06 +00:00
extract::State,
http::{HeaderMap, StatusCode},
};
2024-03-06 15:42:04 +00:00
use saleor_app_sdk::{AuthData, AuthToken};
2024-02-21 21:37:06 +00:00
use tracing::{debug, info};
2024-02-27 16:50:48 +00:00
use crate::app::{AppError, AppState};
2024-02-21 21:37:06 +00:00
2024-03-06 15:42:04 +00:00
pub async fn register(
2024-02-21 21:37:06 +00:00
headers: HeaderMap,
2024-03-06 15:42:04 +00:00
State(state): State<AppState>,
2024-02-27 16:50:48 +00:00
Json(auth_token): Json<AuthToken>,
2024-02-21 21:37:06 +00:00
) -> Result<StatusCode, AppError> {
debug!(
"/api/register:\nsaleor_api_url:{:?}\nauth_token:{:?}",
headers.get("saleor-api-url"),
auth_token
);
if auth_token.auth_token.is_empty() {
return Err(anyhow::anyhow!("missing auth_token").into());
}
let app = state.saleor_app.lock().await;
let saleor_api_url = headers.get("saleor-api-url").context("missing api field")?;
let saleor_api_url = saleor_api_url.to_str()?.to_owned();
let auth_data = AuthData {
jwks: None,
token: auth_token.auth_token,
domain: Some(state.config.app_api_base_url),
2024-03-06 15:42:04 +00:00
app_id: state.manifest.id,
2024-02-21 21:37:06 +00:00
saleor_api_url: saleor_api_url.clone(),
};
app.apl.set(auth_data).await?;
info!("registered app for{:?}", &saleor_api_url);
Ok(StatusCode::OK)
}