use invoance::models::{IngestEventParams, ListEventsParams, VerifyEventParams};
use invoance::InvoanceClient;
use serde_json::json;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = InvoanceClient::new()?;
let payload = json!({ "user_id": "u_42", "ip": "203.0.113.4" });
let event = client
.events()
.ingest(IngestEventParams {
event_type: "user.login".into(),
payload: payload.as_object().unwrap().clone(),
..Default::default()
})
.await?;
println!("ingested {}", event.event_id);
let listed = client
.events()
.list(ListEventsParams {
limit: Some(5),
..Default::default()
})
.await?;
println!("{} of {} events", listed.events.len(), listed.total);
let fetched = client.events().get(&event.event_id).await?;
println!("payload_hash = {}", fetched.payload_hash);
let verify = client
.events()
.verify(
&event.event_id,
VerifyEventParams {
payload: payload.as_object().cloned(),
..Default::default()
},
)
.await?;
println!("match_result = {}", verify.match_result);
Ok(())
}