Basic API Setup
This commit is contained in:
@@ -1,6 +1,13 @@
|
||||
[package]
|
||||
name = "RustyMine-daemon"
|
||||
name = "rustymine-daemon"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1.0.100"
|
||||
axum = "0.8.7"
|
||||
serde = "1.0.228"
|
||||
serde_json = "1.0.145"
|
||||
tokio = { version = "1.48.0", features = ["macros", "rt-multi-thread"] }
|
||||
tracing = { version = "0.1.43", features = ["max_level_debug"] }
|
||||
tracing-subscriber = "0.3.22"
|
||||
|
||||
1
src/backend/src/lib.rs
Normal file
1
src/backend/src/lib.rs
Normal file
@@ -0,0 +1 @@
|
||||
pub mod router;
|
||||
@@ -1,3 +1,18 @@
|
||||
fn main() {
|
||||
println!("Hello, world!");
|
||||
use anyhow::{Ok, Result};
|
||||
use rustymine_daemon::router;
|
||||
use tracing::Level;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<()> {
|
||||
let subscriber = tracing_subscriber::fmt()
|
||||
.with_max_level(Level::DEBUG)
|
||||
.finish();
|
||||
|
||||
tracing::subscriber::set_global_default(subscriber)?;
|
||||
|
||||
let app_result = router::init_router().await?;
|
||||
|
||||
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
|
||||
axum::serve(listener, app_result).await.unwrap();
|
||||
Ok(())
|
||||
}
|
||||
|
||||
9
src/backend/src/router/middleware.rs
Normal file
9
src/backend/src/router/middleware.rs
Normal file
@@ -0,0 +1,9 @@
|
||||
use axum::{extract::Request, middleware::Next, response::IntoResponse};
|
||||
use tracing::{debug, error, info, warn};
|
||||
|
||||
pub async fn auth_middleware(request: Request, next: Next) -> impl IntoResponse {
|
||||
debug!("auth_middleware entry");
|
||||
let response = next.run(request).await;
|
||||
debug!("auth_middleware exit");
|
||||
response
|
||||
}
|
||||
16
src/backend/src/router/mod.rs
Normal file
16
src/backend/src/router/mod.rs
Normal file
@@ -0,0 +1,16 @@
|
||||
pub mod middleware;
|
||||
use anyhow::Result;
|
||||
use axum::{Json, Router, http::StatusCode, middleware::from_fn, routing::get};
|
||||
use serde_json::{Value, json};
|
||||
|
||||
pub async fn init_router() -> Result<Router> {
|
||||
let router = Router::new().route(
|
||||
"/api/ping",
|
||||
get(ping).layer(from_fn(middleware::auth_middleware)),
|
||||
);
|
||||
Ok(router)
|
||||
}
|
||||
|
||||
async fn ping() -> Result<Json<Value>, StatusCode> {
|
||||
Ok(Json(json!({ "response": "pong"})))
|
||||
}
|
||||
Reference in New Issue
Block a user