-rw-r--r-- | content/flickr.js | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/content/flickr.js b/content/flickr.js index b8360c1..e09d5f0 100644 --- a/content/flickr.js +++ b/content/flickr.js @@ -76,48 +76,49 @@ Photo.prototype = { if(t && t.firstChild) { this.description = t.firstChild.nodeValue; } // TODO: visibility/@ispublic visibility/@isfriend visibility/@isfamily // TODO: dates/@posted dates/@taken dates/@takengranularity dates/@lastupdate // TODO: permissions/@permcomment permsiions/@permaddmeta // TODO: editability/@canaddcomment editability/@canaddmeta // TODO: comments // TODO: notes/note/@id notes/note/@author notes/note/@authorname // TODO: notes/note/@x notes/note/@y notes/note/@w notes/note/@h // TODO: notes/note // TODO: tags/tag/@id tags/tag/@author tags/tag/@raw tags/tag // TODO: urls/url/@type urls/url } }; function Flickr() { } Flickr.prototype = { rest_url: 'http://www.flickr.com/services/rest/', auth_url: 'http://flickr.com/services/auth/', photo_url: 'http://static.flickr.com/', photos_url: 'http://www.flickr.com/photos/', upload_url: 'http://www.flickr.com/services/upload/', + uploader_edit_url: 'http://www.flickr.com/tools/uploader_edit.gne', api_sig: function(paramstr) { return MD5(toutf8(this.api_shs+paramstr)); }, api_call_url: function(params,url) { params.api_key = this.api_key; var pp = new Array(); for(var p in params) { pp.push(p); } var pstr = ''; var rv = (url?url:this.rest_url)+'?'; for(var p in pp.sort()) { var pn = pp[p]; pstr += pn+params[pn]; rv += pn+'='+params[pn]+'&'; } rv += 'api_sig='+this.api_sig(pstr); return rv; }, api_call: function(params, on_success, on_failure) { if(params.auth_token == 'default') params.auth_token = this.token; var x = new XMLHttpRequest(); @@ -254,48 +255,52 @@ Flickr.prototype = { (sfx=='o')?o.originalformat:null ); }, get_photo_page_url: function(p) { if(p instanceof Photo) { // TODO: track photoset and user owner id from there? // The approach below is sheerly wrong. var o = this.user.nsid; if(p.owner && p.owner.nsid) o = p.owner.nsid; var rv = this.photos_url + o +'/' + p.id; return rv; }else // TODO: take owner into account? return this.photos_url + this.user.nsid + '/' + p; }, make_photo_url: function(p,sfx) { if(sfx=='p') return this.get_photo_page_url(p); else return this.get_image_url(p,sfx); }, make_photoset_url: function(ps) { // TODO: allow for using someone else's photoset? return this.photos_url+this.user.nsid+'/sets/'+ps.id; }, + make_uploader_edit_url: function(pid) { + // TODO: handle arrays + return this.uploader_edit_url+'?ids='+pid; + }, upload_file: function(f,fa,on_success,on_failure) { try { var fi = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); fi.initWithPath( f ); var st = Components.classes["@mozilla.org/network/file-input-stream;1"] .createInstance(Components.interfaces.nsIFileInputStream); st.init(fi,0x01,00004,null); var bis = Components.classes["@mozilla.org/binaryinputstream;1"] .createInstance(Components.interfaces.nsIBinaryInputStream); bis.setInputStream(st); // allocate and initialize temp storage string var pbs = Components.classes["@mozilla.org/storagestream;1"] .createInstance(Components.interfaces.nsIStorageStream); pbs.init(1024,10000000,null); // create output stream var pbos = pbs.getOutputStream(0); // and a binaryoutputstream interface var pbbos = Components.classes["@mozilla.org/binaryoutputstream;1"] .createInstance(Components.interfaces.nsIBinaryOutputStream); pbbos.setOutputStream(pbos); |