//=================================================================================================== //最近の自身のホームタイムラインを取得するメソッド //返り値:取得したツイートのリスト 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; //============================================================= }
//指定したスクリーンネームのユーザーのツイートを取得するメソッド //返り値:取得したツイートのリスト //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); //============================================================= }
public TweetStreamArgs(Tweet Tweet) { this.Tweet = Tweet; }
//=================================================================================================== //指定された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); //============================================================= }