use busbar_sf_client::{ClientConfig, SalesforceClient};
use crate::error::Result;
mod apex;
mod code_intelligence;
mod collections;
mod composite;
mod coverage;
#[cfg(feature = "dependencies")]
mod dependencies;
mod describe;
mod execute;
mod logs;
mod query;
mod sobject;
mod test_execution;
mod trace_flags;
#[derive(Debug, Clone)]
pub struct ToolingClient {
client: SalesforceClient,
}
impl ToolingClient {
pub fn new(instance_url: impl Into<String>, access_token: impl Into<String>) -> Result<Self> {
let client = SalesforceClient::new(instance_url, access_token)?;
Ok(Self { client })
}
pub fn with_config(
instance_url: impl Into<String>,
access_token: impl Into<String>,
config: ClientConfig,
) -> Result<Self> {
let client = SalesforceClient::with_config(instance_url, access_token, config)?;
Ok(Self { client })
}
pub fn from_client(client: SalesforceClient) -> Self {
Self { client }
}
pub fn inner(&self) -> &SalesforceClient {
&self.client
}
pub fn instance_url(&self) -> &str {
self.client.instance_url()
}
pub fn api_version(&self) -> &str {
self.client.api_version()
}
pub fn with_api_version(mut self, version: impl Into<String>) -> Self {
self.client = self.client.with_api_version(version);
self
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_client_creation() {
let client = ToolingClient::new("https://na1.salesforce.com", "token123").unwrap();
assert_eq!(client.instance_url(), "https://na1.salesforce.com");
assert_eq!(client.api_version(), "62.0");
}
#[test]
fn test_api_version_override() {
let client = ToolingClient::new("https://na1.salesforce.com", "token")
.unwrap()
.with_api_version("60.0");
assert_eq!(client.api_version(), "60.0");
}
}