public ITrackSearchRequest FillTrackSearchGaps(ITrackSearchRequest userRequest) { var utSearch = userRequest.SearchEvent.DeepCopyUTSearch(); //order matters! IUTSessionConfig mergedSessionConfig = this.SessionConfigMerger.FillSessionConfigGaps(userRequest.SessionConfig); var utEvent = this.ApplyActiveInteraction(utSearch, mergedSessionConfig); utEvent = this.ApplyDeviceIdentifier(utEvent); utSearch = new UTSearch(utEvent, utSearch.Keywords); return(new TrackSearchParameters(mergedSessionConfig, utSearch)); }
public async Task <UTResponse> TrackSearchEventAsync(ITrackSearchRequest request, CancellationToken cancelToken = default(CancellationToken)) { BaseValidator.CheckNullAndThrow(request, this.GetType().Name + ".SearchEventRequest"); ITrackSearchRequest requestCopy = request.DeepCopySearchRequest(); ITrackSearchRequest autocompletedRequest = this.requestMerger.FillTrackSearchGaps(requestCopy); //FIXME: @igk if (this.InteractionNotExists()) { return(await this.CreateInteractionAndSentEventAsync(request.SearchEvent, cancelToken)); } var urlBuilder = new TrackEventUrlBuilder <ITrackSearchRequest>(this.utGrammar); var taskFlow = new TrackSearchTask(urlBuilder, this.httpClient); var response = await RestApiCallFlow.LoadRequestFromNetworkFlow(autocompletedRequest, taskFlow, cancelToken); this.CheckResponseForValidInteraction(response); return(response); }