1 unstable release

0.1.0 Mar 16, 2024

#6 in #amp

Apache-2.0

23KB
494 lines

Amplitude

API overview

First example

use amplitude::{Amp, Event};
use serde_json::json;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let amp = Amp::from_env()?; // api key as env variable must be provided
    let mut event1 = Event::new();
    event1
    	.user_id("some user id")
    	.event_type("some event type")
    	.country("UK")
    	.android_id("slmsung-unlimited-hash")
    	.ip4(Some(Ipv4Addr::new(127, 0, 0, 5)))
    	.time(chrono::Utc::now());
    let event2 = Event::from_json(json!(
    	{
            "user_id": "some user id",
            "event_type": "lay on the beach",
            "android_id": "3gfhtey534-647"
        }
    ))?;
    let response = amp.send(vec![event1, event2])?;
    
    Ok(())
}

Second example

use amplitude::{Amp, Event};
use serde_json::json;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut amp = Amp::from_env()?; // api key as env variable must be provided
    amp
    	.batch() // set batch url
    	.set_min_id_length(4); 
    let mut event = Event::new();
    event
    	.device_id("xxxx")
    	.event_type("register");
    
    #[derive(Serialize)]
    struct UserProperties {
        age: u8,
        gender: String,
        interests: Vec<String>,
    }
    let up = UserProperties {
        age: 25,
        gender: "female".to_string(),
        interests: vec!["football".to_string(), "hockey".to_string()],
    };
    
    event.user_properties(up); // set user properties
    // also instead of creating a struct, you may pass serde_json::Value
    event.event_properties(json!({
        "event_group": "children",
        "foods": [
            {
                "apples": 5
            }
        ]
    }));
    let response = amp.send(vec![event]).await?;
}

Dependencies

~6–18MB
~249K SLoC