public ITrackInteractionRequest FillTrackInteractionGaps(ITrackInteractionRequest userRequest) { var utInteraction = userRequest.Interaction.DeepCopyUTInteraction(); IUTSessionConfig mergedSessionConfig = this.SessionConfigMerger.FillSessionConfigGaps(userRequest.SessionConfig); return(new TrackInteractionParameters(mergedSessionConfig, utInteraction)); }
public async Task <UTResponse> TrackInteractionAsync(ITrackInteractionRequest request, CancellationToken cancelToken) { BaseValidator.CheckNullAndThrow(request, this.GetType().Name + ".request"); ITrackInteractionRequest requestCopy = request.DeepCopyTrackInteractionRequest(); ITrackInteractionRequest autocompletedRequest = this.requestMerger.FillTrackInteractionGaps(requestCopy); var urlBuilder = new TrackInteractionUrlBuilder <ITrackInteractionRequest>(this.utGrammar); var taskFlow = new TrackInteractionTask(urlBuilder, this.httpClient); var response = await RestApiCallFlow.LoadRequestFromNetworkFlow(autocompletedRequest, taskFlow, cancelToken); if (response.Successful) { //@igk order matters this.sessionConfig = new UTSessionConfig(this.sessionConfig.InstanceUrl, response.Description); this.requestMerger = new UserRequestMerger(this.sessionConfig, this.defaultDeviceIdentifier); } return(response); }