Crate jsonrpc_client_core[−][src]
A crate for generating transport agnostic, auto serializing, strongly typed JSON-RPC 2.0 clients.
This crate mainly provides a macro, jsonrpc_client
. The macro generates structs that can be
used for calling JSON-RPC 2.0 APIs. The macro lets you list methods on the struct with
arguments and a return type. The macro then generates a struct which will automatically
serialize the arguments, send the request and deserialize the response into the target type.
Transports
The jsonrpc-client-core
crate itself and the structs generated by the jsonrpc_client
macro
are transport agnostic. They can use any type implementing the Transport
trait.
The main (and so far only) transport implementation is the Hyper based HTTP implementation
in the jsonrpc-client-http
crate.
Example
#[macro_use] extern crate jsonrpc_client_core; extern crate jsonrpc_client_http; use jsonrpc_client_http::HttpTransport; jsonrpc_client!(pub struct FizzBuzzClient { /// Returns the fizz-buzz string for the given number. pub fn fizz_buzz(&mut self, number: u64) -> RpcRequest<String>; }); fn main() { let transport = HttpTransport::new().standalone().unwrap(); let transport_handle = transport .handle("http://api.fizzbuzzexample.org/rpc/") .unwrap(); let mut client = FizzBuzzClient::new(transport_handle); let result1 = client.fizz_buzz(3).call().unwrap(); let result2 = client.fizz_buzz(4).call().unwrap(); let result3 = client.fizz_buzz(5).call().unwrap(); // Should print "fizz 4 buzz" if the server implemented the service correctly println!("{} {} {}", result1, result2, result3); }
Re-exports
pub extern crate error_chain; |
Modules
example |
Module containing an example client. To show in the docs what a generated struct look like. |
Macros
jsonrpc_client |
The main macro of this crate. Generates JSON-RPC 2.0 client structs with automatic serialization and deserialization. Method calls get correct types automatically. |
Structs
Error |
The Error type. |
RpcRequest |
A lazy RPC call |
Enums
ErrorKind |
The kind of an error. |
Traits
ResultExt |
Additional methods for |
Transport |
Trait for types acting as a transport layer for the JSON-RPC 2.0 clients generated by the
|
Functions
call_method |
Prepares a lazy |
Type Definitions
Result |
Convenient wrapper around |