internal static void GetFlickrGroupIdFromGroupName(string groupname, string apiKey, GetFlickrGroupIdFromGroupNameCallback callback) { if (_flickrGroupNameCache.ContainsValue(groupname)) { callback((from kvp in _flickrGroupNameCache where kvp.Value == groupname select kvp.Key).FirstOrDefault()); return; } string groupurl = string.Format(CultureInfo.InvariantCulture, "http://www.flickr.com/groups/{0}", groupname); string query = string.Format(CultureInfo.InvariantCulture, "http://api.flickr.com/services/rest/?method=flickr.urls.lookupGroup&api_key={0}&url={1}", apiKey, groupurl); AsyncWebRequest request = new AsyncWebRequest(); request.Request(new Uri(query)); request.Result += (sender, e) => { if (e.Status != HttpStatusCode.OK) { callback(null); } try { string groupid = XDocument.Parse(e.Response).Element("rsp").Element("group").Attribute("id").Value; _flickrUserNameCache[groupid] = groupname; callback(groupid); } catch { callback(null); } }; }