<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://robnrob.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Robbie Coleman : applications, cross-post</title><link>http://robnrob.com/blogs/robbie/archive/tags/applications/cross-post/default.aspx</link><description>Tags: applications, cross-post</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>WLW Cross-Post with Ping.fm posts - Details</title><link>http://robnrob.com/blogs/robbie/archive/2008/08/14/wlw-cross-post-with-ping-fm-posts-details.aspx</link><pubDate>Thu, 14 Aug 2008 21:52:28 GMT</pubDate><guid isPermaLink="false">13812e18-d696-4be2-8651-f97cf03a4369:585</guid><dc:creator>Robbie Coleman</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://robnrob.com/blogs/robbie/rsscomments.aspx?PostID=585</wfw:commentRss><comments>http://robnrob.com/blogs/robbie/archive/2008/08/14/wlw-cross-post-with-ping-fm-posts-details.aspx#comments</comments><description>&lt;p&gt;This is a follow-up post that I had promised regarding these two previous posts:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://robbie.robnrob.com/archive/2008/08/14/trying-out-cross-post-for-wlw.aspx" target="_blank"&gt;Trying out Cross-Post for WLW&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://robbie.robnrob.com/archive/2008/08/14/yay-i-got-the-cross-post-to-work.aspx" target="_blank"&gt;YAY! I got the Cross-Post to work&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;So... first and foremost, I only extended an existing WLW plugin developed by &lt;a title="kzu weblog - eXtensible Mind Lounge." href="http://clariusconsulting.net/blogs" target="_blank"&gt;Daniel Cazzulino&lt;/a&gt; called &lt;a title="How to cross post entries across blogs from Windows Live Writer" href="http://www.clariusconsulting.net/blogs/kzu/archive/2007/08/24/HowtocrosspostentriesacrossblogsfromWindowsLiveWriter.aspx" target="_blank"&gt;Cross-Post&lt;/a&gt; (&lt;a title="Complete original source code for kzu&amp;#39;s Cross-Post plugin" href="http://www.codeplex.com/clarius/Release/ProjectReleases.aspx?ReleaseId=6626" target="_blank"&gt;CodePlex source here&lt;/a&gt;). I found his implementation very easy to follow and well suited to boot-strap my idea for posting to &lt;a title="let me know if you need a beta code" href="http://ping.fm/" target="_blank"&gt;Ping.fm&lt;/a&gt;&amp;#39;s &lt;a title="Ping.fm&amp;#39;s REST API Documentation" href="http://groups.google.com/group/pingfm-developers/web/api-documentation" target="_blank"&gt;REST API&lt;/a&gt;. I also used (but modified to my liking) the C# Wrapper Class written by Adam Duffy (a developer at ping.fm) located &lt;a title="Ping.fm Developers - Code Libraries" href="http://groups.google.com/group/pingfm-developers/web/code-libraries" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Now for the details of each component (Cross-Post plugin &amp;amp; Ping.fm API)...&lt;br /&gt;&lt;/p&gt; &lt;h4&gt;&lt;strong&gt;Cross-Post plugin&lt;/strong&gt;&lt;/h4&gt; &lt;p&gt;The Cross-Post plugin was designed to take a just published blog post in &lt;a href="http://writer.live.com/" target="_blank"&gt;Windows Live Writer&lt;/a&gt; (WLW), and then post it (optionally summarized) to all the other weblogs configured in WLW. For a full and complete description, please check the author&amp;#39;s blog post that describes it:&lt;br /&gt;&lt;a title="How to cross post entries across blogs from Windows Live Writer" href="http://www.clariusconsulting.net/blogs/kzu/archive/2007/08/24/HowtocrosspostentriesacrossblogsfromWindowsLiveWriter.aspx" target="_blank"&gt;How to cross post entries across blogs from Windows Live Writer&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h4&gt;&lt;strong&gt;Ping.fm REST API&lt;/strong&gt;&lt;/h4&gt; &lt;p&gt;Ping.fm did a wonderful job keeping their REST API clean and simple. If you are not familiar with their site or service, they describe themselves in the following way.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;&amp;quot;Ping.fm is a simple service that makes updating your social networks a snap.&amp;quot;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;They allow you to post to 22 &lt;font size="1"&gt;(at the time of this post)&lt;/font&gt; different social/bloglike sites &lt;font size="1"&gt;(listed here in no particular order): twitter, jaiku, facebook, myspace, bebo, tumblr, pownce, friends, message, mashable, brightkite, xanga, plurk, plaxo pulse, identi.ca, friendfeed, blogger, hi5, kwippy, wordpress, livejournal&lt;/font&gt;&lt;/p&gt; &lt;p&gt;As far as their REST API, it is well documented &lt;a href="http://groups.google.com/group/pingfm-developers/web/api-documentation" target="_blank"&gt;here&lt;/a&gt;. The two methods my implementation uses are:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;user.validate: Validates the given user’s application key. This is how authentication/authorization works on their calls. The combination of the developer&amp;#39;s &lt;a title="If you have a Ping.fm account, this will show you all (if any) your API keys" href="http://ping.fm/developers/" target="_blank"&gt;API Key&lt;/a&gt; and the user&amp;#39;s &lt;a title="If you have a Ping.fm account, this will display your specific key" href="http://ping.fm/key" target="_blank"&gt;Application Key&lt;/a&gt;. I call this method when a user enters their key into the plugin&amp;#39;s Option Dialog within WLW.&lt;/li&gt; &lt;li&gt;user.post: Posts a message to the user’s Ping.fm services. This allows 3 basic methods, blog, microblog, and status. I make two of these calls for the cross-post.&lt;/li&gt; &lt;ol&gt; &lt;li&gt;The first as a blog post with title intact yet the body is optionally summarized with the link back to the source post. This uses that optional &amp;quot;title&amp;quot; parameter of the &amp;quot;user.post&amp;quot; method.&lt;/li&gt; &lt;li&gt;The second is a microblog post that states:&lt;br /&gt; &amp;quot;New Blog - &amp;quot; [title]:[permalink]&lt;br /&gt;The best part about this is that Ping.fm automatically shortens all links greater than 20 characters long.&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h4&gt;&lt;strong&gt;So what does it look like when it posts...?&lt;/strong&gt;&lt;/h4&gt; &lt;p&gt;Well... this post that I am writing now and you must be reading sometime later was posted using WLW and this Cross-Post plug-in. So it got posted as a full blog post here, and a summarized (200 characters) to the following blogs:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://robbiecoleman.tumblr.com/" target="_blank" rel="me"&gt;robbiecoleman.tumblr.com&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blog.myspace.com/robbiecoleman" target="_blank" rel="me"&gt;blog.myspace.com/robbiecoleman&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;It was also posted as a announcement link on the following Micro-Blogs of mine:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://twitter.com/erraggy" target="_blank" rel="me"&gt;twitter.com/erraggy&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a title="http://brightkite.com/people/erraggy" href="http://brightkite.com/people/erraggy" target="_blank" rel="me"&gt;brightkite.com/people/erraggy&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a title="http://www.new.facebook.com/profile.php?id=720917076" href="http://www.new.facebook.com/profile.php?id=720917076" target="_blank" rel="me"&gt;www.new.facebook.com/profile.php?id=720917076&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a title="http://friendfeed.com/erraggy" href="http://friendfeed.com/erraggy" target="_blank" rel="me"&gt;friendfeed.com/erraggy&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a title="http://my.mashable.com/robbiecoleman" href="http://my.mashable.com/robbiecoleman" target="_blank" rel="me"&gt;my.mashable.com/robbiecoleman&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a title="http://pulse.plaxo.com/pulse/profile/show/60130410539" href="http://pulse.plaxo.com/pulse/profile/show/60130410539" target="_blank" rel="me"&gt;pulse.plaxo.com/pulse/profile/show/60130410539&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a title="http://www.plurk.com/user/erraggy" href="http://www.plurk.com/user/erraggy" target="_blank" rel="me"&gt;www.plurk.com/user/erraggy&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a title="http://pownce.com/erraggy/" href="http://pownce.com/erraggy/" target="_blank" rel="me"&gt;pownce.com/erraggy/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Now all I need to do is complete me testing and fine tuning, then I can submit it first to Ping.fm for approval (that will allow for users other than me to use my API Key to post). Once that is done I can submit the plugin to the &lt;a href="http://gallery.live.com/default.aspx?pl=8" target="_blank"&gt;WLW Gallery&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://robnrob.com/aggbug.aspx?PostID=585" width="1" height="1"&gt;</description><category domain="http://robnrob.com/blogs/robbie/archive/tags/applications/default.aspx">applications</category><category domain="http://robnrob.com/blogs/robbie/archive/tags/add-ons/default.aspx">add-ons</category><category domain="http://robnrob.com/blogs/robbie/archive/tags/Ping.fm/default.aspx">Ping.fm</category><category domain="http://robnrob.com/blogs/robbie/archive/tags/Community+Server/default.aspx">Community Server</category><category domain="http://robnrob.com/blogs/robbie/archive/tags/Live+Spaces/default.aspx">Live Spaces</category><category domain="http://robnrob.com/blogs/robbie/archive/tags/cross-post/default.aspx">cross-post</category><category domain="http://robnrob.com/blogs/robbie/archive/tags/plugin/default.aspx">plugin</category><category domain="http://robnrob.com/blogs/robbie/archive/tags/plug-in/default.aspx">plug-in</category></item></channel></rss>