handle all xrpc routes with NotImplemented

Supported routes can be added as they become available
This commit is contained in:
Julia Lange 2025-04-18 19:10:17 -07:00
parent 1d577ef396
commit 57c396afe7
Signed by: Julia
SSH key fingerprint: SHA256:50XUMcOFYPUs9/1j7p9SPnwASZ7QnxXm7THF7HkbqzQ
3 changed files with 20 additions and 11 deletions

2
rust/Cargo.lock generated
View file

@ -345,6 +345,8 @@ name = "rust"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"axum", "axum",
"serde",
"serde_json",
"tokio", "tokio",
] ]

View file

@ -6,5 +6,7 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
axum = "0.8.3" axum = { version = "0.8.3", features = ["json"] }
serde = "1.0.219"
serde_json = "1.0.140"
tokio = { version = "1.44.2", features = ["macros", "rt-multi-thread"] } tokio = { version = "1.44.2", features = ["macros", "rt-multi-thread"] }

View file

@ -1,22 +1,27 @@
use axum::{ use axum::{
routing::get, Json,
extract::Path, routing::get,
Router, extract::Path,
http::StatusCode,
Router,
}; };
use serde_json::{Value, json};
use tokio::net::TcpListener; use tokio::net::TcpListener;
pub async fn setup() { pub async fn setup() {
let app = Router::new() let app = Router::new()
.route("/xrpc/{nsid}", get(xrpc_get).post(xrpc_post)); .route("/xrpc/{*nsid}", get(not_implemented).post(not_implemented));
let listener = TcpListener::bind("0.0.0.0:6702").await.unwrap(); let listener = TcpListener::bind("0.0.0.0:6702").await.unwrap();
axum::serve(listener, app).await.unwrap(); axum::serve(listener, app).await.unwrap();
} }
async fn xrpc_get(Path(nsid): Path<String>) -> String { async fn not_implemented(Path(_nsid): Path<String>) -> (StatusCode, Json<Value>) {
nsid (
} StatusCode::NOT_IMPLEMENTED,
Json(json!({
async fn xrpc_post(Path(nsid): Path<String>) -> String { "error": "MethodNotImplemented",
nsid "message": "Method Not Implemented"
}))
)
} }