use anyhow::{Context, Result}; use log::LevelFilter; use reqwest::header::{AUTHORIZATION, HeaderMap, HeaderValue}; use rustsf_auth::credentials::SalesforceCredentials; pub const CONNECT_TIMEOUT: u64 = 15; pub const REQUEST_TIMEOUT: u64 = 30; pub fn get_http_client() -> Result { Ok(reqwest::Client::builder() .redirect(reqwest::redirect::Policy::none()) .connect_timeout(std::time::Duration::from_secs(CONNECT_TIMEOUT)) .timeout(std::time::Duration::from_secs(REQUEST_TIMEOUT)) .build() .context("Failed to build HTTP client")?) } #[tokio::main] async fn main() { println!("Hello, world!"); env_logger::builder() .filter_level(LevelFilter::Trace) .format_target(false) .init(); let url = "https://computing-platform-9537--qa.sandbox.my.salesforce.com/"; let customer_id = "3MVG9xj60O9CjKHpQMaI0gAqe_BibSxfGHYQBII24Bif2Nri7ewsMsz3kEbMr4vch36.q4I.B37EpwOOtg90e"; let customer_secret = "68182180245EEBC7C54804536914BBEA32C0C347D83A67EB43A6225D342C95B9"; let username = "wvelzeb1@its.jnj.com.im-qa"; let password = "pi#TU&4wk!1IzN^N"; let sfdx_auth_url = "force://PlatformCLI::5Aep8618kS0Qqf3GEL4qVTX2VSz2qiUtn3Grl0qSlJjRoSGz03Uv86qbbx2MOhcIyj.OTqFKFH.olbk5LdlYEAv@computing-platform-9537--qa.sandbox.my.salesforce.com"; /// let config = SalesforceAuthConfig::client_credentials( /// "https://login.salesforce.com", /// "client-id", /// "client-secret", /// ); /// /// let session = config.authenticate().await?; /// println!("{}", session.access_token); /// # Ok(()) // SFDX AUTH URL // let config = SalesforceCredentials::sfdx_url(sfdx_auth_url).unwrap(); /* // CLIENT CREDENTIALS let config = SalesforceCredentials::client_credentials( "https://computing-platform-9537--qa.sandbox.my.salesforce.com", customer_id, customer_secret, ); */ // WEB Flow let config = SalesforceCredentials::web_server( "https://computing-platform-9537--qa.sandbox.my.salesforce.com", "PlatformCLI", None, "http://localhost:1717/OauthRedirect", None, ); println!("Config: {:?}", config); let session = config.connect().await.unwrap(); println!("Instance URL: {}", session.instance_url); println!("Access token: {}", session.access_token().await.unwrap()); let mut headers = HeaderMap::new(); let auth_value = format!("Bearer {}", session.access_token().await.unwrap()); headers.insert(AUTHORIZATION, HeaderValue::from_str(&auth_value).unwrap()); //Default header headers.insert("Accept", HeaderValue::from_static("application/json")); // Get API Versions let response = get_http_client().unwrap() .get(format!("{}/services/data", session.instance_url)) .headers(headers.clone()) .send() .await .unwrap(); if response.status().is_success() { println!("SUCCESS Response: {:?}", response.text().await.unwrap()); } else { println!("ERROR Response: {:?}", response.text().await.unwrap()); } /* session.refresh_access_token().await.unwrap(); let auth_value = format!("Bearer {}", session.access_token().await.unwrap()); println!("token: {}", auth_value); headers.insert(AUTHORIZATION, HeaderValue::from_str(&auth_value).unwrap()); // Get LIMITs Versions let response = get_http_client().unwrap() .get(format!("{}/services/data/v67.0/limits", session.instance_url)) .headers(headers) .send() .await .unwrap(); if response.status().is_success() { println!("SUCCESS Response 2: {:?}", response.text().await.unwrap()); } else { println!("ERROR Response 2: {:?}", response.text().await.unwrap()); } */ }