Exemplo n.º 1
0
        //===================================================================================================
        //最近の自身のホームタイムラインを取得するメソッド
        //返り値:取得したツイートのリスト
        public List<Tweet> GetHomeTimeline()
        {
            string oauthNonce = GenNonce ();
            string timeStamp = GenTimestamp ();

            //署名作成=============================================================================================
            //パラメータ==================
            SortedDictionary<string, string> parameters = new SortedDictionary<string, string> ();
            parameters.Add ("oauth_consumer_key", ConsumerKey);
            parameters.Add ("oauth_signature_method", "HMAC-SHA1");
            parameters.Add ("oauth_timestamp", timeStamp);
            parameters.Add ("oauth_nonce", oauthNonce);
            parameters.Add ("oauth_version", "1.0");
            parameters.Add ("oauth_token", AccessToken);
            //==========================

            string signature = GenSignature ("GET", "https://api.twitter.com/1.1/statuses/home_timeline.json", parameters, ConsumerSecret, AccessTokenSecret);

            //===================================================================================================

            string authHeader = GenAuthHeader (ConsumerKey, oauthNonce, signature, timeStamp, AccessToken);
            //			//ヘッダ作成===========================================================================================
            //			string authHeader = string.Format (
            //				                    "OAuth oauth_consumer_key=\"{0}\", " +
            //				                    "oauth_nonce=\"{1}\", " +
            //				                    "oauth_signature=\"{2}\", " +
            //				                    "oauth_signature_method=\"{3}\", " +
            //				                    "oauth_timestamp=\"{4}\", " +
            //				                    "oauth_token=\"{5}\", " +
            //				                    "oauth_version=\"{6}\""
            //				//APIKeyなども形式的に念のため全てURLエンコードする
            //				, Uri.EscapeDataString (ConsumerKey)
            //				, Uri.EscapeDataString (oauthNonce)
            //				, Uri.EscapeDataString (signature)
            //				, Uri.EscapeDataString ("HMAC-SHA1")
            //				, Uri.EscapeDataString (timeStamp)
            //				, Uri.EscapeDataString (AccessToken)
            //				, Uri.EscapeDataString ("1.0"));
            //			//===================================================================================================

            //get送信=======================================================
            string reqUrl = "https://api.twitter.com/1.1/statuses/home_timeline.json";
            ServicePointManager.Expect100Continue = false;
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create (reqUrl) as HttpWebRequest;
            req.Method = "GET";
            req.ContentType = "application/x-www-form-urlencoded";
            req.Host = "api.twitter.com";
            req.Headers.Add ("Authorization", authHeader);

            HttpWebResponse res = (HttpWebResponse)req.GetResponse ();
            Stream resStream = res.GetResponseStream ();
            StreamReader sr = new StreamReader (resStream);
            //JSONデータを取得
            string resultJson = sr.ReadToEnd ();
            resStream.Close ();
            sr.Close ();
            //JSONデータのパース
            var root = JsonConvert.DeserializeObject<List<RootObject>> (resultJson);
            List<Tweet> resultList = new List<Tweet> ();
            foreach (RootObject r in root) {

                //debug
                Console.WriteLine ("");
                Console.WriteLine (r.id);
                Console.WriteLine (r.text);
                Console.WriteLine (r.user.screen_name);
                Console.WriteLine (r.user.name);
                Console.WriteLine ("");

                User usr = new User (r.user.name, r.user.screen_name);
                Tweet tweet = new Tweet ((long)r.id, r.text, usr);
                resultList.Add (tweet);
            }
            return resultList;
            //=============================================================
        }
