#![crate_type = "lib"]
#![crate_type = "rlib"]
#![crate_type = "dylib"]
#![crate_name = "clightningrpc"]
#![deny(missing_debug_implementations)]
#![deny(non_upper_case_globals)]
#![deny(non_camel_case_types)]
#![deny(non_snake_case)]
#![deny(unused_mut)]
#![warn(missing_docs)]
extern crate serde;
#[macro_use]
extern crate serde_derive;
extern crate serde_json;
pub mod client;
pub mod common;
pub mod error;
pub mod lightningrpc;
pub mod requests;
pub mod responses;
pub use crate::error::Error;
pub use crate::lightningrpc::LightningRPC;
use serde::Serialize;
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct Request<'f, T: Serialize> {
pub method: &'f str,
pub params: T,
pub id: u64,
pub jsonrpc: &'f str,
}
#[derive(Debug, Clone, PartialEq, Deserialize)]
pub struct Response<T> {
pub result: Option<T>,
pub error: Option<error::RpcError>,
pub id: u64,
pub jsonrpc: Option<String>,
}
impl<T> Response<T> {
pub fn into_result(self) -> Result<T, Error> {
if let Some(e) = self.error {
return Err(Error::Rpc(e));
}
self.result.ok_or(Error::NoErrorOrResult)
}
pub fn is_none(&self) -> bool {
self.result.is_none()
}
}