From aaad974d8f6847f66e4fc1df1923f4845549052b Mon Sep 17 00:00:00 2001 From: Kieran Date: Fri, 27 Sep 2024 16:19:48 +0100 Subject: [PATCH] feat: pass referer and UA --- src/analytics/plausible.rs | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/analytics/plausible.rs b/src/analytics/plausible.rs index 6e1ce44..bb0d762 100644 --- a/src/analytics/plausible.rs +++ b/src/analytics/plausible.rs @@ -12,6 +12,8 @@ struct Event { pub domain: String, pub url: String, pub referrer: Option, + #[serde(skip_serializing)] + pub user_agent: Option, } pub struct PlausibleAnalytics { @@ -29,7 +31,16 @@ impl PlausibleAnalytics { tokio::spawn(async move { while let Some(mut msg) = rx.recv().await { msg.url = format!("{}{}", pub_url, msg.url); - match ureq::post(&format!("{}/api/event", url)).send_json(&msg) { + match ureq::post(&format!("{}/api/event", url)) + .set( + "user-agent", + match &msg.user_agent { + Some(s) => s, + None => "", + }, + ) + .send_json(&msg) + { Ok(v) => info!("Sent {:?}", msg), Err(e) => warn!("Failed to track: {}", e), } @@ -49,7 +60,14 @@ impl Analytics for PlausibleAnalytics { None => return Ok(()), // ignore request }, url: req.uri().to_string(), - referrer: None, + referrer: match req.headers().get_one("Referer") { + Some(s) => Some(s.to_string()), + None => None, + }, + user_agent: match req.headers().get_one("User-Agent") { + Some(s) => Some(s.to_string()), + None => None, + }, })?) } }