Exemplo n.º 2
0
        //指定したスクリーンネームのユーザーのツイートを取得するメソッド
        //返り値:取得したツイートのリスト
        //screeNmae:スクリーンネーム
        //返り値:取得したツイートのリスト
        public List <Tweet> GetUsrTimeline(string screenName)
        {
            string oauthNonce = GenNonce();
            string timeStamp  = GenTimestamp();

            //署名作成=============================================================================================
            //パラメータ==================
            SortedDictionary <string, string> parameters = new SortedDictionary <string, string> ();

            parameters.Add("oauth_consumer_key", ConsumerKey);
            parameters.Add("oauth_signature_method", "HMAC-SHA1");
            parameters.Add("oauth_timestamp", timeStamp);
            parameters.Add("oauth_nonce", oauthNonce);
            parameters.Add("oauth_version", "1.0");
            parameters.Add("oauth_token", AccessToken);
            parameters.Add("screen_name", screenName);
            //==========================

            //==========================
            string signature = GenSignature("GET", "https://api.twitter.com/1.1/statuses/user_timeline.json", parameters, ConsumerSecret, AccessTokenSecret);

//			//<参考> 署名作成の中身======
//			//署名データ
//			string signatureData =
//				"GET" + "&" +
//				Uri.EscapeDataString ("https://api.twitter.com/1.1/statuses/user_timeline.json") + "&" +
//				Uri.EscapeDataString (JoinParameters (parameters));
//			//署名キー
//			string signatureKey = Uri.EscapeDataString (ConsumerSecret) + "&" + Uri.EscapeDataString (AccessTokenSecret);
//			//ハッシュ関数生成
//			HMACSHA1 hMACSHA1 = new HMACSHA1 (Encoding.UTF8.GetBytes (signatureKey));
//			//暗号化
//			byte[] bArray = hMACSHA1.ComputeHash (Encoding.UTF8.GetBytes (signatureData));
//			//ベース64エンコード
//			string signature = Convert.ToBase64String (bArray);
//			//========================
            //==========================

            //===================================================================================================

            string authHeader = GenAuthHeader(ConsumerKey, oauthNonce, signature, timeStamp, AccessToken);
//			//ヘッダ作成====================================================
//			string authHeader = string.Format (
//				                    "OAuth oauth_consumer_key=\"{0}\", " +
//				                    "oauth_nonce=\"{1}\", " +
//				                    "oauth_signature=\"{2}\", " +
//				                    "oauth_signature_method=\"{3}\", " +
//				                    "oauth_timestamp=\"{4}\", " +
//				                    "oauth_token=\"{5}\", " +
//				                    "oauth_version=\"{6}\""
//				//APIKeyなども形式的に念のため全てURLエンコードする
//				, Uri.EscapeDataString (ConsumerKey)
//				, Uri.EscapeDataString (oauthNonce)
//				, Uri.EscapeDataString (signature)
//				, Uri.EscapeDataString ("HMAC-SHA1")
//				, Uri.EscapeDataString (timeStamp)
//				, Uri.EscapeDataString (AccessToken)
//				, Uri.EscapeDataString ("1.0"));
//			//=============================================================


            //get送信=======================================================
            string reqUrl = "https://api.twitter.com/1.1/statuses/user_timeline.json?&screen_name=" + screenName;

            ServicePointManager.Expect100Continue = false;
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(reqUrl) as HttpWebRequest;

            req.Method      = "GET";
            req.ContentType = "application/x-www-form-urlencoded";
            req.Host        = "api.twitter.com";
            req.Headers.Add("Authorization", authHeader);

            HttpWebResponse res       = (HttpWebResponse)req.GetResponse();
            Stream          resStream = res.GetResponseStream();
            StreamReader    sr        = new StreamReader(resStream);
            //JSONデータを取得
            string resultJson = sr.ReadToEnd();

            resStream.Close();
            sr.Close();
            //JSONデータのパース
            var          root       = JsonConvert.DeserializeObject <List <RootObject> > (resultJson);
            List <Tweet> resultList = new List <Tweet> ();

            foreach (RootObject r in root)
            {
                //debug
                Console.WriteLine("");
                Console.WriteLine(r.id);
                Console.WriteLine(r.text);
                Console.WriteLine(r.user.screen_name);
                Console.WriteLine(r.user.name);
                Console.WriteLine("");

                User  usr   = new User(r.user.name, r.user.screen_name);
                Tweet tweet = new Tweet((long)r.id, r.text, usr);
                resultList.Add(tweet);
            }
            return(resultList);
            //=============================================================
        }
Exemplo n.º 3
0
 public TweetStreamArgs(Tweet Tweet)
 {
     this.Tweet = Tweet;
 }
Exemplo n.º 4
0
        //===================================================================================================

        //指定されたidのツイートを取得するメソッド
        //id:ツイートID
        //返り値:ツイート
        public Tweet GetTweet(long id)
        {
            string oauthNonce = GenNonce();
            string timeStamp  = GenTimestamp();

            //署名作成=============================================================================================
            //パラメータ==================
            SortedDictionary <string, string> parameters = new SortedDictionary <string, string> ();

            parameters.Add("oauth_consumer_key", ConsumerKey);
            parameters.Add("oauth_signature_method", "HMAC-SHA1");
            parameters.Add("oauth_timestamp", timeStamp);
            parameters.Add("oauth_nonce", oauthNonce);
            parameters.Add("oauth_version", "1.0");
            parameters.Add("oauth_token", AccessToken);
            parameters.Add("id", id.ToString());
            //==========================

            string signature = GenSignature("GET", "https://api.twitter.com/1.1/statuses/show.json", parameters, ConsumerSecret, AccessTokenSecret);

            //===================================================================================================

            string authHeader = GenAuthHeader(ConsumerKey, oauthNonce, signature, timeStamp, AccessToken);
//			//ヘッダ作成===========================================================================================
//			string authHeader = string.Format (
//				                    "OAuth oauth_consumer_key=\"{0}\", " +
//				                    "oauth_nonce=\"{1}\", " +
//				                    "oauth_signature=\"{2}\", " +
//				                    "oauth_signature_method=\"{3}\", " +
//				                    "oauth_timestamp=\"{4}\", " +
//				                    "oauth_token=\"{5}\", " +
//				                    "oauth_version=\"{6}\""
//				//APIKeyなども形式的に念のため全てURLエンコードする
//				, Uri.EscapeDataString (ConsumerKey)
//				, Uri.EscapeDataString (oauthNonce)
//				, Uri.EscapeDataString (signature)
//				, Uri.EscapeDataString ("HMAC-SHA1")
//				, Uri.EscapeDataString (timeStamp)
//				, Uri.EscapeDataString (AccessToken)
//				, Uri.EscapeDataString ("1.0"));
//			//===================================================================================================


            //get送信=======================================================
            //パラメータinclude_rts=1は推奨値
            string reqUrl = "https://api.twitter.com/1.1/statuses/show.json?&id=" + id.ToString();

            ServicePointManager.Expect100Continue = false;
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(reqUrl) as HttpWebRequest;

            req.Method      = "GET";
            req.ContentType = "application/x-www-form-urlencoded";
            req.Host        = "api.twitter.com";
            req.Headers.Add("Authorization", authHeader);

            HttpWebResponse res       = (HttpWebResponse)req.GetResponse();
            Stream          resStream = res.GetResponseStream();
            StreamReader    sr        = new StreamReader(resStream);
            //JSONデータを取得
            string resultJson = sr.ReadToEnd();

            resStream.Close();
            sr.Close();
            //JSONデータのパース
            var   root        = JsonConvert.DeserializeObject <RootObject> (resultJson);
            User  usr         = new User(root.user.name, root.user.screen_name);
            Tweet resultTweet = new Tweet((long)root.id, root.text, usr);

            //debug
            Console.WriteLine("");
            Console.WriteLine(root.id);
            Console.WriteLine(root.text);
            Console.WriteLine(root.user.screen_name);
            Console.WriteLine(root.user.name);
            Console.WriteLine("");

            return(resultTweet);
            //=============================================================
        }