Monday, November 08, 2010 at 12:01 AM.
system.verbs.apps.Pownce.newFile
on newFile (f, bodytext, username=nil, password=nil, postTo="all") { <<Changes <<3/3/08; 7:08:50 PM by DW <<Created. local (apiurl = "http://api.pownce.com/2.0/send/file.xml", server, path, t, boundary); bundle { //set server, path local (urllist = string.urlsplit (apiurl)); server = urllist [2]; path = urllist [3]}; bundle { //set username, password, if nil if username == nil { username = user.pownce.prefs.username}; if password == nil { password = user.pownce.prefs.password}}; bundle { //set up the parameters table new (tabletype, @t); t.note_to = postTo; t.note_body = bodytext; t.app_key = user.pownce.prefs.appKey}; bundle { //build boundary local (i); boundary = ""; for i = 1 to 5 { boundary = boundary + string.innerCaseName (states.nthState (random (1, 50)))}; boundary = string.hashmd5 (boundary)}; local (type = "multipart/form-data; boundary=" + boundary, body = ""); bundle { //build body local (indentlevel = 0); on add (s) { body = body + string.filledstring ("\t", indentlevel) + s + "\r\n"}; for adr in @t { add ("--" + boundary); add ("Content-Disposition: form-data; name=\"" + nameof (adr^) + "\""); add (""); add (adr^)}; bundle { //add the file local (type); add ("--" + boundary); add ("Content-Disposition: form-data; name=\"media_file\"; filename=\"" + file.filefrompath (f) + "\""); bundle { //set type local (ext = string.lastfield (f, ".")); type = "text/plain"; try {type = user.webserver.prefs.ext2MIME.[ext]}}; add ("Content-Type: " + type); add (""); add (string (file.readwholefile (f))); add ("--" + boundary + "--")}}; body = string.delete (body, sizeof (body) - 2, 2); <<wp.newtextobject (body, @scratchpad.body) local (result = tcp.httpclient ("POST", server, 80, path, datatype:type, data:body, debug:false, username:username, password:password, timeOutTicks:60*60*60)); wp.newtextobject (result, @scratchpad.posttext)}; <<edit (@scratchpad.posttext) <<result = string.httpResultSplit (result) <<xml.compile (result, @xstruct) <<local (adrrsp = xml.getaddress (@xstruct, "rsp")) <<local (photoid = xml.getvalue (adrrsp, "photoid")) <<return (photoid) bundle { //test code f = "ohio:clintonConferenceCall.mp3"; bodytext = "A campaign conference call MP3 from the Clinton campaign. Good news, we have a partner, a huge media company that decided to work with the bloggers. More to come."; newFile (f, bodytext)}
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.