Print analytics request body

This commit is contained in:
Kieran 2023-06-06 10:59:06 +01:00
parent 10287d097b
commit 583c66a00a
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941

View File

@ -25,7 +25,7 @@ public class PlausibleAnalytics : IWebAnalyticsCollector
public async Task TrackPageView(HttpContext context) public async Task TrackPageView(HttpContext context)
{ {
var request = new HttpRequestMessage(HttpMethod.Post, "/api/event"); var request = new HttpRequestMessage(HttpMethod.Post, "/api/event");
request.Headers.Add("user-agent", context.Request.Headers.UserAgent.First()); request.Headers.UserAgent.ParseAdd(context.Request.Headers.UserAgent);
if (context.Request.Headers.TryGetValue("x-forwarded-for", out var xff)) if (context.Request.Headers.TryGetValue("x-forwarded-for", out var xff))
{ {
foreach (var xf in xff) foreach (var xf in xff)
@ -37,21 +37,24 @@ public class PlausibleAnalytics : IWebAnalyticsCollector
var ub = new UriBuilder(_siteUrl) var ub = new UriBuilder(_siteUrl)
{ {
Path = context.Request.Path, Path = context.Request.Path,
Query = context.Request.QueryString.Value Query = context.Request.QueryString.ToUriComponent()
}; };
var ev = new EventObj(_domain, ub.Uri) var ev = new EventObj(_domain, ub.Uri)
{ {
Referrer = Referrer =
context.Request.Headers.Referer.Any() context.Request.Headers.Referer.Any()
? new Uri(context.Request.Headers.Referer.FirstOrDefault()!) ? new Uri(context.Request.Headers.Referer.ToString())
: null : null
}; };
request.Content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ev))); var json = JsonConvert.SerializeObject(ev, new JsonSerializerSettings()
request.Content.Headers.ContentType = new("application/json"); {
NullValueHandling = NullValueHandling.Ignore
});
_logger.LogDebug("Sending pageview {request}", request.ToString()); request.Content = new StringContent(json, Encoding.UTF8, "application/json");
_logger.LogDebug("Sending pageview {request} {json}", request.ToString(), json);
var rsp = await _client.SendAsync(request); var rsp = await _client.SendAsync(request);
if (!rsp.IsSuccessStatusCode) if (!rsp.IsSuccessStatusCode)
{ {