lxmf-sdk 0.8.0

High-level Rust SDK for LXMF clients and RPC-backed LXMF workflows.
Documentation
use super::{code, ErrorCategory, SdkError, ZmqPipelineBackendClient};
use crate::app::{Envelope, EnvelopeResponse};
use crate::domain::{DeliveryTicketGenerateRequest, DeliveryTicketGenerateResult};

impl ZmqPipelineBackendClient {
    pub fn delivery_ticket_generate(
        &self,
        req: DeliveryTicketGenerateRequest,
    ) -> Result<DeliveryTicketGenerateResult, SdkError> {
        let params = serde_json::to_value(req).map_err(|err| {
            SdkError::new(code::INTERNAL, ErrorCategory::Internal, err.to_string())
        })?;
        let envelope = Envelope::command("app.delivery.ticket.generate", params);
        let params = serde_json::to_value(envelope).map_err(|err| {
            SdkError::new(code::INTERNAL, ErrorCategory::Internal, err.to_string())
        })?;
        let result = self.call_rpc("sdk_envelope_execute_v2", Some(params))?;
        let response: EnvelopeResponse =
            Self::decode_field_or_root(&result, "response", "delivery ticket response")?;
        Self::decode_value(response.payload, "delivery ticket payload")
    }
}