abci-rs 0.11.3

A Rust crate for creating ABCI applications
Documentation
use tendermint_proto::abci::{request::Value as RequestValue, Request};

use crate::types::*;

pub fn info() -> Request {
    Request {
        value: Some(RequestValue::Info(RequestInfo::default())),
    }
}

pub fn init_chain() -> Request {
    Request {
        value: Some(RequestValue::InitChain(Default::default())),
    }
}

pub fn begin_block(block_height: i64, app_hash: Vec<u8>) -> Request {
    let header = Header {
        height: block_height,
        app_hash,
        ..Default::default()
    };

    let begin_block_request = RequestBeginBlock {
        header: Some(header),
        ..Default::default()
    };

    Request {
        value: Some(RequestValue::BeginBlock(begin_block_request)),
    }
}

pub fn check_tx(counter: u64, recheck: bool) -> Request {
    let mut check_tx_request = RequestCheckTx {
        tx: counter.to_be_bytes().to_vec(),
        ..Default::default()
    };

    if recheck {
        check_tx_request.set_type(CheckTxType::Recheck);
    }

    Request {
        value: Some(RequestValue::CheckTx(check_tx_request)),
    }
}

pub fn deliver_tx(counter: u64) -> Request {
    let deliver_tx_request = RequestDeliverTx {
        tx: counter.to_be_bytes().to_vec(),
    };

    Request {
        value: Some(RequestValue::DeliverTx(deliver_tx_request)),
    }
}

pub fn end_block(block_height: i64) -> Request {
    let end_block_request = RequestEndBlock {
        height: block_height,
    };

    Request {
        value: Some(RequestValue::EndBlock(end_block_request)),
    }
}

pub fn commit() -> Request {
    Request {
        value: Some(RequestValue::Commit(RequestCommit::default())),
    }
}