#![allow(clippy::print_stdout)]
use axum::{Extension, Router, routing::post};
use erc8128::{
MemoryNonceStore, RejectReplayable, VerifyPolicy, VerifySuccess, eoa::EoaVerifier,
middleware::Erc8128Layer,
};
async fn handler(Extension(auth): Extension<VerifySuccess>) -> String {
format!("Authenticated: {} (chain {})", auth.address, auth.chain_id)
}
#[tokio::main]
async fn main() {
let app = Router::new()
.route("/api", post(handler))
.layer(Erc8128Layer::new(
EoaVerifier,
MemoryNonceStore::default(),
RejectReplayable,
VerifyPolicy::default(),
));
let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.expect("bind");
println!("Listening on http://127.0.0.1:3000");
axum::serve(listener, app).await.expect("serve");
}