コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        /// <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);
        }
コード例 #5
0
        /// <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;
        }
コード例 #6
0
        /// <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]);
        }
コード例 #7
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);
        }
コード例 #8
0
        /// <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);
        }
コード例 #9
0
        /// <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]);
        }
コード例 #10
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);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
        /// <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];
        }
コード例 #13
0
        public TwitterRequestData PerformWebRequest(TwitterRequestData Data)
        {
            PerformWebRequest(Data, "GET");

            return(Data);
        }
コード例 #14
0
        /// <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];
        }
コード例 #15
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;
        }
コード例 #16
0
        /// <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;
        }
コード例 #17
0
ファイル: Twitter.cs プロジェクト: jrudolph/do-plugins
        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;
        }
コード例 #18
0
 public TwitterizerException(string Message, TwitterRequestData RequestData, Exception InnerException)
     : base(Message, InnerException)
 {
     requestData = RequestData;
 }
コード例 #19
0
 public TwitterizerException(string Message, TwitterRequestData RequestData, Exception InnerException)
     : base(Message, InnerException)
 {
     requestData = RequestData;
 }