edc_connector_client/api/
catalog.rs

1use crate::{
2    client::EdcConnectorClientInternal,
3    types::{
4        catalog::{Catalog, CatalogRequest, Dataset, DatasetRequest},
5        context::WithContext,
6    },
7    EdcResult,
8};
9
10pub struct CatalogApi<'a>(&'a EdcConnectorClientInternal);
11
12impl<'a> CatalogApi<'a> {
13    pub(crate) fn new(client: &'a EdcConnectorClientInternal) -> CatalogApi<'a> {
14        CatalogApi(client)
15    }
16
17    pub async fn request(&self, request: &CatalogRequest) -> EdcResult<Catalog> {
18        let url = self.0.path_for(&["catalog", "request"]);
19
20        self.0
21            .post::<_, WithContext<Catalog>>(url, &self.0.context_for(request))
22            .await
23            .map(|ctx| ctx.inner)
24    }
25
26    pub async fn dataset(&self, request: &DatasetRequest) -> EdcResult<Dataset> {
27        let url = self.0.path_for(&["catalog", "dataset", "request"]);
28        self.0
29            .post::<_, WithContext<Dataset>>(url, &self.0.context_for(request))
30            .await
31            .map(|ctx| ctx.inner)
32    }
33}