azservicebus 0.25.1

An unofficial AMQP 1.0 rust client for Azure Service Bus
Documentation
use fe2o3_amqp_management::error::Error as ManagementError;
use fe2o3_amqp_management::response::Response;
use fe2o3_amqp_types::primitives::{Array, OrderedMap, Timestamp};

use crate::amqp::management_constants::properties::EXPIRATIONS;

type RenewLockResponseBody = OrderedMap<String, Array<Timestamp>>;

#[derive(Debug)]
pub(crate) struct RenewLockResponse {
    pub expirations: Array<Timestamp>,
}

impl Response for RenewLockResponse {
    const STATUS_CODE: u16 = 200;

    type Body = Option<RenewLockResponseBody>;

    type Error = ManagementError;

    fn decode_message(
        message: fe2o3_amqp_types::messaging::Message<Self::Body>,
    ) -> Result<Self, Self::Error> {
        let expirations = message
            .body
            .and_then(|mut map| map.swap_remove(EXPIRATIONS))
            .ok_or(ManagementError::DecodeError(None))?;
        Ok(Self { expirations })
    }
}