| /* |
| Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved. |
| Available via Academic Free License >= 2.1 OR the modified BSD license. |
| see: http://dojotoolkit.org/license for details |
| */ |
| |
| |
| if(!dojo._hasResource["dojox.io.OAuth"]){ |
| dojo._hasResource["dojox.io.OAuth"]=true; |
| dojo.provide("dojox.io.OAuth"); |
| dojo.require("dojox.encoding.digests.SHA1"); |
| dojox.io.OAuth=new (function(){ |
| var _1=this.encode=function(s){ |
| if(!s){ |
| return ""; |
| } |
| return encodeURIComponent(s).replace(/\!/g,"%21").replace(/\*/g,"%2A").replace(/\'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29"); |
| }; |
| var _2=this.decode=function(_3){ |
| var a=[],_4=_3.split("&"); |
| for(var i=0,l=_4.length;i<l;i++){ |
| var _5=_4[i]; |
| if(_4[i]==""){ |
| continue; |
| } |
| if(_4[i].indexOf("=")>-1){ |
| var _6=_4[i].split("="); |
| a.push([decodeURIComponent(_6[0]),decodeURIComponent(_6[1])]); |
| }else{ |
| a.push([decodeURIComponent(_4[i]),null]); |
| } |
| } |
| return a; |
| }; |
| function _7(_8){ |
| var _9=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],_a=/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,_b=_a.exec(_8),_c={},i=_9.length; |
| while(i--){ |
| _c[_9[i]]=_b[i]||""; |
| } |
| var p=_c.protocol.toLowerCase(),a=_c.authority.toLowerCase(),b=(p=="http"&&_c.port==80)||(p=="https"&&_c.port==443); |
| if(b){ |
| if(a.lastIndexOf(":")>-1){ |
| a=a.substring(0,a.lastIndexOf(":")); |
| } |
| } |
| var _d=_c.path||"/"; |
| _c.url=p+"://"+a+_d; |
| return _c; |
| }; |
| var _e="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz"; |
| function _f(_10){ |
| var s="",tl=_e.length; |
| for(var i=0;i<_10;i++){ |
| s+=_e.charAt(Math.floor(Math.random()*tl)); |
| } |
| return s; |
| }; |
| function _11(){ |
| return Math.floor(new Date().valueOf()/1000)-2; |
| }; |
| function _12(_13,key,_14){ |
| if(_14&&_14!="PLAINTEXT"&&_14!="HMAC-SHA1"){ |
| throw new Error("dojox.io.OAuth: the only supported signature encodings are PLAINTEXT and HMAC-SHA1."); |
| } |
| if(_14=="PLAINTEXT"){ |
| return key; |
| }else{ |
| return dojox.encoding.digests.SHA1._hmac(_13,key); |
| } |
| }; |
| function key(_15){ |
| return _1(_15.consumer.secret)+"&"+(_15.token&&_15.token.secret?_1(_15.token.secret):""); |
| }; |
| function _16(_17,oaa){ |
| var o={oauth_consumer_key:oaa.consumer.key,oauth_nonce:_f(16),oauth_signature_method:oaa.sig_method||"HMAC-SHA1",oauth_timestamp:_11(),oauth_version:"1.0"}; |
| if(oaa.token){ |
| o.oauth_token=oaa.token.key; |
| } |
| _17.content=dojo.mixin(_17.content||{},o); |
| }; |
| function _18(_19){ |
| var _1a=[{}],_1b; |
| if(_19.form){ |
| if(!_19.content){ |
| _19.content={}; |
| } |
| var _1c=dojo.byId(_19.form); |
| var _1d=_1c.getAttributeNode("action"); |
| _19.url=_19.url||(_1d?_1d.value:null); |
| _1b=dojo.formToObject(_1c); |
| delete _19.form; |
| } |
| if(_1b){ |
| _1a.push(_1b); |
| } |
| if(_19.content){ |
| _1a.push(_19.content); |
| } |
| var map=_7(_19.url); |
| if(map.query){ |
| var tmp=dojo.queryToObject(map.query); |
| for(var p in tmp){ |
| tmp[p]=encodeURIComponent(tmp[p]); |
| } |
| _1a.push(tmp); |
| } |
| _19._url=map.url; |
| var a=[]; |
| for(var i=0,l=_1a.length;i<l;i++){ |
| var _1e=_1a[i]; |
| for(var p in _1e){ |
| if(dojo.isArray(_1e[p])){ |
| for(var j=0,jl=_1e.length;j<jl;j++){ |
| a.push([p,_1e[j]]); |
| } |
| }else{ |
| a.push([p,_1e[p]]); |
| } |
| } |
| } |
| _19._parameters=a; |
| return _19; |
| }; |
| function _1f(_20,_21,oaa){ |
| _16(_21,oaa); |
| _18(_21); |
| var a=_21._parameters; |
| a.sort(function(a,b){ |
| if(a[0]>b[0]){ |
| return 1; |
| } |
| if(a[0]<b[0]){ |
| return -1; |
| } |
| if(a[1]>b[1]){ |
| return 1; |
| } |
| if(a[1]<b[1]){ |
| return -1; |
| } |
| return 0; |
| }); |
| var s=dojo.map(a,function(_22){ |
| return _1(_22[0])+"="+_1(_22[1]||""); |
| }).join("&"); |
| var _23=_20.toUpperCase()+"&"+_1(_21._url)+"&"+_1(s); |
| return _23; |
| }; |
| function _24(_25,_26,oaa){ |
| var k=key(oaa),_27=_1f(_25,_26,oaa),s=_12(_27,k,oaa.sig_method||"HMAC-SHA1"); |
| _26.content["oauth_signature"]=s; |
| return _26; |
| }; |
| this.sign=function(_28,_29,oaa){ |
| return _24(_28,_29,oaa); |
| }; |
| this.xhr=function(_2a,_2b,oaa,_2c){ |
| _24(_2a,_2b,oaa); |
| return dojo.xhr(_2a,_2b,_2c); |
| }; |
| this.xhrGet=function(_2d,oaa){ |
| return this.xhr("GET",_2d,oaa); |
| }; |
| this.xhrPost=this.xhrRawPost=function(_2e,oaa){ |
| return this.xhr("POST",_2e,oaa,true); |
| }; |
| this.xhrPut=this.xhrRawPut=function(_2f,oaa){ |
| return this.xhr("PUT",_2f,oaa,true); |
| }; |
| this.xhrDelete=function(_30,oaa){ |
| return this.xhr("DELETE",_30,oaa); |
| }; |
| })(); |
| } |