Basic API Setup

This commit is contained in:
2025-11-28 21:05:05 +01:00
parent 8ff2c76dc1
commit 504b5b2b27
5 changed files with 51 additions and 3 deletions

View File

@@ -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
View File

@@ -0,0 +1 @@
pub mod router;

View File

@@ -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(())
} }

View 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
}

View 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"})))
}