use server_less::rpc;
#[derive(Clone)]
pub struct Calculator;
#[rpc]
impl Calculator {
pub fn add(&self, a: i32, b: i32) -> i32 {
a + b
}
pub fn multiply(&self, a: i32, b: i32) -> i32 {
a * b
}
pub fn divide(&self, a: i32, b: i32) -> Result<i32, String> {
if b == 0 {
Err("division by zero".into())
} else {
Ok(a / b)
}
}
}
#[tokio::main]
async fn main() {
println!("OpenRPC spec:");
println!(
"{}",
serde_json::to_string_pretty(&Calculator::openrpc_spec()).unwrap()
);
println!("\nStarting JSON-RPC server on http://localhost:3000");
println!(" POST /rpc - JSON-RPC 2.0 endpoint");
println!(" GET /health - health check");
Calculator.serve("0.0.0.0:3000").await.unwrap();
}