Salesforce API Client for Rust
use rustforce::{Client,RestApi,Error,QueryResponse};use serde::Deserialize;use std::env;#[derive(Deserialize,Debug)]#[serde(rename_all = "PascalCase")]structAccount{id:String,name:String,}#[tokio::main]asyncfnmain() -> Result<(),Error>{let client_id = env::var("SFDC_CLIENT_ID").unwrap();let client_secret = env::var("SFDC_CLIENT_SECRET").unwrap();let username = env::var("SFDC_USERNAME").unwrap();let password = env::var("SFDC_PASSWORD").unwrap();letmut client = Client::new();
client.set_client_id(&client_id);
client.set_client_secret(&client_secret);
client.login_with_credential(&username,&password).await?;letmut api = RestApi::new(client);let res:QueryResponse<Account> = api.query("SELECT Id, Name FROM Account").await?;println!("{:?}", res);Ok(())}letmut client = Client::new();
client.set_client_id(&client_id);
client.set_client_secret(&client_secret);
client.login_with_credential(&username,&password).await?;letmut client = Client::new();
client.login_by_soap(&username,&password).await?;letmut client = Client::new();
client.set_instance_url("https://na1.salesforce.com");
client.set_access_token(token, issued_at, token_type);client.set_refresh_token("your_refresh_token");
client.refresh().await?;All REST API methods are accessed through RestApi:
letmut api = RestApi::new(client);let res:QueryResponse<Account> = api.query("SELECT Id, Name FROM Account").await?;let res:QueryResponse<Account> = api.query_all("SELECT Id, Name FROM Account").await?;let account:Account = api.find_by_id("Account","{sf_id}").await?;use rustforce::CreateResponse;letmut params = HashMap::new();
params.insert("Name","hello rust");let res:CreateResponse = api.create("Account", params).await?;println!("{:?}", res);api.update("Account","{sobject_id}", params).await?;let res = api.upsert("Account","{external_key_name}","{external_key}", params).await?;println!("{:?}", res.status());// 200 = updated, 201 = createdapi.destroy("Account","{sobject_id}").await?;use rustforce::DescribeGlobalResponse;let res:DescribeGlobalResponse = api.describe_global().await?;use rustforce::DescribeResponse;let res:DescribeResponse = api.describe("Account").await?;use rustforce::VersionResponse;let versions:Vec<VersionResponse> = api.versions().await?;use rustforce::SearchResponse;let res:SearchResponse = api.search_sosl("FIND {Rust}").await?;use rustforce::BulkApi;letmut bulk = BulkApi::new(client);let res = bulk.create_job(params).await?;use rustforce::BulkApiV2;letmut bulk = BulkApiV2::new(client);let res = bulk.create_job(params).await?;