public static List<TaggableSource> GetMeetupGroups(Calinfo calinfo, int delay, Dictionary<string, string> settings)
{
var meetup_key = settings["meetup_api_key"];
var template = "https://api.meetup.com/2/groups?key={0}&lat={1}&lon={2}&radius={3}&page=200";
var url = String.Format(template,
meetup_key,
calinfo.lat,
calinfo.lon,
calinfo.radius);
var json = HttpUtils.SlowFetchUrl(new Uri(url), delay).DataAsString();
var obj = JsonConvert.DeserializeObject<Dictionary<string,object>>(json);
var taggable_sources = new List<TaggableSource>();
string name_and_pk = "meetupsources";
foreach ( var group in ((JArray) obj["results"]).ToList() )
{
try
{
var name = (string) group["name"];
var urlname = (string)group["urlname"];
var id = group["id"].ToString();
var home_url = "http://www.meetup.com/" + urlname;
var ical_url = string.Format("http://www.meetup.com/{0}/events/ical/{1}/",
urlname,
Uri.EscapeDataString(name));
ical_url = ical_url.Replace("%20", "+"); // otherwise meetup weirdly reports a 505 error
var taggable = new TaggableSource(
name,
calinfo.id,
home_url,
ical_url,
calinfo.where);
taggable_sources.Add(taggable);
RememberTaggable(name_and_pk, id, taggable);
}
catch (Exception e)
{
GenUtils.PriorityLogMsg("exception", "FindMeetupGroups", e.Message + e.StackTrace);
}
}
return taggable_sources;
}