use axum::{ Router, middleware, routing::{get, post}, }; use crate::{ auth::require_bearer_auth, llm::proxy_llm_chat_completions, state::AppState, volcengine_speech::{ get_volcengine_speech_config, stream_volcengine_asr, stream_volcengine_tts_bidirection, stream_volcengine_tts_sse, }, }; pub fn router(state: AppState) -> Router { Router::new() .route( "/api/llm/chat/completions", post(proxy_llm_chat_completions).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/speech/volcengine/config", get(get_volcengine_speech_config).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/speech/volcengine/asr/stream", get(stream_volcengine_asr).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/speech/volcengine/tts/bidirection", get(stream_volcengine_tts_bidirection).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/speech/volcengine/tts/sse", post(stream_volcengine_tts_sse).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) }