use std::env;
use futures::StreamExt;
use matomo::reqwest::MatomoClient;
use matomo::{Auth, DateRange, Limit, Period};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let url = env::var("MATOMO_URL")?;
let token = env::var("MATOMO_TOKEN")?;
let id_site: u32 = env::var("MATOMO_IDSITE")?.parse()?;
let client = MatomoClient::builder()
.base_url(url)
.auth(Auth::token(token))
.build()?;
let period = Period::Range(DateRange::LastN(7));
let page_size = Limit::count(50).expect("50 is non-zero");
let mut stream = client.live().stream(id_site, period, page_size, None)?;
while let Some(item) = stream.next().await {
let visit = item?;
println!(
"visit {} type={:?} country={:?} actions={}",
visit.id_visit, visit.visitor_type, visit.country, visit.actions
);
}
Ok(())
}