public override void ProcessRequest(HttpContext context) { base.ProcessRequest(context); if (context.Response.StatusCode != 200) { return; } string key = context.Request.Url.OriginalString; if (context.Cache[key] != null) { return; } MediaRequestTrackingInformation info = new MediaRequestTrackingInformation(this.GetMediaRequest(context.Request)); if (info.IsTrackedRequest()) { return; } ResponseFilterStream filter = new ResponseFilterStream(context.Response.Filter); filter.TransformStream += stream => CachingFilter(stream, context, key); context.Response.Filter = filter; }
public void OnMediaRequest(object sender, EventArgs args) { Assert.ArgumentNotNull(sender, "sender"); Assert.ArgumentNotNull(args, "args"); if (!AnalyticsSettings.Enabled) return; var site = Context.Site; if (site == null || !site.EnableAnalytics) return; var request = Event.ExtractParameter(args, 0) as Sitecore.Resources.Media.MediaRequest; if (request == null) return; var trackingInformation = new MediaRequestTrackingInformation(request); var mediaItem = trackingInformation.GetMediaItem(); if (mediaItem == null) return; if (!IsTrackedForDownloads(mediaItem)) return; Log.Info("Triggering download event", this); using (new ContextItemSwitcher(mediaItem)) { try { //if (!Tracker.IsActive) // return; //var previousPage = Tracker.Current.Session.Interaction.PreviousPage; //if (previousPage == null) // return; //if (Tracker.Current.Session.Interaction.CurrentPage.PageEvents.All(pageEvent => pageEvent.PageEventDefinitionId != AnalyticsIds.DownloadEvent.Guid)) // return; //Log.Info("Download event is not defined on the page, triggering programatically", this); //var item = mediaItem.Database.GetItem(AnalyticsIds.DownloadEvent); //if (item == null) // return; //var eventItem = new PageEventItem(item); //previousPage.Register(eventItem); } catch (Exception ex) { Log.Error("Media request analytics failed", ex, this.GetType()); } } Log.Info("Triggered download event", this); }