Skip to content

Instantly share code, notes, and snippets.

@jtremback
Created August 4, 2017 20:22
Show Gist options
  • Save jtremback/4e5c81fc4e8562c0eac2aa0472ba269e to your computer and use it in GitHub Desktop.
Save jtremback/4e5c81fc4e8562c0eac2aa0472ba269e to your computer and use it in GitHub Desktop.
extern crate jsonrpc_core;
extern crate jsonrpc_http_server;
use jsonrpc_core::*;
use jsonrpc_http_server::*;
#[macro_use]
extern crate serde_derive;
extern crate serde;
extern crate serde_json;
#[derive(Serialize, Deserialize, Debug)]
struct Foo {
bar: String,
dang: i32,
}
fn main() {
let mut io = IoHandler::default();
io.add_method("say_hello", |params: Params| {
let foo: Option<Foo> = match params {
Params::Array(expr) => Some(serde_json::from_value(expr[0].to_owned()).unwrap()),
Params::Map(expr) => Some(serde_json::from_value(expr["bar"].to_owned()).unwrap()),
Params::None => None,
};
let foo = foo.unwrap();
println!("woohoo {:?}", foo);
Ok(
serde_json::to_value(Foo {
bar: foo.bar + "frmp",
dang: foo.dang * 2,
}).unwrap(),
)
});
let server = ServerBuilder::new(io)
.cors(DomainsValidation::AllowOnly(
vec![AccessControlAllowOrigin::Null],
))
.start_http(&"127.0.0.1:3030".parse().unwrap())
.expect("Unable to start RPC server");
server.wait();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment