3 releases (breaking)
0.3.0 | Dec 28, 2018 |
---|---|
0.2.0 | Jul 16, 2018 |
0.1.0 | Jun 25, 2018 |
#70 in #rpc-server
Used in rpc-cli
10KB
244 lines
#rpc-lib
This is an RPC 2.0 library for making requests to a server, it has been modified to handle some non-standard server responses such as, string error return value.
Why not strict RPC 2.0 responses
Because I am supporting some legacy Go RPC server that are slightly off spec, however, this will also support the proper RPC 2.0 spec.
Requirements
On Linux:
- OpenSSL 1.0.1, 1.0.2, or 1.1.0 with headers (see https://github.com/sfackler/rust-openssl)
On Windows and macOS:
- Nothing.
Usage
First, add this to your Cargo.toml
:
[dependencies]
rpc-lib = "1.0.0"
Here is a quite example to get you going:
extern crate rpc_lib;
extern crate serde;
#[macro_use]
extern crate serde_derive;
use rpc_lib::client::prelude::*;
use std::error::Error;
#[derive(Serialize)]
struct Input {
id: String,
}
#[derive(Deserialize, Debug)]
struct Project {
id: String,
url: String,
enabled: bool,
}
fn main() -> Result<(), Box<Error>> {
let input = Input {
id: "x0x0x0x0".to_string(),
};
let client = Client::new("http://localhost:4000/rpc");
let res: Project = client.call("1", "Project.Find", input)?;
println!("{:?}", res);
Ok(())
}
Dependencies
~22MB
~455K SLoC