public static List<TaggableSource> GetEventfulVenues(Calinfo calinfo, int min_per_venue, Dictionary<string, string> settings) { var collector = new Collector(calinfo, settings); string args = collector.MakeEventfulArgs(calinfo.where, 100, ""); string method = "venues/search"; var xdoc = collector.CallEventfulApi(method, args); var str_page_count = XmlUtils.GetXeltValue(xdoc.Root, ElmcityUtils.Configurator.no_ns, "page_count"); int page_count = Convert.ToInt16(str_page_count); var ns = ElmcityUtils.Configurator.no_ns; var results = from venue in collector.EventfulIterator(page_count, args, "venues/search", "venue") select new { id = venue.Attribute("id").Value, name = XmlUtils.GetXeltValue(venue, ns, "name"), city_name = XmlUtils.GetXeltValue(venue, ns, "city_name").ToLower(), count = Convert.ToInt32(XmlUtils.GetXeltValue(venue, ns, "event_count")), home_url = XmlUtils.GetXeltValue(venue, ns, "url") }; var venues = new List<TaggableSource>(); var name_and_pk = "eventfulsources"; Parallel.ForEach(source: results, body: (venue) => { //if (venue.city_name != calinfo.City) if ( ! calinfo.City.Contains(venue.city_name) ) return; if (venue.count < min_per_venue) return; var home_url = Regex.Replace(venue.home_url, "\\?.+", ""); var ical_url = home_url.Replace("eventful.com/", "eventful.com/ical/"); var taggable = new TaggableSource(venue.name, calinfo.id, home_url, ical_url, venue.city_name); RememberTaggable(name_and_pk, venue.id, taggable); venues.Add(taggable); }); return venues; }
public void EventfulQueryYieldsNonzeroVenues() { string method = "venues/search"; var collector = new Collector(test_calinfo, settings); var xdoc = collector.CallEventfulApi(method, test_eventful_args); var venues = from venue in xdoc.Descendants("venue") select venue; Assert.That(venues.Count() > 0); }