pub mod multipart;
pub mod streaming;
pub use axum::Router;
pub use axum::extract::{Form, Json, Path, Query, Request};
pub use axum::http::{HeaderMap, StatusCode, header};
pub use axum::response::{Html, IntoResponse, Json as JsonResponse, Redirect, Response};
pub use axum::routing::{delete, get, head, options, patch, post, put};
pub use streaming::StreamingResponse;
use std::sync::OnceLock;
static API_BASE: OnceLock<String> = OnceLock::new();
pub fn api_base() -> String {
API_BASE
.get()
.cloned()
.unwrap_or_else(|| "/api".to_string())
}
pub fn set_api_base(base: impl Into<String>) {
let _ = API_BASE.set(base.into());
}
#[cfg(test)]
mod api_base_tests {
use super::*;
#[test]
fn api_base_defaults_to_api_then_takes_first_set() {
assert_eq!(api_base(), "/api");
set_api_base("/v2");
assert_eq!(api_base(), "/v2");
set_api_base("/v3");
assert_eq!(api_base(), "/v2");
}
}