busbar_sf_rest/client/
describe.rs1use tracing::instrument;
2
3use busbar_sf_client::security::soql;
4
5use crate::describe::{DescribeGlobalResult, DescribeSObjectResult};
6use crate::error::{Error, ErrorKind, Result};
7
8impl super::SalesforceRestClient {
9 #[instrument(skip(self))]
13 pub async fn describe_global(&self) -> Result<DescribeGlobalResult> {
14 self.client.rest_get("sobjects").await.map_err(Into::into)
15 }
16
17 #[instrument(skip(self))]
21 pub async fn describe_sobject(&self, sobject: &str) -> Result<DescribeSObjectResult> {
22 if !soql::is_safe_sobject_name(sobject) {
23 return Err(Error::new(ErrorKind::Salesforce {
24 error_code: "INVALID_SOBJECT".to_string(),
25 message: "Invalid SObject name".to_string(),
26 }));
27 }
28 let path = format!("sobjects/{}/describe", sobject);
29 self.client.rest_get(&path).await.map_err(Into::into)
30 }
31}