amqp_api_client/
api_consumer.rs

1use crate::amqp_input_api_consumer::AmqpInputApiConsumer;
2use crate::amqp_output_api_consumer::AmqpOutputApiConsumer;
3use crate::error::{Error, ErrorKind};
4use cooplan_config_reader::reader::try_read;
5use serde::{Deserialize, Serialize};
6
7#[derive(Deserialize, Serialize)]
8pub struct ApiConsumer {
9    input: Vec<AmqpInputApiConsumer>,
10    output: Vec<AmqpOutputApiConsumer>,
11}
12
13impl ApiConsumer {
14    pub fn input(&self) -> &[AmqpInputApiConsumer] {
15        &self.input
16    }
17
18    pub fn output(&self) -> &[AmqpOutputApiConsumer] {
19        &self.output
20    }
21}
22
23pub async fn try_get(api_consumer_file: &str) -> Result<ApiConsumer, Error> {
24    match try_read(api_consumer_file).await {
25        Ok(api) => Ok(api),
26        Err(error) => Err(Error::new(
27            ErrorKind::InternalFailure,
28            format!("failed to read api configuration: {}", error),
29        )),
30    }
31}