use crate::{config::AppConfig, types::AssetBroadcastMessage}; use axum::{ routing::{delete, get, post}, Extension, Router, Server, }; use log::info; use std::{net::SocketAddr, sync::Arc}; use tokio::sync::broadcast::Sender; pub mod assets; pub async fn run_api( app_config: Arc, asset_broadcast_sender: Sender, ) -> Result<(), Box> { let app = Router::new() .route("/assets", get(assets::get_assets)) .route("/assets/:symbol", get(assets::get_asset)) .route("/assets", post(assets::add_asset)) .route("/assets/:symbol", post(assets::update_asset)) .route("/assets/:symbol", delete(assets::delete_asset)) .layer(Extension(app_config)) .layer(Extension(asset_broadcast_sender)); let addr = SocketAddr::from(([0, 0, 0, 0], 7878)); info!("Listening on {}...", addr); Server::bind(&addr).serve(app.into_make_service()).await?; Ok(()) }