31 lines
998 B
Rust
31 lines
998 B
Rust
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<AppConfig>,
|
|
asset_broadcast_sender: Sender<AssetBroadcastMessage>,
|
|
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
|
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(())
|
|
}
|