From 47e10ee8905e0a1290a03a29f59f94641a6aba1b Mon Sep 17 00:00:00 2001 From: Kieran Date: Mon, 5 Jun 2023 23:11:42 +0100 Subject: [PATCH] Use site url for request url in analytics --- .../Services/Analytics/PlausibleAnalytics.cs | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/VoidCat/Services/Analytics/PlausibleAnalytics.cs b/VoidCat/Services/Analytics/PlausibleAnalytics.cs index 02c8f17..57a266f 100644 --- a/VoidCat/Services/Analytics/PlausibleAnalytics.cs +++ b/VoidCat/Services/Analytics/PlausibleAnalytics.cs @@ -9,12 +9,15 @@ public class PlausibleAnalytics : IWebAnalyticsCollector { private readonly HttpClient _client; private readonly string _domain; + private readonly Uri _siteUrl; public PlausibleAnalytics(HttpClient client, VoidSettings settings) { _client = client; _client.BaseAddress = settings.PlausibleAnalytics!.Endpoint!; + _client.Timeout = TimeSpan.FromSeconds(1); _domain = settings.PlausibleAnalytics!.Domain!; + _siteUrl = settings.SiteUrl; } public async Task TrackPageView(HttpContext context) @@ -24,9 +27,9 @@ public class PlausibleAnalytics : IWebAnalyticsCollector request.Headers.Add("x-forwarded-for", context.Request.Headers.TryGetValue("x-forwarded-for", out var xff) ? xff.First() : null); - var ub = new UriBuilder("http:", context.Request.Host.Host, context.Request.Host.Port ?? 80, - context.Request.Path) + var ub = new UriBuilder(_siteUrl) { + Path = context.Request.Path, Query = context.Request.QueryString.Value }; @@ -37,6 +40,7 @@ public class PlausibleAnalytics : IWebAnalyticsCollector ? new Uri(context.Request.Headers.Referer.FirstOrDefault()!) : null }; + request.Content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ev))); request.Content.Headers.ContentType = new("application/json"); @@ -56,16 +60,22 @@ public class PlausibleAnalytics : IWebAnalyticsCollector Url = url; } - [JsonProperty("name")] public string Name { get; init; } = "pageview"; + [JsonProperty("name")] + public string Name { get; init; } = "pageview"; - [JsonProperty("domain")] public string Domain { get; init; } + [JsonProperty("domain")] + public string Domain { get; init; } - [JsonProperty("url")] public Uri Url { get; init; } + [JsonProperty("url")] + public Uri Url { get; init; } - [JsonProperty("screen_width")] public int? ScreenWidth { get; init; } + [JsonProperty("screen_width")] + public int? ScreenWidth { get; init; } - [JsonProperty("referrer")] public Uri? Referrer { get; init; } + [JsonProperty("referrer")] + public Uri? Referrer { get; init; } - [JsonProperty("props")] public object? Props { get; init; } + [JsonProperty("props")] + public object? Props { get; init; } } -} \ No newline at end of file +}