jsonrpc_macros/
util.rs

1//! Param & Value utilities
2
3use std::fmt;
4use jsonrpc_core::{self, Error, Params, ErrorCode, Value};
5use serde;
6
7/// Returns an `InvalidParams` for given parameter.
8pub fn invalid_params<T>(param: &str, details: T) -> Error where T: fmt::Debug {
9	Error {
10		code: ErrorCode::InvalidParams,
11		message: format!("Couldn't parse parameters: {}", param),
12		data: Some(Value::String(format!("{:?}", details))),
13	}
14}
15
16/// Validates if the method was invoked without any params.
17pub fn expect_no_params(params: Params) -> Result<(), Error> {
18	match params {
19		Params::None => Ok(()),
20		p => Err(invalid_params("No parameters were expected", p)),
21	}
22}
23
24/// Converts a serializable value into `Value`.
25pub fn to_value<T>(value: T) -> Value where T: serde::Serialize {
26	jsonrpc_core::to_value(value).expect("Expected always-serializable type.")
27}