public static async Task<IList<VenueItem>> GetVenuesNear(string apiKey, string latlon, decimal? lat, decimal? lon, int? id, string place, int? distance, Measure? measure, VenueType? venueType) { if (string.IsNullOrEmpty(apiKey)) { throw new ArgumentNullException(nameof(apiKey)); } string method = $"{ParentMethod}.getvenuesnear"; var parameters = new Dictionary<string, string> { { "method", method }, { "apikey", apiKey } }; var requestUrl = $"{Api}"; var atLeastOne = false; if (!string.IsNullOrEmpty(latlon)) { parameters.Add("latlon", latlon); atLeastOne = true; } if (lat != null && lon != null) { parameters.Add("lat", lat.ToString()); parameters.Add("lon", lon.ToString()); atLeastOne = true; } if (id != null) { parameters.Add("id", id.ToString()); atLeastOne = true; } if (!string.IsNullOrEmpty(place)) { parameters.Add("place", place); atLeastOne = true; } if (!atLeastOne) { throw new ArgumentException("Must specify at least one: latlon, lat/lon, id, or place."); } if (distance != null) { parameters.Add("distance", distance.ToString()); } if (measure != null) { switch (measure) { case Measure.Miles: parameters.Add("measure", ((int)Measure.Miles).ToString()); break; case Measure.Kilometers: parameters.Add("measure", ((int)Measure.Kilometers).ToString()); break; default: throw new ArgumentOutOfRangeException(nameof(measure), measure, null); } } if (venueType != null) { switch (venueType) { case VenueType.All: parameters.Add("measure", ((int)VenueType.All).ToString()); break; case VenueType.Bookstores: parameters.Add("measure", ((int)VenueType.Bookstores).ToString()); break; case VenueType.Libraries: parameters.Add("measure", ((int)VenueType.Libraries).ToString()); break; case VenueType.FairsAndFestivals: parameters.Add("measure", ((int)VenueType.FairsAndFestivals).ToString()); break; case VenueType.Other: parameters.Add("measure", ((int)VenueType.Other).ToString()); break; default: throw new ArgumentOutOfRangeException(nameof(venueType), venueType, null); } } return await GetWebResultAsList<VenuesResponse, VenuesLtml, VenueItem>(requestUrl, parameters); }
public async Task<IList<VenueItem>> GetVenuesNear(string latlon, decimal? lat, decimal? lon, int? id, string place, int? distance, Measure? measure, VenueType? venueType) { return await GetVenuesNear(ApiKey, latlon, lat, lon, id, place, distance, measure, venueType); }