RPC call to get all RPC methods (#3613)

* Add meta rpc_methods call.

* Sort methods.

* Bump runtime.

* Change format a bit to support versioning.
This commit is contained in:
Tomasz Drwięga
2019-09-13 21:19:04 +02:00
committed by Gavin Wood
parent 45d64a711c
commit c45a15e559
8 changed files with 79 additions and 76 deletions
+5 -4
View File
@@ -5,12 +5,13 @@ authors = ["Parity Technologies <admin@parity.io>"]
edition = "2018"
[dependencies]
jsonrpc-core = "13.1.0"
pubsub = { package = "jsonrpc-pubsub", version = "13.1.0" }
jsonrpc-core = "13.2.0"
pubsub = { package = "jsonrpc-pubsub", version = "13.2.0" }
log = "0.4"
serde = "1.0"
serde_json = "1.0"
sr-primitives = { path = "../sr-primitives" }
[target.'cfg(not(target_os = "unknown"))'.dependencies]
http = { package = "jsonrpc-http-server", version = "13.1.0" }
ws = { package = "jsonrpc-ws-server", version = "13.1.0" }
http = { package = "jsonrpc-http-server", version = "13.2.0" }
ws = { package = "jsonrpc-ws-server", version = "13.2.0" }
+13
View File
@@ -40,6 +40,19 @@ pub fn rpc_handler<M: PubSubMetadata>(
) -> RpcHandler<M> {
let mut io = pubsub::PubSubHandler::default();
extension.augment(&mut io);
// add an endpoint to list all available methods.
let mut methods = io.iter().map(|x| x.0.clone()).collect::<Vec<String>>();
io.add_method("rpc_methods", {
methods.sort();
let methods = serde_json::to_value(&methods)
.expect("Serialization of Vec<String> is infallible; qed");
move |_| Ok(serde_json::json!({
"version": 1,
"methods": methods.clone(),
}))
});
io
}