edc_connector_client/api/
dataplanes.rs

1use crate::{
2    client::EdcConnectorClientInternal,
3    types::{context::WithContext, dataplane::DataPlaneInstance},
4    EdcResult,
5};
6
7pub struct DataPlaneApi<'a>(&'a EdcConnectorClientInternal);
8
9impl<'a> DataPlaneApi<'a> {
10    pub(crate) fn new(client: &'a EdcConnectorClientInternal) -> DataPlaneApi<'a> {
11        DataPlaneApi(client)
12    }
13
14    pub async fn list(&self) -> EdcResult<Vec<DataPlaneInstance>> {
15        let url = self.get_endpoint(&[]);
16        self.0
17            .get::<Vec<WithContext<DataPlaneInstance>>>(url)
18            .await
19            .map(|results| results.into_iter().map(|ctx| ctx.inner).collect())
20    }
21
22    fn get_endpoint(&self, paths: &[&str]) -> String {
23        [self.0.management_url.as_str(), "v3", "dataplanes"]
24            .into_iter()
25            .chain(paths.iter().copied())
26            .collect::<Vec<_>>()
27            .join("/")
28    }
29}