Basic API Setup
This commit is contained in:
@@ -1,6 +1,13 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "RustyMine-daemon"
|
name = "rustymine-daemon"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
[dependencies]
|
[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() {
|
use anyhow::{Ok, Result};
|
||||||
println!("Hello, world!");
|
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