Pedro Rainho

The important thing is never to stop questioning
posts - 118, comments - 55, trackbacks - 6

Twitter API

Recently, I join Twitter after some pressure at home and at work :). But since I don’t like to publish my life there, I’m doing this, I’m doing that, bla bla bla, I decided to view Twitter in a different perspective. I decided to view the Twitter API. While I was watching the Twitter API I discovered that there are lot’s of libraries that try to do a wrapper around the Twitter API, including .Net libraries.

One of the libraries I had recently looked and done some testes was Twitterizer. Twitterizer has a very easy interface BUT doesn’t support every Twitter method plus, the last version present in the site has some problems that raises and exception. (To solve this problem I had to dig into the issues and discovered there a zip will the working libraries)

 

So Here is my sample application it’s intention was test almost every method.

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Twitterizer.Framework;

namespace TwitterSample
{
    class Program
    {
        static void Main(string[] args)
        {
            if (Twitter.VerifyCredentials("twitter_user", "twitter_password"))
            {
                Twitter twitter = new Twitter("twitter_user", "twitter_password", "my_app");

                PrintReplies(twitter);
                PrintFollowers(twitter);
                PrintFriends(twitter);
                PrintDirectMessages(twitter);
                PrintFriendsTimeline(twitter);
                PrintPublicTimeline(twitter);
                PrintUserTimeline(twitter);

                //post a message
                twitter.Status.Update("Testing 123, Testing");
            }
            Console.ReadKey();
        }

        public static TwitterUser GetUserInfo(Twitter twitter, string userId)
        {
            TwitterUser user = twitter.Status.Show(userId);

            return user;
        }

        public static void PrintReplies(Twitter twitter)
        {
            TwitterStatusCollection col = twitter.Status.Replies();

            Console.WriteLine("Replies");

            foreach (TwitterStatus status in col)
            {
                Console.WriteLine("------------------------------------------");
                Console.WriteLine("Created:                " + status.Created);
                Console.WriteLine("ID:                     " + status.ID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToStatusID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToUserID);
                Console.WriteLine("IsFavorited:            " + status.IsFavorited);
                Console.WriteLine("IsTruncated:            " + status.IsTruncated);
                Console.WriteLine("RecipientID:            " + status.RecipientID);
                Console.WriteLine("Source:                 " + status.Source);
                Console.WriteLine("Text:                   " + status.Text);
                Console.WriteLine("TwitterUser.ScreenName: " + status.TwitterUser.ScreenName);
            }
        }

        public static void PrintFollowers(Twitter twitter)
        {
            TwitterUserCollection col = twitter.User.Followers();

            Console.WriteLine("Followers");

            foreach (TwitterUser user in col)
            {
                Console.WriteLine("------------------------------------------");
                Console.WriteLine("Description:       " + user.Description);
                Console.WriteLine("Friends_count:     " + user.Friends_count);
                Console.WriteLine("ID:                " + user.ID);
                Console.WriteLine("IsProtected:       " + user.IsProtected);
                Console.WriteLine("Location:          " + user.Location);
                Console.WriteLine("NumberOfFollowers: " + user.NumberOfFollowers);
                Console.WriteLine("ProfileImageUri:   " + user.ProfileImageUri);
                Console.WriteLine("ProfileUri:        " + user.ProfileUri);
                Console.WriteLine("ScreenName:        " + user.ScreenName);
                if (user.Status != null)
                {
                    Console.WriteLine("Status.Text:       " + user.Status.Text);
                }
                Console.WriteLine("TimeZone:          " + user.TimeZone);
                Console.WriteLine("UserName:          " + user.UserName);
            }
        }

        public static void PrintFriends(Twitter twitter)
        {
            TwitterUserCollection col = twitter.User.Friends();

            Console.WriteLine("Friends");

            foreach (TwitterUser user in col)
            {
                Console.WriteLine("------------------------------------------");
                Console.WriteLine("Description:       " + user.Description);
                Console.WriteLine("Friends_count:     " + user.Friends_count);
                Console.WriteLine("ID:                " + user.ID);
                Console.WriteLine("IsProtected:       " + user.IsProtected);
                Console.WriteLine("Location:          " + user.Location);
                Console.WriteLine("NumberOfFollowers: " + user.NumberOfFollowers);
                Console.WriteLine("ProfileImageUri:   " + user.ProfileImageUri);
                Console.WriteLine("ProfileUri:        " + user.ProfileUri);
                Console.WriteLine("ScreenName:        " + user.ScreenName);
                if (user.Status != null)
                {
                    Console.WriteLine("Status.Text:       " + user.Status.Text);
                }
                Console.WriteLine("TimeZone:          " + user.TimeZone);
                Console.WriteLine("UserName:          " + user.UserName);
            }
        }

