32 lines
942 B
Rust
32 lines
942 B
Rust
pub mod assets;
|
|
pub mod health;
|
|
|
|
use crate::{config::Config, threads};
|
|
use axum::{
|
|
routing::{delete, get, post},
|
|
serve, Extension, Router,
|
|
};
|
|
use log::info;
|
|
use std::{net::SocketAddr, sync::Arc};
|
|
use tokio::{net::TcpListener, sync::mpsc};
|
|
|
|
pub async fn run(
|
|
app_config: Arc<Config>,
|
|
asset_status_sender: mpsc::Sender<threads::data::asset_status::Message>,
|
|
) {
|
|
let app = Router::new()
|
|
.route("/health", get(health::get))
|
|
.route("/assets", get(assets::get))
|
|
.route("/assets/:symbol", get(assets::get_where_symbol))
|
|
.route("/assets", post(assets::add))
|
|
.route("/assets/:symbol", delete(assets::delete))
|
|
.layer(Extension(app_config))
|
|
.layer(Extension(asset_status_sender));
|
|
|
|
let addr = SocketAddr::from(([0, 0, 0, 0], 7878));
|
|
let listener = TcpListener::bind(addr).await.unwrap();
|
|
|
|
info!("Listening on {}.", addr);
|
|
serve(listener, app).await.unwrap();
|
|
}
|