use crate::{
abci::{Code, Log, Path, Proof},
block, rpc, serializers,
};
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct Request {
path: Option<Path>,
data: Vec<u8>,
height: Option<block::Height>,
prove: bool,
}
impl Request {
pub fn new<D>(path: Option<Path>, data: D, height: Option<block::Height>, prove: bool) -> Self
where
D: Into<Vec<u8>>,
{
Self {
path,
data: data.into(),
height,
prove,
}
}
}
impl rpc::Request for Request {
type Response = Response;
fn method(&self) -> rpc::Method {
rpc::Method::AbciQuery
}
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Response {
pub response: AbciQuery,
}
impl rpc::Response for Response {}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct AbciQuery {
pub code: Code,
pub log: Log,
pub info: Option<String>,
#[cfg_attr(
feature = "serde",
serde(
serialize_with = "serializers::serialize_i64",
deserialize_with = "serializers::parse_i64"
)
)]
pub index: i64,
pub key: String,
pub value: String,
pub proof: Option<Proof>,
pub height: block::Height,
pub codespace: Option<String>,
}