Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.weblog.metaWeblogApi.rpcHandlers.getPost
on getPost (postid, username, password) { <<Changes <<12/21/02; 1:00:37 AM by JES <<Only return elements whose size is non-zero. Works around a bug in Apple's XML-RPC implementation. <<Details from Brent Simmons here: http://www.xmlrpc.com/discuss/msgReader$2380 <<11/20/02; 5:06:27 PM by JES <<Entity-encode high-ascii characters in the post title and description, source name, and category names. Convert the description to Latin text when running on MacOS. <<6/10/02; 7:31:33 PM by DW <<The struct returned now includes a string called permaLink. <<http://www.xmlrpc.com/metaWeblogApi#update61002RadioImplementationReturnsPermalink <<6/10/02; 7:07:53 PM by DW <<Return a new attribute, permaLink, which is the URL of the post. <<3/13/02; 8:48:51 PM by DW <<Created. radio.weblog.bloggerApi.checkUser (client, false, username, password); local (adrblog = radio.weblog.init ()); local (adrpost = @adrblog^.posts.[string.padwithzeros (postid, 8)]); on encode (s) { s = xml.entityEncode (s, false); return (s)}; local (struct); new (tabletype, @struct); struct.userid = user.radio.prefs.usernum; struct.postid = postid; struct.dateCreated = adrpost^.when; struct.description = string (adrpost^.text); if system.environment.isMac { //convert to latin charset struct.description = latinToMac.macToLatin (struct.description)}; struct.description = encode (struct.description); try {radio.weblog.getUrlForPost (adrpost, @struct.permaLink, adrdata:adrblog)}; if defined (adrpost^.title) { if sizeOf (adrpost^.title) > 0 { struct.title = encode (string (adrpost^.title))}}; if defined (adrpost^.link) { if sizeOf (adrpost^.link) > 0 { struct.link = string (adrpost^.link)}}; if defined (adrpost^.enclosure) { if sizeOf (adrpost^.enclosure.url) > 0 { new (tabletype, @struct.enclosure); struct.enclosure.length = adrpost^.enclosure.length; struct.enclosure.type = adrpost^.enclosure.type; struct.enclosure.url = adrpost^.enclosure.url}}; if defined (adrpost^.sourceName) { if (sizeOf (adrpost^.sourceUrl) > 0) and (sizeOf (adrpost^.sourceName) > 0) { new (tabletype, @struct.source); struct.source.name = encode (adrpost^.sourceName); struct.source.url = adrpost^.sourceUrl}}; if defined (adrpost^.categories) { if sizeOf (adrpost^.categories) > 0 { local (adr); struct.categories = {}; for adr in @adrpost^.categories { struct.categories = struct.categories + {encode (nameof (adr^))}}}}; return (struct)} <<bundle //test code <<local (client = "127.0.0.1") <<scratchpad.struct = getpost (762, user.radio.prefs.security.remoteUsername, user.radio.prefs.security.remotePassword)
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.