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.