Ejemplo n.º 1
0
        public async Task <EventsSearchApiResponse> GetEventsAsync(BaseSearchCriterias searchCriterias)
        {
            var values = await(new EventSearchEventbriteRequest(this, searchCriterias)).GetResponseAsync();

            await FillDescriptions(searchCriterias, values.Events);
            await FillVenues(searchCriterias, values.Events);

            return(values);
        }
Ejemplo n.º 2
0
 private async Task FillDescriptions(BaseSearchCriterias searchCriterias, IList <Event> events)
 {
     if (searchCriterias.RetrieveFullDescription)
     {
         try
         {
             //note: we cannot request a lot of
             // parrallel requests on most api's
             // that is considered 'rude' and often is throttled down.
             var tasks = events.Select(x => new { x, DescriptionTask = new EventDescriptionRequest(this, x.Id).GetResponseAsync() });
             await tasks.ForEachAsync(4, async (x) => x.x.LongDescription = new Model.TextHtmlString {
                 Html = (await x.DescriptionTask).Description
             });
         }
         catch (Exception ex)
         {
             Trace.TraceError("FillDescriptions failed with {0}", ex);
         }
     }
 }
Ejemplo n.º 3
0
        private async Task FillVenues(BaseSearchCriterias searchCriterias, IList <Event> events)
        {
            if (searchCriterias.RetrieveVenueInformation)
            {
                var venueIds = events
                               .Where(w => w.VenueId != null)
                               .Select(s => s.VenueId.Value).Distinct().ToArray();

                try
                {
                    var tasks          = venueIds.Select(x => new { key = x, VenueTask = new VenueRequest(this, x).GetResponseAsync() });
                    var concurrentDict = new ConcurrentDictionary <long, Venue>();
                    await tasks.ForEachAsync(4, async (x) =>
                    {
                        try
                        {
                            var venue = await x.VenueTask;
                            concurrentDict.TryAdd(x.key, venue);
                        }
                        catch (Exception ex)
                        {
                            Trace.TraceError($"Cannot associate venueid {x.key} with retrieved object {ex.Message}");
                        }
                    });

                    foreach (var @event in events)
                    {
                        if (@event.VenueId != null)
                        {
                            concurrentDict.TryGetValue(@event.VenueId.Value, out Venue venue);
                            @event.Venue = venue;
                        }
                    }
                }
                catch (Exception ex)
                {
                    Trace.TraceError("FillVenues failed with {0}", ex);
                }
            }
        }
Ejemplo n.º 4
0
 public AttendeeSearchApiResponse GetAttendees(double eventId, BaseSearchCriterias searchCriterias)
 {
     return(new AttendeeSearchEventbriteRequest(this, eventId, searchCriterias).GetResponse());
 }
Ejemplo n.º 5
0
 public EventsSearchApiResponse GetEvents(BaseSearchCriterias searchCriterias)
 {
     return(new EventSearchEventbriteRequest(this, searchCriterias).GetResponse());
 }
Ejemplo n.º 6
0
 public Task <AttendeeSearchApiResponse> GetAttendeesAsync(double eventId, BaseSearchCriterias searchCriterias)
 {
     return((new AttendeeSearchEventbriteRequest(this, eventId, searchCriterias)).GetResponseAsync());
 }
Ejemplo n.º 7
0
        public async Task <EventsSearchApiResponse> GetEventsByOrganization(long organisationId, BaseSearchCriterias searchCriterias)
        {
            var values = await(new EventsOrganizationRequest(this, organisationId, searchCriterias)).GetResponseAsync();

            await FillDescriptions(searchCriterias, values.Events);
            await FillVenues(searchCriterias, values.Events);

            return(values);
        }
Ejemplo n.º 8
0
 public Task <EventsSearchApiResponse> GetEventsByOrganization(long organisationId, BaseSearchCriterias searchCriterias)
 {
     return((new EventsOrganizationRequest(this, organisationId, searchCriterias)).GetResponseAsync());
 }
Ejemplo n.º 9
0
 public Task <EventsSearchApiResponse> GetEventsAsync(BaseSearchCriterias searchCriterias)
 {
     return((new EventSearchEventbriteRequest(this, searchCriterias)).GetResponseAsync());
 }