        public static void PrintDirectMessages(Twitter twitter)
        {
            TwitterStatusCollection col = twitter.DirectMessages.DirectMessages();

            Console.WriteLine("DirectMessages");

            foreach (TwitterStatus status in col)
            {
                Console.WriteLine("------------------------------------------");
                Console.WriteLine("Created:                " + status.Created);
                Console.WriteLine("ID:                     " + status.ID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToStatusID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToUserID);
                Console.WriteLine("IsFavorited:            " + status.IsFavorited);
                Console.WriteLine("IsTruncated:            " + status.IsTruncated);
                Console.WriteLine("RecipientID:            " + status.RecipientID);
                Console.WriteLine("Source:                 " + status.Source);
                Console.WriteLine("Text:                   " + status.Text);
                Console.WriteLine("TwitterUser.ScreenName: " + status.TwitterUser.ScreenName);
            }
        }

        public static void PrintFriendsTimeline(Twitter twitter)
        {
            TwitterStatusCollection col = twitter.Status.FriendsTimeline();

            Console.WriteLine("FriendsTimeline");

            foreach (TwitterStatus status in col)
            {
                Console.WriteLine("------------------------------------------");
                Console.WriteLine("Created:                " + status.Created);
                Console.WriteLine("ID:                     " + status.ID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToStatusID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToUserID);
                Console.WriteLine("IsFavorited:            " + status.IsFavorited);
                Console.WriteLine("IsTruncated:            " + status.IsTruncated);
                Console.WriteLine("RecipientID:            " + status.RecipientID);
                Console.WriteLine("Source:                 " + status.Source);
                Console.WriteLine("Text:                   " + status.Text);
                Console.WriteLine("TwitterUser.ScreenName: " + status.TwitterUser.ScreenName);
            }
        }

        public static void PrintPublicTimeline(Twitter twitter)
        {
            TwitterStatusCollection col = twitter.Status.PublicTimeline();

            Console.WriteLine("PublicTimeline");

            foreach (TwitterStatus status in col)
            {
                Console.WriteLine("------------------------------------------");
                Console.WriteLine("Created:                " + status.Created);
                Console.WriteLine("ID:                     " + status.ID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToStatusID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToUserID);
                Console.WriteLine("IsFavorited:            " + status.IsFavorited);
                Console.WriteLine("IsTruncated:            " + status.IsTruncated);
                Console.WriteLine("RecipientID:            " + status.RecipientID);
                Console.WriteLine("Source:                 " + status.Source);
                Console.WriteLine("Text:                   " + status.Text);
                Console.WriteLine("TwitterUser.ScreenName: " + status.TwitterUser.ScreenName);
            }
        }

        public static void PrintUserTimeline(Twitter twitter)
        {
            TwitterStatusCollection col = twitter.Status.UserTimeline();

            Console.WriteLine("UserTimeline");

            foreach (TwitterStatus status in col)
            {
                Console.WriteLine("------------------------------------------");
                Console.WriteLine("Created:                " + status.Created);
                Console.WriteLine("ID:                     " + status.ID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToStatusID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToUserID);
                Console.WriteLine("IsFavorited:            " + status.IsFavorited);
                Console.WriteLine("IsTruncated:            " + status.IsTruncated);
                Console.WriteLine("RecipientID:            " + status.RecipientID);
                Console.WriteLine("Source:                 " + status.Source);
                Console.WriteLine("Text:                   " + status.Text);
                Console.WriteLine("TwitterUser.ScreenName: " + status.TwitterUser.ScreenName);
            }
        }
    }
}

After some tests in this library I was disappointed because I wasn’t able to find the documentation and some other features that are supported by Twitter are missing.

Now when I’ve some free time I will do some tests to other library named Tweet#, and from what I’ve seen it’s much more complete and it’s fluent.

 

I’m doing this not only for fun, but to continue evolve and learn new things :) and if you saw this post, you know that this is Agilior culture.

Learn and evolve, learn and evolve.

So like I wrote, I’m learning a bit of Twitter because there are lots of client applications around Twitter but I haven’t saw any add-in that Integrates with Visual Studio and since I know few things :) about how to develop extensions and software factories to Visual Studio I decided to start my Twitter Add-in. I’m only in the beginning (testing libraries) but I will release more news soon. Also, I’m intend to create a series of posts to show how to create a VS add-in and in particular how I’m creating this Twitter Add-in.

Print | posted on Wednesday, April 15, 2009 12:46 PM

Feedback

No comments posted yet.

Post Comment

Title  
Name  
Email
Url
Comment   

Powered by: