Esempio n. 1
0
        public List<Tweet> FetchTweets()
        {
            string data = Query();
            if (string.IsNullOrWhiteSpace(data))
                return null;

            List<Tweet> fresh = new List<Tweet>();
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            Dictionary<string, object> parsed = serializer.Deserialize<Dictionary<string, object>>(data);

            long tempId;
            if (long.TryParse(parsed["max_id"].ToString(), out tempId) && tempId > maxId)
                maxId = tempId;

            if (parsed.ContainsKey("results"))
            {
                ArrayList results = parsed["results"] as ArrayList;
                foreach (object o in results)
                {
                    Dictionary<string, object> r = o as Dictionary<string, object>;
                    if (r.ContainsKey("from_user") && r["from_user"].ToString() == "WarframeAlerts")
                    {
                        if (r.ContainsKey("created_at") && r.ContainsKey("id") && r.ContainsKey("from_user_id") && r.ContainsKey("text"))
                        {
                            Tweet tweet = new Tweet();
                            tweet.Created = DateTime.Parse(r["created_at"].ToString());
                            tweet.Id = Convert.ToInt64(r["id"].ToString());
                            tweet.Author = r["from_user"].ToString();
                            tweet.AuthorId = Convert.ToInt64(r["from_user_id"].ToString());
                            tweet.Text = r["text"].ToString();
                            fresh.Add(tweet);
                        }
                    }
                }
            }

            if (fresh.Count > 0)
                return fresh;

            return null;
        }
Esempio n. 2
0
        /// <summary>
        /// Checks for new tweets and returns them in a list if any are found.
        /// </summary>
        /// <param name="fetchAll">Specifies whether all tweets should be collected or just unread tweets.</param>
        /// <param name="limit">Specifies the maximum amount of tweets that will be collected.</param>
        public List<Tweet> FetchTweets(bool fetchAll, int limit = 15)
        {
            string url = String.Format("{0}&rpp={1}", queryUrl, limit);
            if (fetchAll && maxId != -1)
                url += "&since_id=" + maxId.ToString();

            string data = client.DownloadString(HttpUtility.UrlPathEncode(url));
            if (string.IsNullOrWhiteSpace(data))
                return null;

            List<Tweet> fresh = new List<Tweet>();
            Dictionary<string, object> parsed = serializer.Deserialize<Dictionary<string, object>>(data);

            long tempId;
            if (parsed.ContainsKey("max_id") && long.TryParse(parsed["max_id"].ToString(), out tempId) && tempId > maxId)
                maxId = tempId;

            if (parsed.ContainsKey("results"))
            {
                ArrayList results = parsed["results"] as ArrayList;
                foreach (object o in results)
                {
                    Dictionary<string, object> r = o as Dictionary<string, object>;
                    if (r.ContainsKey("from_user") && r["from_user"].ToString() == "WarframeAlerts")
                    {
                        if (r.ContainsKey("created_at") && r.ContainsKey("id") && r.ContainsKey("from_user_id") && r.ContainsKey("text"))
                        {
                            Tweet tweet = new Tweet();
                            tweet.Created = DateTime.Parse(r["created_at"].ToString());
                            tweet.Id = Convert.ToInt64(r["id"].ToString());
                            tweet.Author = r["from_user"].ToString();
                            tweet.AuthorId = Convert.ToInt64(r["from_user_id"].ToString());
                            tweet.Text = r["text"].ToString();
                            fresh.Add(tweet);
                        }
                    }
                }
            }
            lastQuery = DateTime.Now;
            return fresh;
        }