ibapi 3.0.1

A Rust implementation of the Interactive Brokers TWS API, providing a reliable and user friendly interface for TWS and IB Gateway. Designed with a focus on simplicity and performance.
Documentation
use prost::Message;

use crate::contracts::Contract;
use crate::fundamental::FundamentalReportType;
use crate::messages::{encode_protobuf_message, OutgoingMessages};
use crate::proto;
use crate::proto::encoders::{encode_contract, some_display};
use crate::Error;

pub(in crate::fundamental) fn encode_request_fundamental_data(
    request_id: i32,
    contract: &Contract,
    report_type: FundamentalReportType,
) -> Result<Vec<u8>, Error> {
    let request = proto::FundamentalsDataRequest {
        req_id: Some(request_id),
        contract: Some(encode_contract(contract)),
        report_type: some_display(Some(&report_type)),
        fundamentals_data_options: Default::default(),
    };
    Ok(encode_protobuf_message(
        OutgoingMessages::RequestFundamentalData as i32,
        &request.encode_to_vec(),
    ))
}