Ejemplo n.º 1
0
        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))));
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
 public Task <IRestResponse> CallSearchEventsAsync(SearchEventsRequest request)
 {
     return(CallSearchEventsAsync((IApiRequest)request));
 }
Ejemplo n.º 8
0
 public Task <SearchEventsResponse> SearchEventsAsync(SearchEventsRequest request)
 {
     return(SearchEventsAsync((IApiRequest)request));
 }