public ITrackPageViewRequest FillTrackPageViewGaps(ITrackPageViewRequest userRequest) { var utPageView = userRequest.PageView.DeepCopyUTPageView(); //order matters! IUTSessionConfig mergedSessionConfig = this.SessionConfigMerger.FillSessionConfigGaps(userRequest.SessionConfig); var utEvent = this.ApplyActiveInteraction(utPageView, mergedSessionConfig); utEvent = this.ApplyDeviceIdentifier(utEvent); utPageView = new UTPageView(utEvent, utPageView.ItemLanguage, utPageView.ItemVersion, utPageView.Url, utPageView.SitecoreRenderingDevice); return(new TrackPageViewParameters(mergedSessionConfig, utPageView)); }
public async Task <UTResponse> TrackPageViewEventAsync(ITrackPageViewRequest request, CancellationToken cancelToken = default(CancellationToken)) { BaseValidator.CheckNullAndThrow(request, this.GetType().Name + ".PageViewRequest"); ITrackPageViewRequest requestCopy = request.DeepCopyTrackPageViewRequest(); ITrackPageViewRequest autocompletedRequest = this.requestMerger.FillTrackPageViewGaps(requestCopy); //FIXME: @igk if (this.InteractionNotExists()) { return(await this.CreateInteractionAndSentEventAsync(request.PageView, cancelToken)); } var urlBuilder = new TrackEventUrlBuilder <ITrackPageViewRequest>(this.utGrammar); var taskFlow = new TrackPageViewTask(urlBuilder, this.httpClient); var response = await RestApiCallFlow.LoadRequestFromNetworkFlow(autocompletedRequest, taskFlow, cancelToken); this.CheckResponseForValidInteraction(response); return(response); }