10 releases
0.5.0 | Sep 8, 2023 |
---|---|
0.4.3 | Feb 27, 2023 |
0.4.2 | Dec 14, 2022 |
0.4.1 | Apr 29, 2022 |
0.1.2 | Dec 9, 2021 |
#1067 in Web programming
255KB
3.5K
SLoC
A Sift Rust Client
Getting started with SDK
Example import in Cargo.toml:
sift_science = "0.4"
Usage
Here's an example tracking a $create_account event using the reqwest
feature:
use sift_science::{
events::{CreateAccountProperties, Event, EventOptions},
AbuseType, Client,
};
use std::env;
use tracing::{info, Level};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt().with_max_level(Level::INFO).init();
let user_id = env::var("USER_ID").expect("must specify USER_ID env var");
let session_id = env::var("SESSION_ID").ok();
let http_client = reqwest::Client::default();
let api_key = env::var("API_KEY").expect("must specify API_KEY env var");
// Instantiate sift client
let sift = Client::new(api_key, http_client);
// Track an event
let response = sift
.track(
Event::CreateAccount {
user_id,
session_id,
properties: Box::new(CreateAccountProperties {
user_email: Some("test@example.com".into()),
..Default::default()
}),
},
EventOptions {
return_score: Some(true),
abuse_types: Some(vec![AbuseType::AccountTakeover]),
..Default::default()
},
)
.await;
info!(?response, "Got sift event response");
Ok(())
}
Testing
Before submitting a change, make sure the following commands run without errors:
cargo test
Dependencies
~2–16MB
~229K SLoC