rustpbx 0.4.7

A SIP PBX implementation in Rust
Documentation
use crate::console::ConsoleState;
use axum::{
    Router,
    extract::{Path, State},
    http::{StatusCode, header},
    response::{IntoResponse, Response},
    routing::get,
};
use std::sync::Arc;

pub fn api_urls() -> Router<Arc<ConsoleState>> {
    Router::new().route("/locales/{lang}", get(get_locale_js))
}

async fn get_locale_js(
    State(state): State<Arc<ConsoleState>>,
    Path(lang): Path<String>,
) -> Response {
    let lang = lang.strip_suffix(".js").unwrap_or(&lang);
    let json = state.i18n.get_translations_json(lang);
    let js = format!("window.__i18n_t = {};", json);

    (
        StatusCode::OK,
        [
            (
                header::CONTENT_TYPE,
                "application/javascript; charset=utf-8",
            ),
            (header::CACHE_CONTROL, "public, max-age=604800, immutable"),
        ],
        js,
    )
        .into_response()
}