private TwitterRequestData ParseResponseData(TwitterRequestData Data) { if (Data == null || Data.Response == string.Empty) { return(null); } try { XmlDocument ResultXmlDocument = new XmlDocument(); ResultXmlDocument.LoadXml(Data.Response); if (ResultXmlDocument.DocumentElement != null) { switch (ResultXmlDocument.DocumentElement.Name.ToLower()) { case "status": Data.Statuses = new TwitterStatusCollection(); Data.Statuses.Add(ParseStatusNode(ResultXmlDocument.DocumentElement)); break; case "statuses": Data.Statuses = ParseStatuses(ResultXmlDocument.DocumentElement); break; case "users": Data.Users = ParseUsers(ResultXmlDocument.DocumentElement); break; case "user": Data.Users = new TwitterUserCollection(); Data.Users.Add(ParseUserNode(ResultXmlDocument.DocumentElement)); break; case "direct-messages": Data.Statuses = new TwitterStatusCollection(); Data.Statuses = ParseDirectMessages(ResultXmlDocument.DocumentElement); break; case "nil-classes": // do nothing, this seems to be a null response i.e. no messages since break; case "error": throw new Exception("Error response from Twitter: " + ResultXmlDocument.DocumentElement.InnerText); default: throw new Exception("Invalid response from Twitter"); } } } catch (Exception ex) { throw new TwitterizerException("Error Parsing Twitter Response.", Data, ex); } return(Data); }
/// <summary> /// Returns the 20 most recent statuses from non-protected users who have set a custom user icon. Does not require authentication. /// </summary> /// <returns></returns> public TwitterStatusCollection PublicTimeline() { TwitterRequest Request = new TwitterRequest(); TwitterRequestData Data = new TwitterRequestData(); Data.ActionUri = new Uri(Twitter.Urls.PublicTimelineUrl); Data = Request.PerformWebRequest(Data); return(Data.Statuses); }
/// <summary> /// Destroys the status specified by the required ID parameter. The authenticating user must be the author of the specified status. /// </summary> /// <param name="ID">Required. The ID of the status to destroy.</param> public void Destroy(int ID) { TwitterRequest Request = new TwitterRequest(); TwitterRequestData Data = new TwitterRequestData(); Data.UserName = userName; Data.Password = password; Data.ActionUri = new Uri( string.Format(Twitter.Urls.DestroyStatusUrl, ID)); Request.PerformWebRequest(Data); }
/// <summary> /// Returns the authenticating user's followers, each with current status. /// </summary> /// <param name="Parameters">Optional. Accepts ID and Page parameters.</param> /// <returns></returns> public TwitterUserCollection Followers(TwitterParameters Parameters) { TwitterRequest Request = new TwitterRequest(); TwitterRequestData Data = new TwitterRequestData(); Data.UserName = userName; Data.Password = password; string actionUri = (Parameters == null ? Twitter.Urls.FollowersUrl : Parameters.BuildActionUri(Twitter.Urls.FollowersUrl)); Data.ActionUri = new Uri(actionUri); Data = Request.PerformWebRequest(Data); return Data.Users; }
/// <summary> /// Returns a single status, specified by the id parameter /// </summary> /// <param name="ID">id. Required. The numerical ID of the status you're trying to retrieve.</param> /// <returns></returns> public TwitterUser Show(string ID) { TwitterRequest Request = new TwitterRequest(); TwitterRequestData Data = new TwitterRequestData(); Data.UserName = userName; Data.Password = password; Data.ActionUri = new Uri( string.Format(Twitter.Urls.ShowStatusUrl, ID)); Data = Request.PerformWebRequest(Data, "GET"); return(Data.Users[0]); }
/// <summary> /// Returns up to 100 of the authenticating user's friends who have most recently updated, each with current status. /// </summary> /// <param name="Parameters">Optional. Accepts ID, Page, and Since parameters.</param> /// <returns></returns> public TwitterUserCollection Friends(TwitterParameters Parameters) { // page 0 == page 1 is the start TwitterRequest Request = new TwitterRequest(); TwitterRequestData Data = new TwitterRequestData(); Data.UserName = userName; Data.Password = password; string actionUri = (Parameters == null ? Twitter.Urls.FriendsUrl : Parameters.BuildActionUri(Twitter.Urls.FriendsUrl)); Data.ActionUri = new Uri(actionUri); Data = Request.PerformWebRequest(Data); return(Data.Users); }
/// <summary> /// Returns a list of the most recent direct messages sent by the authenticating user. /// </summary> /// <param name="Parameters">Accepts Since, SinceID, and Page parameters</param> /// <returns></returns> public TwitterStatusCollection DirectMessagesSent(TwitterParameters Parameters) { TwitterRequest Request = new TwitterRequest(); TwitterRequestData Data = new TwitterRequestData(); Data.UserName = userName; Data.Password = password; string actionUri = (Parameters == null ? Twitter.Urls.SentDirectMessagesUrl : Parameters.BuildActionUri(Twitter.Urls.SentDirectMessagesUrl)); Data.ActionUri = new Uri(actionUri); Data = Request.PerformWebRequest(Data); return(Data.Statuses); }
/// <summary> /// Updates the authenticating user's status. /// </summary> /// <param name="Status">Required. The text of your status update.</param> /// <param name="InReplyToStatusID">Optional. The ID of an existing status that the status to be posted is in reply to.</param> /// <returns></returns> public TwitterStatus Update(string Status, long?InReplyToStatusID) { TwitterRequest Request = new TwitterRequest(); TwitterRequestData Data = new TwitterRequestData(); Data.UserName = userName; Data.Password = password; Data.Source = source; Data.ActionUri = new Uri( string.Format(Twitter.Urls.UpdateUrl, HttpUtility.UrlEncode(Status), source, InReplyToStatusID.HasValue ? InReplyToStatusID.Value.ToString() : "")); Data = Request.PerformWebRequest(Data, "POST"); return(Data.Statuses[0]); }
public TwitterRequestData PerformWebRequest(TwitterRequestData Data, string HTTPMethod) { HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(Data.ActionUri); Request.Method = HTTPMethod; StreamReader readStream; // Some limitations Request.MaximumAutomaticRedirections = 4; Request.MaximumResponseHeadersLength = 4; Request.ContentLength = 0; // Set our credentials Request.Credentials = new NetworkCredential(Data.UserName, Data.Password); HttpWebResponse Response; // Get the respon try { Response = (HttpWebResponse)Request.GetResponse(); // Get the stream associated with the response. Stream receiveStream = Response.GetResponseStream(); // Pipes the stream to a higher level stream reader with the required encoding format. readStream = new StreamReader(receiveStream, Encoding.UTF8); Data.Response = readStream.ReadToEnd(); Data = ParseResponseData(Data); Response.Close(); readStream.Close(); } catch (Exception ex) { throw new TwitterizerException(ex.Message, Data, ex); } return(Data); }
public static bool VerifyCredentials(string username, string password) { if (string.IsNullOrEmpty(username)) { Console.Error.WriteLine("username empty"); } if (string.IsNullOrEmpty(password)) { Console.Error.WriteLine("password empty"); } TwitterRequest request = new TwitterRequest(); TwitterRequestData data = new TwitterRequestData(); data.UserName = username; data.Password = password; data.ActionUri = new Uri(Urls.VerifyCredentialsUrl); try { data = request.PerformWebRequest(data, "GET"); if (data == null) { Console.Error.WriteLine("DATA IS NULL ABORT"); return(false); } if (data.Users[0].ScreenName == username) { return(true); } } catch { } // ignore exeptions - authentication failed return(false); }
/// <summary> /// Returns a single status, specified by the id parameter /// </summary> /// <param name="ID">id. Required. The numerical ID of the status you're trying to retrieve.</param> /// <returns></returns> public TwitterUser Show(string ID) { TwitterRequest Request = new TwitterRequest(); TwitterRequestData Data = new TwitterRequestData(); Data.UserName = userName; Data.Password = password; Data.ActionUri = new Uri( string.Format(Twitter.Urls.ShowStatusUrl, ID)); Data = Request.PerformWebRequest(Data, "GET"); return Data.Users[0]; }
public TwitterRequestData PerformWebRequest(TwitterRequestData Data) { PerformWebRequest(Data, "GET"); return(Data); }
/// <summary> /// Updates the authenticating user's status. /// </summary> /// <param name="Status">Required. The text of your status update.</param> /// <param name="InReplyToStatusID">Optional. The ID of an existing status that the status to be posted is in reply to.</param> /// <returns></returns> public TwitterStatus Update(string Status, long? InReplyToStatusID) { TwitterRequest Request = new TwitterRequest(); TwitterRequestData Data = new TwitterRequestData(); Data.UserName = userName; Data.Password = password; Data.Source = source; Data.ActionUri = new Uri( string.Format(Twitter.Urls.UpdateUrl, HttpUtility.UrlEncode(Status), source, InReplyToStatusID.HasValue ? InReplyToStatusID.Value.ToString () : "")); Data = Request.PerformWebRequest(Data, "POST"); return Data.Statuses[0]; }
/// <summary> /// Returns the 20 most recent statuses posted by the authenticating user and that user's friends. This is the equivalent of /home on the Web. /// </summary> /// <param name="Parameters">Accepts Since, SinceID, Count, and Page parameters.</param> /// <returns></returns> public TwitterStatusCollection FriendsTimeline(TwitterParameters Parameters) { TwitterRequest Request = new TwitterRequest(); TwitterRequestData Data = new TwitterRequestData(); Data.UserName = userName; Data.Password = password; string actionUri = (Parameters == null ? Twitter.Urls.FriendsTimelineUrl : Parameters.BuildActionUri(Twitter.Urls.FriendsTimelineUrl)); Data.ActionUri = new Uri(actionUri); Data = Request.PerformWebRequest(Data); return Data.Statuses; }
/// <summary> /// Returns the 20 most recent statuses from non-protected users who have set a custom user icon. Does not require authentication. /// </summary> /// <returns></returns> public TwitterStatusCollection PublicTimeline() { TwitterRequest Request = new TwitterRequest(); TwitterRequestData Data = new TwitterRequestData(); Data.ActionUri = new Uri(Twitter.Urls.PublicTimelineUrl); Data = Request.PerformWebRequest(Data); return Data.Statuses; }
public static bool VerifyCredentials(string username, string password) { if (string.IsNullOrEmpty (username)) Console.Error.WriteLine ("username empty"); if (string.IsNullOrEmpty (password)) Console.Error.WriteLine ("password empty"); TwitterRequest request = new TwitterRequest(); TwitterRequestData data = new TwitterRequestData(); data.UserName = username; data.Password = password; data.ActionUri = new Uri (Urls.VerifyCredentialsUrl); try { data = request.PerformWebRequest(data, "GET"); if (data == null) { Console.Error.WriteLine ("DATA IS NULL ABORT"); return false; } if (data.Users[0].ScreenName == username) { return true; } } catch { } // ignore exeptions - authentication failed return false; }
public TwitterizerException(string Message, TwitterRequestData RequestData, Exception InnerException) : base(Message, InnerException) { requestData = RequestData; }