Seesmic adalah salah satu twitter client yang dibangun dengan teknologi Silverlight 4.0. Namun jangan salah twitter client ini tidak berjalan di browser, tetapi di desktop anda. Hal ini tentunya memanfaatkan fitur Out-Of-Browser yang ada sejak Silverlight 3.0. Twitter client ini menjadi twitter client favorit saya karena beberapa hal yaitu :
1. Dukungan terhadap beberapa layanan jejaring sosial lainnya seperti Facebook, LinkedIn, Foursquare dan juga Google Buzz (ini bukannya udah punah yah?)
2. Dukungan service URL Shortener yang berlimpah, sebut saja bit.ly, IsGd dan Migre.me
3. Dukungan service image yang berlimpah, mulai dari TwitPic hingga YFrog turut didukung oleh client ini.
4. Dukungan message pop-up yang akan muncul jika ada twit baru di timeline twitter anda
5. Tampilan yang ciamik
Tapi tentunya ada 1 hal lagi yang membuat saya jatuh cinta pada twitter client ini, yaitu dia dibangun dengan memanfaatkan MEF (Managed Extensibility Framework) yang ada di .NET Framework 4.0. Sehingga tentunya hal ini berarti bahwa para kaum developer dapat membuat sebuah plug-in yang berjalan di Seesmic. Sebagai contoh anda ingin menambahkan sebuah tab khusus yang isi timelinenya mengambil judul dari blog post anda atau anda ingin menambahkan layanan URL Shortener lain? semua hal tersebut dapat dilakukan dengan mudah karena keindahan MEF :)
Dalam blog post ini saya coba tunjukkan bagaimana kita dapat menambahkan sebuah URL Shortener kedalam Seesmic. Layanan yang akan saya integrasikan adalah layanan URL Shortener dari situs KeTKP.in . Namun sebagai catatan situs lokal ini tidak memiliki layanan webservice untuk layanan pemendekan URL-nya, sehingga yang saya lakukan adalah melakukan sedikit screen scrapping. Tertarik untuk mencoba membuat sebuah plugin di Seesmic? silahkan ikuti langkah-langkah dibawah ini, namun sebelumnya jangan lupa untuk mendownload SDK-nya disini :
1. Buat sebuah project Silverlight bertipe Silverlight Application dengan Visual Studio anda, berinama “KeTKPPlugin”
2. Pastikan anda memilih versi .NET framework 4.0 dan tidak mencentang pilihan “Host the Silverlight application in a new Web site” dan tekan OK.
3. Karena anda akan mengembangkan sebuah plugin maka anda dapat menghapus 2 file ini (App.xaml dan MainPage.xaml)
4. Buka file AppManifest.xml yang ada di bagian properties dan ganti isinya dengan kode berikut :
<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sdp="http://schemas.seesmic.com/sdp/2010/deployment">
<sdp:Plugin>
<sdp:Id>{GUID}</sdp:Id>
<sdp:Name>KeTKP-in URL Shortener</sdp:Name>
<sdp:Description>Pemotongan URL dengan jasa situs ketkp.in</sdp:Description>
<sdp:Version>1.0.0.0</sdp:Version>
<sdp:Vendor>Ronald Rajagukguk</sdp:Vendor>
<sdp:Copyright>2010 </sdp:Copyright>
<sdp:HomepageUrl>http:/geeks.netindonesia.net/blogs/ronald</sdp:HomepageUrl>
<sdp:PlatformVersion>0.8</sdp:PlatformVersion>
</sdp:Plugin>
<Deployment.Parts>
</Deployment.Parts>
</Deployment>
5. Untuk bagian {GUID} anda harus mengisinya dengan guid yang dapat anda hasilkan dengan menggunakan tools Guid generator yang umumnya ada di PC anda. file diatas adalah manifest yang akan menginformasikan deskripsi dan keterangan lainnya dari plugin anda.
6. Tambahkan referensi ke 2 dll yang telah disediakan oleh tim Seesmic (Seesmic.Sdp.Extensibility.dll dan Seesmic.Sdp.Utils.dll) dan pastikan properti untuk Copy Local diset ke False.
7. Tambahkan juga referensi ke System.ComponentModel.Composition yang merupakan salah satu komponen MEF.
8. Buat sebuah kelas baru bernama KeTKPPlugin.cs. kelas ini akan mendaftarkan plugin anda ke seesmic. Berikut adalah contoh kodenya :
public class KeTKPPlugin : IPlugin
{
#region IPlugin Members
public void CommitSettings()
{
throw new NotImplementedException();
}
public Guid Id
{
get { return new Guid("{GUID}"); }
}
public void Initialize()
{
throw new NotImplementedException();
}
public void RevertSettings()
{
throw new NotImplementedException();
}
public DataTemplate SettingsTemplate
{
get { throw new NotImplementedException(); }
}
#endregion
}
8. Buat sebuah kelas baru berinama KeTKP.cs.. Kelas ini akan berfungsi untuk bermendaftarkan service dari situs keTKP.in ke dalam bagian service Short URL di seesmic.
9. Implementasikan interface IShortURLProvider pada kelas yang baru anda buat tersebut. detail implementasinya ada pada kode berikut :
[Export(typeof(IPlugin))]
public class KeTKP : IShortUrlProvider
{
#region IShortUrlProvider Members
public DataTemplate Icon
{
get { throw new NotImplementedException(); }
}
public string Id
{
get { throw new NotImplementedException(); }
}
public AsyncCompletedCallback<string > Callback { get; set; }
public object UserState{ get; set; }
public void ShortUrlAsync(string longURL, object userState, AsyncCompletedCallback<string> callback)
{
WebClient client = new WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
client.DownloadStringAsync(new Uri("http://ketkp.in/go.php?url="+longURL));
this.Callback = callback;
this.UserState = userState;
}
void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
Regex urlExpression = new Regex("window.location='(.*?)@'");
Match urlMatch = urlExpression.Match(e.Result);
string shortUrl = urlMatch.Groups[1].ToString();
Callback(this, new AsyncCompletedEventArgs<string>(null, false, UserState, shortUrl));
}
public string Text
{
get { return "ketkp.in"; }
}
#endregion
}
sekarang anda telah siap untuk memasang plugin sederhana ini. untuk memasangnya anda hanya tinggal melakukan build dan menyimpan file xap yang dihasilkan ke folder "My Documents\Seesmic\Seesmic Desktop 2\Plugins". namun jika anda malas anda dapat meminta Visual Studio untuk melakukan hal tersebut bagi anda. silahkan tambahkan baris ini :
copy /y "$(TargetDir)\$(TargetName).xap" "%HOMEDRIVE%%HOMEPATH%\My Documents\Seesmic\Seesmic Desktop 2\Plugins"
anda tambahkan kode diatas ke bagian Post-build event command line yang dapat anda akses di bagian properties project anda. Sekarang anda tinggal build project ini dan jalankan seesmic anda. Perhatikan bahwa sekarang telah ada pilihan “ketkp.in” dalam pilihan service short URL
Tertarik untuk memakai service buatan lokal ini sebagai jasa short URL anda di seesmic? segera ke TKP juragan!
cheers
\\ronald