Monday, November 08, 2010 at 12:01 AM.
system.verbs.apps.FriendFeed.newComment
on newComment (id, body, username=nil, remotekey=nil) {
<<Changes
<<5/14/09; 8:38:23 AM by DW
<<Created. Calls the FriendFeed API to add a comment to the indicated post.
local (posturl = "http://friendfeed.com/api/comment");
friendfeed.init ();
bundle { //set defaults
if username == nil {
username = user.friendfeed.prefs.username};
if remotekey == nil {
remotekey = string (user.friendfeed.prefs.remotekey)}};
local (urllist = string.urlsplit (posturl), path = urllist [3]);
bundle { //add params to the path
path = path + "?format=xml&entry=" + id + "&body=" + string.urlencode (body)};
try {
local (tc = clock.ticks (), timeoutticks = 60 * user.FriendFeed.prefs.timeoutsecs);
local (s = string.httpResultSplit (tcp.httpClient (server:urllist [2], path:path, username:username, password:remotekey, method:"POST", timeoutticks:timeoutticks, flmessages:false, data:" ")));
local (xstruct);
<<wp.newtextobject (s, @scratchpad.friendfeedresult)
xml.compile (s, @xstruct);
<<scratchpad.ffcommentxstruct = xstruct
local (adrcomment = xml.getaddress (@xstruct, "comment"));
local (id = xml.getvalue (adrcomment, "id"));
return (id)}
else {
user.friendfeed.stats.lastPostCommentError = tryerror;
user.friendfeed.stats.whenLastPostCommentError = clock.now ();
return (false)}}
<<bundle //test code
<<local (t, url = friendfeed.newpost ("Testing code to add comments to a FF post, reciting the names of the 50 states in the US", adrdata:@t))
<<window.about ()
<<for i = 1 to 50
<<msg (states.nthstate (i))
<<newcomment (t.id, states.nthstate (i))
<<newcomment (t.id, "This is a comment. If you see it, something is working!")
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.