Crates.io | warp-json-rpc |
lib.rs | warp-json-rpc |
version | 0.3.0 |
source | src |
created_at | 2020-02-18 06:41:37.322085 |
updated_at | 2021-01-28 13:23:39.4674 |
description | JSON RPC server extension for warp |
homepage | |
repository | https://github.com/AtsukiTak/warp-json-rpc |
max_upload_size | |
id | 210237 |
size | 56,430 |
Bring JSON RPC features into warp world.
use warp_json_rpc::filters as json_rpc;
use futures::future;
use warp::Filter as _;
#[tokio::main]
async fn main() {
// create Filter
let route = warp::filters::path::path("rpc")
// ## Point 1
// This filter is required.
.and(json_rpc::json_rpc())
.and(json_rpc::method("add"))
.and(json_rpc::params::<(usize, usize)>())
// `res.success` returns `impl Reply` which represents JSON RPC Response
.map(|res: Builder, (lhs, rhs)| res.success(lhs + rhs).unwrap());
// ## Point 2
// You **MUST** wraps root `Filter` by `warp_json_rpc::service` function.
let svc = warp_json_rpc::service(route);
let make_svc = hyper::service::make_service_fn(move |_| future::ok::<_, Infallible>(svc));
hyper::Server::bind(&([127, 0, 0, 1], 3030).into())
.serve(make_svc)
.await
.unwrap();
}