Analytics Rust   ![Build Status] ![Latest Version]

Analytics Rust is a Segment analytics client for Rust. For additional documentation visit https://segment.com/docs/sources/#server.


toml [dependencies] analytics = "0.1"

Example usage(s)

```rust use analytics::http::HttpClient; use analytics::client::Client; use analytics::message::{BatchMessage, Track, User}; use analytics::batcher::Batcher; use serde_json::json;

fn main() { let writekey = "YOURWRITE_KEY";

let client = HttpClient::default();
let mut batcher = Batcher::new(None);

// Pretend this is reading off of a queue, a file, or some other data
// source.
for i in 0..100 {
    let msg = BatchMessage::Track(Track {
        user: User::UserId { user_id: format!("user-{}", i) },
        event: "Example Event".to_owned(),
        properties: json!({
            "foo": format!("bar-{}", i),
        }),
        ..Default::default()
    });

    // An error here indicates a message is too large. In real life, you
    // would probably want to put this message in a deadletter queue or some
    // equivalent.
    if let Some(msg) = batcher.push(msg).unwrap() {
        client.send(write_key, &batcher.into_message()).unwrap();

        batcher = Batcher::new(None);
        batcher.push(msg).unwrap(); // Same error condition as above.
    }
}

} ```

or when you want to do struct to struct transformations

```rust use analytics::http::HttpClient; use analytics::client::Client; use analytics::message::{Track, Message, User}; use serde_json::json;

fn main() { let writekey = "YOURWRITE_KEY";

let client = HttpClient::default();
client.send(write_key, &Message::Track(Track {
    user: User::UserId { user_id: "some_user_id".to_owned() },
    event: "Example Event".to_owned(),
    properties: json!({
        "some property": "some value",
        "some other property": "some other value",
    }),
    ..Default::default()
})).expect("could not send to Segment");

}

```

License

Licensed under MIT license.