private static void NextPage(this SearchEventsRequest originalRequest, SearchEventsResponse response) { const int pageIncrement = 1; if (response.Page.Number >= response.Page.TotalPages) { return; } var pageNumber = response.Page.Number + pageIncrement; originalRequest.AddQueryParameter(SearchEventsQueryParameters.page, pageNumber); if (response.Page.Size * pageNumber < ApiConstraints.MaxPagingDepth) { return; } var pageSize = response.Page.Size; while (pageSize * pageNumber >= ApiConstraints.MaxPagingDepth) { pageSize--; } originalRequest.AddQueryParameter(SearchEventsQueryParameters.size, pageSize > ApiConstraints.MinPageSize ? pageSize : ApiConstraints.MinPageSize); }
public async Task SearchEventsAsync_ShouldBuildRequestWithQueryParameters(SearchEventsQueryParameters key, string value) { var request = new SearchEventsRequest(); request.AddQueryParameter(new KeyValuePair <SearchEventsQueryParameters, string>(key, value)); await _sut.SearchEventsAsync(request); await Client .Received() .ExecuteTaskAsync <SearchEventsResponse>( Arg.Is <RestRequest>( restRequest => restRequest.Parameters.Any( p => p.Name == key.ToString() && Equals(p.Value, value)))); }
public async Task Events_SearchEventsAsync_ShouldReturnResult_ForCanadianMarkets(Markets.Canada market) { SearchEventsResponse result; using (var sut = _factory.Create <DiscoveryApi>(_config)) { var request = new SearchEventsRequest(); request.AddQueryParameter(SearchEventsQueryParameters.marketId, market.GetMarketId()); await Task.Delay(ApiConstraints.RequiredRequestDelay); result = await sut.Events.SearchEventsAsync(request); } result.ShouldNotBeNull(); }
public void SearchEventsAsync_ShouldReturnSearchEventsRequest() { var request = new SearchEventsRequest(); var searchEventsResponse = _sut.SearchEventsAsync(request).Result; Assert.NotNull(searchEventsResponse); Assert.IsType <SearchEventsResponse>(searchEventsResponse); Assert.IsAssignableFrom <IApiResponse>(searchEventsResponse); var iApiResponse = _sut.CallSearchEventsAsync(request).Result; Assert.NotNull(iApiResponse); Assert.IsAssignableFrom <IRestResponse>(iApiResponse); var jobject = SimpleJson.SimpleJson.SerializeObject(searchEventsResponse); Approvals.VerifyJson(jobject); }
internal List <TicketmasterEvent> SearchEvent(string latLong, string unit, string radius, DateTime startDate) { var list = new List <TicketmasterEvent>(); try { var request = new SearchEventsRequest(); request.AddQueryParameter(SearchEventsQueryParameters.latlong, latLong); request.AddQueryParameter(SearchEventsQueryParameters.unit, unit); request.AddQueryParameter(SearchEventsQueryParameters.radius, radius); request.AddQueryParameter(SearchEventsQueryParameters.startDateTime, startDate.ToString("yyyy-MM-ddThh:mm:ssZ")); request.AddQueryParameter(SearchEventsQueryParameters.size, "50"); SearchEventsResponse result = EventsClient.SearchEventsAsync(request).GetAwaiter().GetResult(); foreach (var _event in result._embedded.Events) { var newEvent = new TicketmasterEvent(); newEvent.Name = _event.Name; newEvent.Url = _event.Url; newEvent.ExternalId = _event.Id; newEvent.ImageUrl = _event.Images.First(x => x.Ratio == "16_9").Url; newEvent.Promoter = _event.Promoter.Name; newEvent.SalesStartDate = _event.Sales.Public.StartDateTime; newEvent.SalesEndDate = _event.Sales.Public.EndDateTime; newEvent.StartDate = _event.Dates.Start.DateTime; newEvent.Segment = _event.Classifications.First().Segment.Name; newEvent.SubGenre = _event.Classifications.First().SubGenre.Name; newEvent.Genre = _event.Classifications.First().Genre.Name; list.Add(newEvent); } return(list); } catch (Exception) { return(null); } }
public static async Task <SearchEventsResponse> AggregateSearchResultsAsync( this IEventsClient client, SearchEventsRequest originalRequest ) { var aggregatedEvents = new List <Event>(); var result = await client.SearchEventsAsync(originalRequest); aggregatedEvents.AddRange(result._embedded.Events); while (result.Page.Number < result.Page.TotalPages) { originalRequest.NextPage(result); await Task.Delay(ApiConstraints.RequiredRequestDelay); result = await client.SearchEventsAsync(originalRequest); aggregatedEvents.AddRange(result._embedded.Events); } result._embedded.Events = aggregatedEvents; return(result); }
public Task <IRestResponse> CallSearchEventsAsync(SearchEventsRequest request) { return(CallSearchEventsAsync((IApiRequest)request)); }
public Task <SearchEventsResponse> SearchEventsAsync(SearchEventsRequest request) { return(SearchEventsAsync((IApiRequest)request)); }