Files
rustsf_auth/src/main.rs
T

112 lines
3.8 KiB
Rust

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<reqwest::Client> {
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());
}
*/
}