// Activity stream retrieved for a user private void OnActivityStreamReturned(object sender, GetActivityStreamEventArgs e) { JObject rawJson = JObject.Parse(e.Response); JObject rootJson = (JObject)rawJson["items"]; ActivityItemsCount = int.Parse(rootJson["total"].ToString()); ActivityList.Clear(); foreach (var entry in rootJson["item"]) { JObject json = (JObject)entry; PhotoActivity activity = ActivityFactory.ActivityWithJObject(json); if (activity == null) continue; if (!ActivityList.Contains(activity)) { ActivityList.Add(activity); } } // Dispatch event if (ActivityStreamUpdated != null) ActivityStreamUpdated(this, null); }
public async void GetActivityStreamAsync() { if (isLoadingActivityStream) return; isLoadingActivityStream = true; string timestamp = DateTimeUtils.GetTimestamp(); string nonce = Guid.NewGuid().ToString().Replace("-", null); Dictionary<string, string> paramDict = new Dictionary<string, string>(); paramDict["method"] = "flickr.activity.userPhotos"; paramDict["format"] = "json"; paramDict["nojsoncallback"] = "1"; paramDict["oauth_consumer_key"] = consumerKey; paramDict["oauth_nonce"] = nonce; paramDict["oauth_signature_method"] = "HMAC-SHA1"; paramDict["oauth_timestamp"] = timestamp; paramDict["oauth_token"] = AccessToken; paramDict["oauth_version"] = "1.0"; paramDict["timeframe"] = "30d"; paramDict["page"] = "1"; paramDict["per_page"] = "25"; string paramString = GenerateParamString(paramDict); string signature = GenerateSignature("GET", AccessTokenSecret, "https://api.flickr.com/services/rest", paramString); string requestUrl = "https://api.flickr.com/services/rest?" + paramString + "&oauth_signature=" + signature; HttpWebResponse response = await DispatchRequest("GET", requestUrl, null).ConfigureAwait(false); using (StreamReader reader = new StreamReader(response.GetResponseStream())) { isLoadingActivityStream = false; if (response.StatusCode != HttpStatusCode.OK) { HandleHTTPException(response); return; } string jsonString = await reader.ReadToEndAsync().ConfigureAwait(false); if (!TryHandleResponseException(jsonString, () => { GetActivityStreamAsync(); })) return; GetActivityStreamEventArgs args = new GetActivityStreamEventArgs(); args.Response = jsonString; ActivityStreamReturned.DispatchEvent(this, args); } }