public ITrackCampaignRequest FillTrackCampaignGaps(ITrackCampaignRequest userRequest) { var utCampaign = userRequest.Campaign.DeepCopyUTCampaign(); //order matters! IUTSessionConfig mergedSessionConfig = this.SessionConfigMerger.FillSessionConfigGaps(userRequest.SessionConfig); var utEvent = this.ApplyActiveInteraction(utCampaign, mergedSessionConfig); utEvent = this.ApplyDeviceIdentifier(utEvent); utCampaign = new UTCampaign(utEvent, utCampaign.CampaignDefinitionId); return(new TrackCampaignParameters(mergedSessionConfig, utCampaign)); }
public async Task <UTResponse> TrackCampaignEventAsync(ITrackCampaignRequest request, CancellationToken cancelToken = default(CancellationToken)) { BaseValidator.CheckNullAndThrow(request, this.GetType().Name + ".CampaignRequest"); ITrackCampaignRequest requestCopy = request.DeepCopyTrackCampaignRequest(); ITrackCampaignRequest autocompletedRequest = this.requestMerger.FillTrackCampaignGaps(requestCopy); //FIXME: @igk if (this.InteractionNotExists()) { return(await this.CreateInteractionAndSentEventAsync(request.Campaign, cancelToken)); } var urlBuilder = new TrackEventUrlBuilder <ITrackCampaignRequest>(this.utGrammar); var taskFlow = new TrackCampaignTask(urlBuilder, this.httpClient); var response = await RestApiCallFlow.LoadRequestFromNetworkFlow(autocompletedRequest, taskFlow, cancelToken); this.CheckResponseForValidInteraction(response); return(response); }