edc_connector_client/api/
dataplanes.rs1use 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}