spotify-clone/backend-rust/src/main.rs

42 lines
1.1 KiB
Rust

pub mod api;
pub mod models;
mod spotdl;
use axum::{
routing::get,
Router,
};
use std::net::SocketAddr;
use std::sync::Arc;
use tower_http::cors::{Any, CorsLayer};
use crate::api::AppState;
use crate::spotdl::SpotdlService;
#[tokio::main]
async fn main() {
let spotdl = SpotdlService::new();
spotdl.start_background_preload();
let app_state = Arc::new(AppState { spotdl });
let cors = CorsLayer::new()
.allow_origin(Any)
.allow_methods(Any)
.allow_headers(Any);
let app = Router::new()
.route("/api/search", get(api::search_handler))
.route("/api/stream/{id}", get(api::stream_handler))
.route("/api/artist/info", get(api::artist_info_handler))
.route("/api/browse", get(api::browse_handler))
.route("/api/recommendations", get(api::recommendations_handler))
.layer(cors)
.with_state(app_state);
let addr = SocketAddr::from(([0, 0, 0, 0], 8080));
println!("Backend running on http://{}", addr);
let listener = tokio::net::TcpListener::bind(&addr).await.unwrap();
axum::serve(listener, app).await.unwrap();
}