extern crate rs_jsonrpc_core;
extern crate rs_jsonrpc_http_server;
use rs_jsonrpc_core::{IoHandler, Value};
use rs_jsonrpc_core::futures;
use rs_jsonrpc_http_server::{
hyper, ServerBuilder, DomainsValidation, AccessControlAllowOrigin, Response, RestApi
};
fn main() {
let mut io = IoHandler::default();
io.add_method("say_hello", |_params| {
futures::finished(Value::String("hello".to_owned()))
});
let server = ServerBuilder::new(io)
.cors(DomainsValidation::AllowOnly(vec![AccessControlAllowOrigin::Null]))
.request_middleware(|request: hyper::server::Request| {
if request.path() == "/status" {
Response::ok("Server running OK.").into()
} else {
request.into()
}
})
.rest_api(RestApi::Unsecure)
.start_http(&"127.0.0.1:3030".parse().unwrap())
.expect("Unable to start RPC server");
server.wait();
}