async Task TrackSessionActivityAsync(HttpContext context) { if (context.Request.Path.StartsWithSegments("/.analytics")) { // don't track activity to activity tracking endpoints return; } var session = (Guid)context.Items[SessionKey]; var kasbahWebContext = context.GetKasbahWebContext(); context.Request.Headers.TryGetValue("User-Agent", out var userAgent); context.Request.Headers.TryGetValue("Referer", out var referrer); var data = new { url = $"{context.Request.Path}{context.Request.QueryString}", site = kasbahWebContext.Site?.Alias, node = kasbahWebContext.Node?.Id, version = kasbahWebContext.Node?.PublishedVersion, ip = RemoteIp(context), userAgent = userAgent.FirstOrDefault(), referrer = referrer.FirstOrDefault() }; await _trackingService.TrackSessionActivityAsync(session, "request", data); }
public async Task TrackSessionActivityAsync([FromBody] TrackSessionActivityRequest ev) => await _trackingService.TrackSessionActivityAsync(HttpContext.GetCurrentSessionId(), ev.Type, ev.Data);