got authenification working, wohoo
This commit is contained in:
parent
885d36c3cb
commit
6f3b689c3d
20 changed files with 547 additions and 347 deletions
|
@ -46,6 +46,7 @@
|
|||
- (void)unreadMentions:(NSInteger)count;
|
||||
- (void)openURL:(NSString *)url;
|
||||
- (void)storeAccessToken:(NSString *)accessToken secret:(NSString *)secret userId:(NSString *)userId andScreenName:(NSString *)screenName;
|
||||
- (void)storeSecretData:(NSString *)secretData;
|
||||
|
||||
OSStatus handler(EventHandlerCallRef nextHandler, EventRef theEvent, void* userData);
|
||||
|
||||
|
|
|
@ -233,6 +233,13 @@
|
|||
[[NSNotificationCenter defaultCenter] postNotificationName:@"authentificationSucceded" object:nil];
|
||||
}
|
||||
|
||||
- (void)storeSecretData:(NSString *)secretData
|
||||
{
|
||||
NSLog(@"got secret data: %@", secretData);
|
||||
[timelineViewWindow makeKeyAndOrderFront:self];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:@"authentificationSucceded" object:nil];
|
||||
}
|
||||
|
||||
// Mentions window has been visible
|
||||
- (void)windowDidBecomeKey:(NSNotification *)notification {
|
||||
if ([notification object] == mentionsViewWindow) {
|
||||
|
|
|
@ -14,12 +14,8 @@ function getURL(url, type, callback, data, auth_header) {
|
|||
}
|
||||
|
||||
if (auth_header) {
|
||||
var header_data = 'MAC id=' + auth_header.mac_key_id
|
||||
+ ', ts="' + auth_header.time_stamp
|
||||
+ '", nonce="' + auth_header.nonce
|
||||
+ '", mac="' + auth_header.mac + '"';
|
||||
xhr.setRequestHeader("Authorization", header_data);
|
||||
};
|
||||
xhr.setRequestHeader("Authorization", auth_header);
|
||||
}
|
||||
},
|
||||
url: url,
|
||||
accepts: "application/vnd.tent.v0+json",
|
||||
|
@ -37,6 +33,46 @@ function getURL(url, type, callback, data, auth_header) {
|
|||
});
|
||||
}
|
||||
|
||||
function getUrlVars(url) {
|
||||
var vars = [], hash;
|
||||
if(url.indexOf("#") > -1) url = url.slice(0, url.indexOf("#"));
|
||||
var hashes = url.slice(url.indexOf('?') + 1).split('&');
|
||||
for(var i = 0; i < hashes.length; i++)
|
||||
{
|
||||
hash = hashes[i].split('=');
|
||||
vars.push(hash[0]);
|
||||
vars[hash[0]] = hash[1];
|
||||
}
|
||||
return vars;
|
||||
}
|
||||
|
||||
function makeAuthHeader(url, http_method, mac_key, mac_key_id) {
|
||||
|
||||
url = URI(url);
|
||||
var nonce = makeid(8);
|
||||
var time_stamp = parseInt((new Date).getTime() / 1000, 10);
|
||||
|
||||
var normalizedRequestString = ""
|
||||
+ time_stamp + '\n'
|
||||
+ nonce + '\n'
|
||||
+ http_method + '\n'
|
||||
+ url.path() + '\n'
|
||||
+ url.hostname() + '\n'
|
||||
+ url.port() + '\n'
|
||||
+ '\n' ;
|
||||
|
||||
var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, mac_key);
|
||||
hmac.update(normalizedRequestString);
|
||||
var hash = hmac.finalize();
|
||||
var mac = hash.toString(CryptoJS.enc.Base64);
|
||||
|
||||
return 'MAC id="' + mac_key_id +
|
||||
'", ts="' + time_stamp +
|
||||
'", nonce="' + nonce +
|
||||
'", mac="' + mac + '"';
|
||||
}
|
||||
|
||||
|
||||
function makeid(len) {
|
||||
var text = "";
|
||||
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
|
@ -122,32 +158,18 @@ OauthImplementation.prototype.requestAccessToken = function(responseBody) {
|
|||
if(this.state && this.state != "" && urlVars["state"] == this.state) {
|
||||
|
||||
var url = this.apiRoot() + "/apps/" + this.register_data["id"] + "/authorizations";
|
||||
var nonce = makeid(4);
|
||||
var time_stamp = (new Date).getTime();
|
||||
|
||||
var requestBody = JSON.stringify({
|
||||
'code' : urlVars["code"],
|
||||
'token_type' : "mac"
|
||||
});
|
||||
|
||||
var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, this.register_data["mac_key"]);
|
||||
hmac.update(requestBody);
|
||||
var hash = hmac.finalize();
|
||||
|
||||
var auth_header = {
|
||||
mac_key_id: this.register_data["mac_key_id"],
|
||||
time_stamp: time_stamp,
|
||||
nonce: nonce,
|
||||
mac: hash.toString(CryptoJS.enc.Base64)
|
||||
}
|
||||
|
||||
var those = this;
|
||||
var callback = function(resp) {
|
||||
alert("requestAccessTokenTicketFinished")
|
||||
alert(resp.responseText);
|
||||
//those.requestAccessTokenTicketFinished(data);
|
||||
those.requestAccessTokenTicketFinished(resp.responseText);
|
||||
};
|
||||
|
||||
var auth_header = makeAuthHeader(url, "POST", this.register_data["mac_key"], this.register_data["mac_key_id"]);
|
||||
getURL(url, "POST", callback, requestBody, auth_header);
|
||||
|
||||
} else {
|
||||
|
@ -158,65 +180,17 @@ OauthImplementation.prototype.requestAccessToken = function(responseBody) {
|
|||
}
|
||||
|
||||
|
||||
OauthImplementation.prototype.requestAToken = function() {
|
||||
var url = OAUTH_REQUEST_TOKEN_URL;
|
||||
var _this = this;
|
||||
|
||||
var message = { method:"POST" , action:url };
|
||||
|
||||
OAuth.completeRequest(message,
|
||||
{ consumerKey : OAUTH_CONSUMER_KEY
|
||||
, consumerSecret: OAUTH_CONSUMER_SECRET
|
||||
//, token : controller.oauth.accessToken.key
|
||||
//, tokenSecret : controller.oauth.accessToken.secret
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
beforeSend: function(xhr) {
|
||||
xhr.setRequestHeader("Authorization", OAuth.getAuthorizationHeader("", message.parameters));
|
||||
},
|
||||
url: url,
|
||||
type: 'POST',
|
||||
dataType: 'text',
|
||||
success: function(data) {
|
||||
_this.requestTokenTicketFinished(data);
|
||||
},
|
||||
error:function (xhr, ajaxOptions, thrownError) {
|
||||
alert(xhr.statusText);
|
||||
alert(ajaxOptions);
|
||||
alert(thrownError);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
OauthImplementation.prototype.requestTokenTicketFinished = function(data) {
|
||||
controller.openURL_(OAUTH_USER_AUTHORIZATION_URL + "?" + data);
|
||||
}
|
||||
|
||||
|
||||
OauthImplementation.prototype.requestAccessTokenTicketFinished = function(responseBody) {
|
||||
var urlVars = getUrlVars(responseBody);
|
||||
controller.storeAccessToken_secret_userId_andScreenName_(
|
||||
urlVars["oauth_token"],
|
||||
urlVars["oauth_token_secret"],
|
||||
urlVars["user_id"],
|
||||
urlVars["screen_name"]
|
||||
);
|
||||
}
|
||||
|
||||
function getUrlVars(url)
|
||||
{
|
||||
var vars = [], hash;
|
||||
if(url.indexOf("#") > -1) url = url.slice(0, url.indexOf("#"));
|
||||
var hashes = url.slice(url.indexOf('?') + 1).split('&');
|
||||
for(var i = 0; i < hashes.length; i++)
|
||||
{
|
||||
hash = hashes[i].split('=');
|
||||
vars.push(hash[0]);
|
||||
vars[hash[0]] = hash[1];
|
||||
}
|
||||
return vars;
|
||||
var secret_data = {
|
||||
access: JSON.parse(responseBody),
|
||||
register_data: this.register_data
|
||||
}
|
||||
|
||||
controller.storeSecretData_(JSON.stringify(secret_data));
|
||||
}
|
||||
|
||||
var tentia_oauth;
|
|
@ -25,6 +25,8 @@
|
|||
1F9816CA16391C4A00AFD4EE /* enc-base64-min.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F9816C6163915A100AFD4EE /* enc-base64-min.js */; };
|
||||
1F9816CB16391C4A00AFD4EE /* hmac-sha256.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F9816C7163915A100AFD4EE /* hmac-sha256.js */; };
|
||||
1F98DC9E124BFFD7004289ED /* pin.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F98DC9D124BFFD7004289ED /* pin.png */; };
|
||||
1F9D655E163B63E300B7282B /* URI.min.js in Sources */ = {isa = PBXBuildFile; fileRef = 1F9D655D163B63E300B7282B /* URI.min.js */; };
|
||||
1F9D655F163B63F700B7282B /* URI.min.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F9D655D163B63E300B7282B /* URI.min.js */; };
|
||||
1FA09847144602530079E258 /* libicucore.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FA09846144602530079E258 /* libicucore.dylib */; };
|
||||
1FC254941427BC050035D84B /* index_oauth.html in Resources */ = {isa = PBXBuildFile; fileRef = 1FC254931427BC050035D84B /* index_oauth.html */; };
|
||||
1FC254951427BF150035D84B /* OauthImplementation.js in Resources */ = {isa = PBXBuildFile; fileRef = 1FC254911427ADF90035D84B /* OauthImplementation.js */; };
|
||||
|
@ -84,6 +86,7 @@
|
|||
1F9816C6163915A100AFD4EE /* enc-base64-min.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "enc-base64-min.js"; sourceTree = "<group>"; };
|
||||
1F9816C7163915A100AFD4EE /* hmac-sha256.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "hmac-sha256.js"; sourceTree = "<group>"; };
|
||||
1F98DC9D124BFFD7004289ED /* pin.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pin.png; sourceTree = "<group>"; };
|
||||
1F9D655D163B63E300B7282B /* URI.min.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = URI.min.js; sourceTree = "<group>"; };
|
||||
1FA09846144602530079E258 /* libicucore.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libicucore.dylib; path = usr/lib/libicucore.dylib; sourceTree = SDKROOT; };
|
||||
1FC254911427ADF90035D84B /* OauthImplementation.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; lineEnding = 0; path = OauthImplementation.js; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.javascript; };
|
||||
1FC254931427BC050035D84B /* index_oauth.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index_oauth.html; sourceTree = "<group>"; };
|
||||
|
@ -163,6 +166,7 @@
|
|||
1FFA36C71177D861006C8562 /* WebKit */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1F9D655D163B63E300B7282B /* URI.min.js */,
|
||||
1F9816C6163915A100AFD4EE /* enc-base64-min.js */,
|
||||
1F9816C7163915A100AFD4EE /* hmac-sha256.js */,
|
||||
1F245D6E1632AEFE00E4469A /* jso.js */,
|
||||
|
@ -304,6 +308,7 @@
|
|||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1F9D655F163B63F700B7282B /* URI.min.js in Resources */,
|
||||
1F9816CA16391C4A00AFD4EE /* enc-base64-min.js in Resources */,
|
||||
1F9816CB16391C4A00AFD4EE /* hmac-sha256.js in Resources */,
|
||||
1FC2549F1427DC7F0035D84B /* Constants.js in Resources */,
|
||||
|
@ -344,6 +349,7 @@
|
|||
1F245D6F1632AEFE00E4469A /* jso.js in Sources */,
|
||||
1F9816C8163915A100AFD4EE /* enc-base64-min.js in Sources */,
|
||||
1F9816C9163915A100AFD4EE /* hmac-sha256.js in Sources */,
|
||||
1F9D655E163B63E300B7282B /* URI.min.js in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
Binary file not shown.
70
URI.min.js
vendored
Normal file
70
URI.min.js
vendored
Normal file
|
@ -0,0 +1,70 @@
|
|||
/*! URI.js v1.7.4 http://medialize.github.com/URI.js/ */
|
||||
/* build contains: IPv6.js, punycode.js, SecondLevelDomains.js, URI.js, URITemplate.js */
|
||||
(function(){("undefined"!==typeof module&&module.exports?module.exports:window).IPv6={best:function(d){var d=d.toLowerCase().split(":"),j=d.length,h=8;""===d[0]&&""===d[1]&&""===d[2]?(d.shift(),d.shift()):""===d[0]&&""===d[1]?d.shift():""===d[j-1]&&""===d[j-2]&&d.pop();j=d.length;-1!==d[j-1].indexOf(".")&&(h=7);var i;for(i=0;i<j&&""!==d[i];i++);if(i<h)for(d.splice(i,1,"0000");d.length<h;)d.splice(i,0,"0000");for(i=0;i<h;i++){for(var j=d[i].split(""),f=0;3>f;f++)if("0"===j[0]&&1<j.length)j.splice(0,
|
||||
1);else break;d[i]=j.join("")}var j=-1,s=f=0,u=-1,g=!1;for(i=0;i<h;i++)g?"0"===d[i]?s+=1:(g=!1,s>f&&(j=u,f=s)):"0"==d[i]&&(g=!0,u=i,s=1);s>f&&(j=u,f=s);1<f&&d.splice(j,f,"");j=d.length;h="";""===d[0]&&(beststr=":");for(i=0;i<j;i++){h+=d[i];if(i===j-1)break;h+=":"}""===d[j-1]&&(h+=":");return h}}})();
|
||||
(function(d){function j(a){throw RangeError(C[a]);}function h(a,b){for(var e=a.length;e--;)a[e]=b(a[e]);return a}function i(a){for(var b=[],e=0,c=a.length,k,d;e<c;)k=a.charCodeAt(e++),55296==(k&63488)&&(d=a.charCodeAt(e++),(55296!=(k&64512)||56320!=(d&64512))&&j("ucs2decode"),k=((k&1023)<<10)+(d&1023)+65536),b.push(k);return b}function f(a){return h(a,function(a){var b="";55296==(a&63488)&&j("ucs2encode");65535<a&&(a-=65536,b+=z(a>>>10&1023|55296),a=56320|a&1023);return b+=z(a)}).join("")}function s(e,
|
||||
c,k){for(var d=0,e=k?w(e/b):e>>1,e=e+w(e/c);e>x*r>>1;d+=n)e=w(e/x);return w(d+(x+1)*e/(e+a))}function u(a){var b=[],c=a.length,d,g=0,t=k,i=e,m,h,l,q,v;m=a.lastIndexOf(B);0>m&&(m=0);for(h=0;h<m;++h)128<=a.charCodeAt(h)&&j("not-basic"),b.push(a.charCodeAt(h));for(m=0<m?m+1:0;m<c;){h=g;d=1;for(l=n;;l+=n){m>=c&&j("invalid-input");q=a.charCodeAt(m++);q=10>q-48?q-22:26>q-65?q-65:26>q-97?q-97:n;(q>=n||q>w((y-g)/d))&&j("overflow");g+=q*d;v=l<=i?p:l>=i+r?r:l-i;if(q<v)break;q=n-v;d>w(y/q)&&j("overflow");d*=
|
||||
q}d=b.length+1;i=s(g-h,d,0==h);w(g/d)>y-t&&j("overflow");t+=w(g/d);g%=d;b.splice(g++,0,t)}return f(b)}function g(a){var b,c,d,g,f,t,m,h,l,q=[],v,u,x,a=i(a);v=a.length;b=k;c=0;f=e;for(t=0;t<v;++t)l=a[t],128>l&&q.push(z(l));for((d=g=q.length)&&q.push(B);d<v;){m=y;for(t=0;t<v;++t)l=a[t],l>=b&&l<m&&(m=l);u=d+1;m-b>w((y-c)/u)&&j("overflow");c+=(m-b)*u;b=m;for(t=0;t<v;++t)if(l=a[t],l<b&&++c>y&&j("overflow"),l==b){h=c;for(m=n;;m+=n){l=m<=f?p:m>=f+r?r:m-f;if(h<l)break;x=h-l;h=n-l;q.push(z(l+x%h+22+75*(26>
|
||||
l+x%h)-0));h=w(x/h)}q.push(z(h+22+75*(26>h)-0));f=s(c,u,d==g);c=0;++d}++c;++b}return q.join("")}var c,m="function"==typeof define&&"object"==typeof define.amd&&define.amd&&define,l="object"==typeof exports&&exports,q="object"==typeof module&&module,y=2147483647,n=36,p=1,r=26,a=38,b=700,e=72,k=128,B="-",t=/[^ -~]/,v=/^xn--/,C={overflow:"Overflow: input needs wider integers to process.",ucs2decode:"UCS-2(decode): illegal sequence",ucs2encode:"UCS-2(encode): illegal value","not-basic":"Illegal input >= 0x80 (not a basic code point)",
|
||||
"invalid-input":"Invalid input"},x=n-p,w=Math.floor,z=String.fromCharCode,A;c={version:"0.3.0",ucs2:{decode:i,encode:f},decode:u,encode:g,toASCII:function(a){return h(a.split("."),function(a){return t.test(a)?"xn--"+g(a):a}).join(".")},toUnicode:function(a){return h(a.split("."),function(a){return v.test(a)?u(a.slice(4).toLowerCase()):a}).join(".")}};if(l)if(q&&q.exports==l)q.exports=c;else for(A in c)c.hasOwnProperty(A)&&(l[A]=c[A]);else m?define("punycode",c):d.punycode=c})(this);
|
||||
(function(){var d={list:{ac:"com|gov|mil|net|org",ae:"ac|co|gov|mil|name|net|org|pro|sch",af:"com|edu|gov|net|org",al:"com|edu|gov|mil|net|org",ao:"co|ed|gv|it|og|pb",ar:"com|edu|gob|gov|int|mil|net|org|tur",at:"ac|co|gv|or",au:"asn|com|csiro|edu|gov|id|net|org",ba:"co|com|edu|gov|mil|net|org|rs|unbi|unmo|unsa|untz|unze",bb:"biz|co|com|edu|gov|info|net|org|store|tv",bh:"biz|cc|com|edu|gov|info|net|org",bn:"com|edu|gov|net|org",bo:"com|edu|gob|gov|int|mil|net|org|tv",br:"adm|adv|agr|am|arq|art|ato|b|bio|blog|bmd|cim|cng|cnt|com|coop|ecn|edu|eng|esp|etc|eti|far|flog|fm|fnd|fot|fst|g12|ggf|gov|imb|ind|inf|jor|jus|lel|mat|med|mil|mus|net|nom|not|ntr|odo|org|ppg|pro|psc|psi|qsl|rec|slg|srv|tmp|trd|tur|tv|vet|vlog|wiki|zlg",
|
||||
bs:"com|edu|gov|net|org",bz:"du|et|om|ov|rg",ca:"ab|bc|mb|nb|nf|nl|ns|nt|nu|on|pe|qc|sk|yk",ck:"biz|co|edu|gen|gov|info|net|org",cn:"ac|ah|bj|com|cq|edu|fj|gd|gov|gs|gx|gz|ha|hb|he|hi|hl|hn|jl|js|jx|ln|mil|net|nm|nx|org|qh|sc|sd|sh|sn|sx|tj|tw|xj|xz|yn|zj",co:"com|edu|gov|mil|net|nom|org",cr:"ac|c|co|ed|fi|go|or|sa",cy:"ac|biz|com|ekloges|gov|ltd|name|net|org|parliament|press|pro|tm","do":"art|com|edu|gob|gov|mil|net|org|sld|web",dz:"art|asso|com|edu|gov|net|org|pol",ec:"com|edu|fin|gov|info|med|mil|net|org|pro",
|
||||
eg:"com|edu|eun|gov|mil|name|net|org|sci",er:"com|edu|gov|ind|mil|net|org|rochest|w",es:"com|edu|gob|nom|org",et:"biz|com|edu|gov|info|name|net|org",fj:"ac|biz|com|info|mil|name|net|org|pro",fk:"ac|co|gov|net|nom|org",fr:"asso|com|f|gouv|nom|prd|presse|tm",gg:"co|net|org",gh:"com|edu|gov|mil|org",gn:"ac|com|gov|net|org",gr:"com|edu|gov|mil|net|org",gt:"com|edu|gob|ind|mil|net|org",gu:"com|edu|gov|net|org",hk:"com|edu|gov|idv|net|org",id:"ac|co|go|mil|net|or|sch|web",il:"ac|co|gov|idf|k12|muni|net|org",
|
||||
"in":"ac|co|edu|ernet|firm|gen|gov|i|ind|mil|net|nic|org|res",iq:"com|edu|gov|i|mil|net|org",ir:"ac|co|dnssec|gov|i|id|net|org|sch",it:"edu|gov",je:"co|net|org",jo:"com|edu|gov|mil|name|net|org|sch",jp:"ac|ad|co|ed|go|gr|lg|ne|or",ke:"ac|co|go|info|me|mobi|ne|or|sc",kh:"com|edu|gov|mil|net|org|per",ki:"biz|com|de|edu|gov|info|mob|net|org|tel",km:"asso|com|coop|edu|gouv|k|medecin|mil|nom|notaires|pharmaciens|presse|tm|veterinaire",kn:"edu|gov|net|org",kr:"ac|busan|chungbuk|chungnam|co|daegu|daejeon|es|gangwon|go|gwangju|gyeongbuk|gyeonggi|gyeongnam|hs|incheon|jeju|jeonbuk|jeonnam|k|kg|mil|ms|ne|or|pe|re|sc|seoul|ulsan",
|
||||
kw:"com|edu|gov|net|org",ky:"com|edu|gov|net|org",kz:"com|edu|gov|mil|net|org",lb:"com|edu|gov|net|org",lk:"assn|com|edu|gov|grp|hotel|int|ltd|net|ngo|org|sch|soc|web",lr:"com|edu|gov|net|org",lv:"asn|com|conf|edu|gov|id|mil|net|org",ly:"com|edu|gov|id|med|net|org|plc|sch",ma:"ac|co|gov|m|net|org|press",mc:"asso|tm",me:"ac|co|edu|gov|its|net|org|priv",mg:"com|edu|gov|mil|nom|org|prd|tm",mk:"com|edu|gov|inf|name|net|org|pro",ml:"com|edu|gov|net|org|presse",mn:"edu|gov|org",mo:"com|edu|gov|net|org",
|
||||
mt:"com|edu|gov|net|org",mv:"aero|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro",mw:"ac|co|com|coop|edu|gov|int|museum|net|org",mx:"com|edu|gob|net|org",my:"com|edu|gov|mil|name|net|org|sch",nf:"arts|com|firm|info|net|other|per|rec|store|web",ng:"biz|com|edu|gov|mil|mobi|name|net|org|sch",ni:"ac|co|com|edu|gob|mil|net|nom|org",np:"com|edu|gov|mil|net|org",nr:"biz|com|edu|gov|info|net|org",om:"ac|biz|co|com|edu|gov|med|mil|museum|net|org|pro|sch",pe:"com|edu|gob|mil|net|nom|org|sld",ph:"com|edu|gov|i|mil|net|ngo|org",
|
||||
pk:"biz|com|edu|fam|gob|gok|gon|gop|gos|gov|net|org|web",pl:"art|bialystok|biz|com|edu|gda|gdansk|gorzow|gov|info|katowice|krakow|lodz|lublin|mil|net|ngo|olsztyn|org|poznan|pwr|radom|slupsk|szczecin|torun|warszawa|waw|wroc|wroclaw|zgora",pr:"ac|biz|com|edu|est|gov|info|isla|name|net|org|pro|prof",ps:"com|edu|gov|net|org|plo|sec",pw:"belau|co|ed|go|ne|or",ro:"arts|com|firm|info|nom|nt|org|rec|store|tm|www",rs:"ac|co|edu|gov|in|org",sb:"com|edu|gov|net|org",sc:"com|edu|gov|net|org",sh:"co|com|edu|gov|net|nom|org",
|
||||
sl:"com|edu|gov|net|org",st:"co|com|consulado|edu|embaixada|gov|mil|net|org|principe|saotome|store",sv:"com|edu|gob|org|red",sz:"ac|co|org",tr:"av|bbs|bel|biz|com|dr|edu|gen|gov|info|k12|name|net|org|pol|tel|tsk|tv|web",tt:"aero|biz|cat|co|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel",tw:"club|com|ebiz|edu|game|gov|idv|mil|net|org",mu:"ac|co|com|gov|net|or|org",mz:"ac|co|edu|gov|org",na:"co|com",nz:"ac|co|cri|geek|gen|govt|health|iwi|maori|mil|net|org|parliament|school",
|
||||
pa:"abo|ac|com|edu|gob|ing|med|net|nom|org|sld",pt:"com|edu|gov|int|net|nome|org|publ",py:"com|edu|gov|mil|net|org",qa:"com|edu|gov|mil|net|org",re:"asso|com|nom",ru:"ac|adygeya|altai|amur|arkhangelsk|astrakhan|bashkiria|belgorod|bir|bryansk|buryatia|cbg|chel|chelyabinsk|chita|chukotka|chuvashia|com|dagestan|e-burg|edu|gov|grozny|int|irkutsk|ivanovo|izhevsk|jar|joshkar-ola|kalmykia|kaluga|kamchatka|karelia|kazan|kchr|kemerovo|khabarovsk|khakassia|khv|kirov|koenig|komi|kostroma|kranoyarsk|kuban|kurgan|kursk|lipetsk|magadan|mari|mari-el|marine|mil|mordovia|mosreg|msk|murmansk|nalchik|net|nnov|nov|novosibirsk|nsk|omsk|orenburg|org|oryol|penza|perm|pp|pskov|ptz|rnd|ryazan|sakhalin|samara|saratov|simbirsk|smolensk|spb|stavropol|stv|surgut|tambov|tatarstan|tom|tomsk|tsaritsyn|tsk|tula|tuva|tver|tyumen|udm|udmurtia|ulan-ude|vladikavkaz|vladimir|vladivostok|volgograd|vologda|voronezh|vrn|vyatka|yakutia|yamal|yekaterinburg|yuzhno-sakhalinsk",
|
||||
rw:"ac|co|com|edu|gouv|gov|int|mil|net",sa:"com|edu|gov|med|net|org|pub|sch",sd:"com|edu|gov|info|med|net|org|tv",se:"a|ac|b|bd|c|d|e|f|g|h|i|k|l|m|n|o|org|p|parti|pp|press|r|s|t|tm|u|w|x|y|z",sg:"com|edu|gov|idn|net|org|per",sn:"art|com|edu|gouv|org|perso|univ",sy:"com|edu|gov|mil|net|news|org",th:"ac|co|go|in|mi|net|or",tj:"ac|biz|co|com|edu|go|gov|info|int|mil|name|net|nic|org|test|web",tn:"agrinet|com|defense|edunet|ens|fin|gov|ind|info|intl|mincom|nat|net|org|perso|rnrt|rns|rnu|tourism",tz:"ac|co|go|ne|or",
|
||||
ua:"biz|cherkassy|chernigov|chernovtsy|ck|cn|co|com|crimea|cv|dn|dnepropetrovsk|donetsk|dp|edu|gov|if|in|ivano-frankivsk|kh|kharkov|kherson|khmelnitskiy|kiev|kirovograd|km|kr|ks|kv|lg|lugansk|lutsk|lviv|me|mk|net|nikolaev|od|odessa|org|pl|poltava|pp|rovno|rv|sebastopol|sumy|te|ternopil|uzhgorod|vinnica|vn|zaporizhzhe|zhitomir|zp|zt",ug:"ac|co|go|ne|or|org|sc",uk:"ac|bl|british-library|co|cym|gov|govt|icnet|jet|lea|ltd|me|mil|mod|national-library-scotland|nel|net|nhs|nic|nls|org|orgn|parliament|plc|police|sch|scot|soc",
|
||||
us:"dni|fed|isa|kids|nsn",uy:"com|edu|gub|mil|net|org",ve:"co|com|edu|gob|info|mil|net|org|web",vi:"co|com|k12|net|org",vn:"ac|biz|com|edu|gov|health|info|int|name|net|org|pro",ye:"co|com|gov|ltd|me|net|org|plc",yu:"ac|co|edu|gov|org",za:"ac|agric|alt|bourse|city|co|cybernet|db|edu|gov|grondar|iaccess|imt|inca|landesign|law|mil|net|ngo|nis|nom|olivetti|org|pix|school|tm|web",zm:"ac|co|com|edu|gov|net|org|sch"},has_expression:null,is_expression:null,has:function(j){return!!j.match(d.has_expression)},
|
||||
is:function(j){return!!j.match(d.is_expression)},get:function(j){return(j=j.match(d.has_expression))&&j[1]||null},init:function(){var j="",h;for(h in d.list)Object.prototype.hasOwnProperty.call(d.list,h)&&(j+="|("+("("+d.list[h]+")."+h)+")");d.has_expression=RegExp("\\.("+j.substr(1)+")$","i");d.is_expression=RegExp("^("+j.substr(1)+")$","i")}};d.init();"undefined"!==typeof module&&module.exports?module.exports=d:window.SecondLevelDomains=d})();
|
||||
(function(d){function j(a){return a.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function h(a){return"[object Array]"===String(Object.prototype.toString.call(a))}function i(a){return encodeURIComponent(a).replace(/[!'()*]/g,escape).replace(/\*/g,"%2A")}var f="undefined"!==typeof module&&module.exports,s=f?require("./punycode"):window.punycode,u=f?require("./IPv6"):window.IPv6,g=f?require("./SecondLevelDomains"):window.SecondLevelDomains,c=function(a,b){if(!(this instanceof c))return new c(a,b);a===
|
||||
d&&(a="undefined"!==typeof location?location.href+"":"");this.href(a);return b!==d?this.absoluteTo(b):this},f=c.prototype;c.protocol_expression=/^[a-z][a-z0-9-+-]*$/i;c.idn_expression=/[^a-z0-9\.-]/i;c.punycode_expression=/(xn--)/i;c.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;c.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/;
|
||||
c.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?\u00ab\u00bb\u201c\u201d\u2018\u2019]))/ig;c.defaultPorts={http:"80",https:"443",ftp:"21"};c.invalid_hostname_characters=/[^a-zA-Z0-9\.-]/;c.encode=i;c.decode=decodeURIComponent;c.iso8859=function(){c.encode=escape;c.decode=unescape};c.unicode=function(){c.encode=i;c.decode=decodeURIComponent};
|
||||
c.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}}};
|
||||
c.encodeQuery=function(a){return c.encode(a+"").replace(/%20/g,"+")};c.decodeQuery=function(a){return c.decode((a+"").replace(/\+/g,"%20"))};c.recodePath=function(a){for(var a=(a+"").split("/"),b=0,e=a.length;b<e;b++)a[b]=c.encodePathSegment(c.decode(a[b]));return a.join("/")};c.decodePath=function(a){for(var a=(a+"").split("/"),b=0,e=a.length;b<e;b++)a[b]=c.decodePathSegment(a[b]);return a.join("/")};var m={encode:"encode",decode:"decode"},l,q=function(a,b){return function(e){return c[b](e+"").replace(c.characters[a][b].expression,
|
||||
function(e){return c.characters[a][b].map[e]})}};for(l in m)c[l+"PathSegment"]=q("pathname",m[l]);c.encodeReserved=q("reserved","encode");c.parse=function(a){var b,e={};b=a.indexOf("#");-1<b&&(e.fragment=a.substring(b+1)||null,a=a.substring(0,b));b=a.indexOf("?");-1<b&&(e.query=a.substring(b+1)||null,a=a.substring(0,b));"//"===a.substring(0,2)?(e.protocol="",a=a.substring(2),a=c.parseAuthority(a,e)):(b=a.indexOf(":"),-1<b&&(e.protocol=a.substring(0,b),e.protocol&&!e.protocol.match(c.protocol_expression)?
|
||||
e.protocol=d:"//"===a.substring(b+1,b+3)?(a=a.substring(b+3),a=c.parseAuthority(a,e)):(a=a.substring(b+1),e.urn=!0)));e.path=a;return e};c.parseHost=function(a,b){var e=a.indexOf("/"),c;-1===e&&(e=a.length);"["===a[0]?(c=a.indexOf("]"),b.hostname=a.substring(1,c)||null,b.port=a.substring(c+2,e)||null):a.indexOf(":")!==a.lastIndexOf(":")?(b.hostname=a.substring(0,e)||null,b.port=null):(c=a.substring(0,e).split(":"),b.hostname=c[0]||null,b.port=c[1]||null);b.hostname&&"/"!==a.substring(e)[0]&&(e++,
|
||||
a="/"+a);return a.substring(e)||"/"};c.parseAuthority=function(a,b){a=c.parseUserinfo(a,b);return c.parseHost(a,b)};c.parseUserinfo=function(a,b){var e=a.indexOf("@"),k=a.indexOf("/");-1<e&&(-1===k||e<k)?(k=a.substring(0,e).split(":"),b.username=k[0]?c.decode(k[0]):null,b.password=k[1]?c.decode(k[1]):null,a=a.substring(e+1)):(b.username=null,b.password=null);return a};c.parseQuery=function(a){if(!a)return{};a=a.replace(/&+/g,"&").replace(/^\?*&*|&+$/g,"");if(!a)return{};for(var b={},a=a.split("&"),
|
||||
e=a.length,k=0;k<e;k++){var d=a[k].split("="),g=c.decodeQuery(d.shift()),d=d.length?c.decodeQuery(d.join("=")):null;b[g]?("string"===typeof b[g]&&(b[g]=[b[g]]),b[g].push(d)):b[g]=d}return b};c.build=function(a){var b="";a.protocol&&(b+=a.protocol+":");if(!a.urn&&(b||a.hostname))b+="//";b+=c.buildAuthority(a)||"";"string"===typeof a.path&&("/"!==a.path[0]&&"string"===typeof a.hostname&&(b+="/"),b+=a.path);"string"===typeof a.query&&(b+="?"+a.query);"string"===typeof a.fragment&&(b+="#"+a.fragment);
|
||||
return b};c.buildHost=function(a){var b="";if(a.hostname)c.ip6_expression.test(a.hostname)?b=a.port?b+("["+a.hostname+"]:"+a.port):b+a.hostname:(b+=a.hostname,a.port&&(b+=":"+a.port));else return"";return b};c.buildAuthority=function(a){return c.buildUserinfo(a)+c.buildHost(a)};c.buildUserinfo=function(a){var b="";a.username&&(b+=c.encode(a.username),a.password&&(b+=":"+c.encode(a.password)),b+="@");return b};c.buildQuery=function(a,b){var e="",k;for(k in a)if(Object.hasOwnProperty.call(a,k)&&k)if(h(a[k]))for(var g=
|
||||
{},f=0,m=a[k].length;f<m;f++)a[k][f]!==d&&g[a[k][f]+""]===d&&(e+="&"+c.buildQueryParameter(k,a[k][f]),!0!==b&&(g[a[k][f]+""]=!0));else a[k]!==d&&(e+="&"+c.buildQueryParameter(k,a[k]));return e.substring(1)};c.buildQueryParameter=function(a,b){return c.encodeQuery(a)+(null!==b?"="+c.encodeQuery(b):"")};c.addQuery=function(a,b,e){if("object"===typeof b)for(var k in b)Object.prototype.hasOwnProperty.call(b,k)&&c.addQuery(a,k,b[k]);else if("string"===typeof b)a[b]===d?a[b]=e:("string"===typeof a[b]&&
|
||||
(a[b]=[a[b]]),h(e)||(e=[e]),a[b]=a[b].concat(e));else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");};c.removeQuery=function(a,b,e){if(h(b))for(var e=0,k=b.length;e<k;e++)a[b[e]]=d;else if("object"===typeof b)for(k in b)Object.prototype.hasOwnProperty.call(b,k)&&c.removeQuery(a,k,b[k]);else if("string"===typeof b)if(e!==d)if(a[b]===e)a[b]=d;else{if(h(a[b])){var k=a[b],g={},f,m;if(h(e)){f=0;for(m=e.length;f<m;f++)g[e[f]]=!0}else g[e]=!0;f=0;for(m=k.length;f<
|
||||
m;f++)g[k[f]]!==d&&(k.splice(f,1),m--,f--);a[b]=k}}else a[b]=d;else throw new TypeError("URI.addQuery() accepts an object, string as the first parameter");};c.commonPath=function(a,b){var e=Math.min(a.length,b.length),c;for(c=0;c<e;c++)if(a[c]!==b[c]){c--;break}if(1>c)return a[0]===b[0]&&"/"===a[0]?"/":"";"/"!==a[c]&&(c=a.substring(0,c).lastIndexOf("/"));return a.substring(0,c+1)};c.withinString=function(a,b){return a.replace(c.find_uri_expression,b)};c.ensureValidHostname=function(a){if(a.match(c.invalid_hostname_characters)){if(!s)throw new TypeError("Hostname '"+
|
||||
a+"' contains characters other than [A-Z0-9.-] and Punycode.js is not available");if(s.toASCII(a).match(c.invalid_hostname_characters))throw new TypeError("Hostname '"+a+"' contains characters other than [A-Z0-9.-]");}};f.build=function(a){if(!0===a)this._deferred_build=!0;else if(a===d||this._deferred_build)this._string=c.build(this._parts),this._deferred_build=!1;return this};f.clone=function(){return new c(this)};f.toString=function(){return this.build(!1)._string};f.valueOf=function(){return this.toString()};
|
||||
m={protocol:"protocol",username:"username",password:"password",hostname:"hostname",port:"port"};q=function(a){return function(b,e){if(b===d)return this._parts[a]||"";this._parts[a]=b;this.build(!e);return this}};for(l in m)f[l]=q(m[l]);m={query:"?",fragment:"#"};q=function(a,b){return function(e,c){if(e===d)return this._parts[a]||"";null!==e&&(e+="",e[0]===b&&(e=e.substring(1)));this._parts[a]=e;this.build(!c);return this}};for(l in m)f[l]=q(l,m[l]);m={search:["?","query"],hash:["#","fragment"]};
|
||||
q=function(a,b){return function(e,c){var d=this[a](e,c);return"string"===typeof d&&d.length?b+d:d}};for(l in m)f[l]=q(m[l][1],m[l][0]);f.pathname=function(a,b){if(a===d||!0===a){var e=this._parts.path||(this._parts.urn?"":"/");return a?c.decodePath(e):e}this._parts.path=a?c.recodePath(a):"/";this.build(!b);return this};f.path=f.pathname;f.href=function(a,b){if(a===d)return this.toString();this._string="";this._parts={protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null,
|
||||
query:null,fragment:null};var e=a instanceof c,k="object"===typeof a&&(a.hostname||a.path),g;if("string"===typeof a)this._parts=c.parse(a);else if(e||k)for(g in e=e?a._parts:a,e)Object.hasOwnProperty.call(this._parts,g)&&(this._parts[g]=e[g]);else throw new TypeError("invalid input");this.build(!b);return this};f.is=function(a){var b=!1,e=!1,d=!1,f=!1,m=!1,l=!1,h=!1,i=!this._parts.urn;this._parts.hostname&&(i=!1,e=c.ip4_expression.test(this._parts.hostname),d=c.ip6_expression.test(this._parts.hostname),
|
||||
b=e||d,m=(f=!b)&&g&&g.has(this._parts.hostname),l=f&&c.idn_expression.test(this._parts.hostname),h=f&&c.punycode_expression.test(this._parts.hostname));switch(a.toLowerCase()){case "relative":return i;case "absolute":return!i;case "domain":case "name":return f;case "sld":return m;case "ip":return b;case "ip4":case "ipv4":case "inet4":return e;case "ip6":case "ipv6":case "inet6":return d;case "idn":return l;case "url":return!this._parts.urn;case "urn":return!!this._parts.urn;case "punycode":return h}return null};
|
||||
var y=f.protocol,n=f.port,p=f.hostname;f.protocol=function(a,b){if(a!==d&&a&&(a=a.replace(/:(\/\/)?$/,""),a.match(/[^a-zA-z0-9\.+-]/)))throw new TypeError("Protocol '"+a+"' contains characters other than [A-Z0-9.+-]");return y.call(this,a,b)};f.scheme=f.protocol;f.port=function(a,b){if(this._parts.urn)return a===d?"":this;if(a!==d&&(0===a&&(a=null),a&&(a+="",":"===a[0]&&(a=a.substring(1)),a.match(/[^0-9]/))))throw new TypeError("Port '"+a+"' contains characters other than [0-9]");return n.call(this,
|
||||
a,b)};f.hostname=function(a,b){if(this._parts.urn)return a===d?"":this;if(a!==d){var e={};c.parseHost(a,e);a=e.hostname}return p.call(this,a,b)};f.host=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d)return this._parts.hostname?c.buildHost(this._parts):"";c.parseHost(a,this._parts);this.build(!b);return this};f.authority=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d)return this._parts.hostname?c.buildAuthority(this._parts):"";c.parseAuthority(a,this._parts);this.build(!b);
|
||||
return this};f.userinfo=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d){if(!this._parts.username)return"";var e=c.buildUserinfo(this._parts);return e.substring(0,e.length-1)}"@"!==a[a.length-1]&&(a+="@");c.parseUserinfo(a,this._parts);this.build(!b);return this};f.subdomain=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d){if(!this._parts.hostname||this.is("IP"))return"";var e=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,
|
||||
e)||""}e=this._parts.hostname.length-this.domain().length;e=this._parts.hostname.substring(0,e);e=RegExp("^"+j(e));a&&"."!==a[a.length-1]&&(a+=".");a&&c.ensureValidHostname(a);this._parts.hostname=this._parts.hostname.replace(e,a);this.build(!b);return this};f.domain=function(a,b){if(this._parts.urn)return a===d?"":this;"boolean"===typeof a&&(b=a,a=d);if(a===d){if(!this._parts.hostname||this.is("IP"))return"";var e=this._parts.hostname.match(/\./g);if(e&&2>e.length)return this._parts.hostname;e=this._parts.hostname.length-
|
||||
this.tld(b).length-1;e=this._parts.hostname.lastIndexOf(".",e-1)+1;return this._parts.hostname.substring(e)||""}if(!a)throw new TypeError("cannot set domain empty");c.ensureValidHostname(a);!this._parts.hostname||this.is("IP")?this._parts.hostname=a:(e=RegExp(j(this.domain())+"$"),this._parts.hostname=this._parts.hostname.replace(e,a));this.build(!b);return this};f.tld=function(a,b){if(this._parts.urn)return a===d?"":this;"boolean"===typeof a&&(b=a,a=d);if(a===d){if(!this._parts.hostname||this.is("IP"))return"";
|
||||
var c=this._parts.hostname.lastIndexOf("."),c=this._parts.hostname.substring(c+1);return!0!==b&&g&&g.list[c.toLowerCase()]?g.get(this._parts.hostname)||c:c}if(a)if(a.match(/[^a-zA-Z0-9-]/))if(g&&g.is(a))c=RegExp(j(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(c,a);else throw new TypeError("TLD '"+a+"' contains characters other than [A-Z0-9]");else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");c=RegExp(j(this.tld())+"$");
|
||||
this._parts.hostname=this._parts.hostname.replace(c,a)}else throw new TypeError("cannot set TLD empty");this.build(!b);return this};f.directory=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d||!0===a){if(!this._parts.path&&!this._parts.hostname)return"";if("/"===this._parts.path)return"/";var e=this._parts.path.length-this.filename().length-1,e=this._parts.path.substring(0,e)||(this._parts.hostname?"/":"");return a?c.decodePath(e):e}e=this._parts.path.length-this.filename().length;
|
||||
e=this._parts.path.substring(0,e);e=RegExp("^"+j(e));this.is("relative")||(a||(a="/"),"/"!==a[0]&&(a="/"+a));a&&"/"!==a[a.length-1]&&(a+="/");a=c.recodePath(a);this._parts.path=this._parts.path.replace(e,a);this.build(!b);return this};f.filename=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d||!0===a){if(!this._parts.path||"/"===this._parts.path)return"";var e=this._parts.path.lastIndexOf("/"),e=this._parts.path.substring(e+1);return a?c.decodePathSegment(e):e}e=!1;"/"===a[0]&&(a=a.substring(1));
|
||||
a.match(/\.?\//)&&(e=!0);var k=RegExp(j(this.filename())+"$"),a=c.recodePath(a);this._parts.path=this._parts.path.replace(k,a);e?this.normalizePath(b):this.build(!b);return this};f.suffix=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d||!0===a){if(!this._parts.path||"/"===this._parts.path)return"";var e=this.filename(),k=e.lastIndexOf(".");if(-1===k)return"";e=e.substring(k+1);e=/^[a-z0-9%]+$/i.test(e)?e:"";return a?c.decodePathSegment(e):e}"."===a[0]&&(a=a.substring(1));if(e=this.suffix())k=
|
||||
a?RegExp(j(e)+"$"):RegExp(j("."+e)+"$");else{if(!a)return this;this._parts.path+="."+c.recodePath(a)}k&&(a=c.recodePath(a),this._parts.path=this._parts.path.replace(k,a));this.build(!b);return this};f.segment=function(a,b,c){var k=this._parts.urn?":":"/",g=this.path(),f="/"===g.substring(0,1),g=g.split(k);"number"!==typeof a&&(c=b,b=a,a=d);if(a!==d&&"number"!==typeof a)throw Error("Bad segment '"+a+"', must be 0-based integer");f&&g.shift();0>a&&(a=Math.max(g.length+a,0));if(b===d)return a===d?g:
|
||||
g[a];if(null===a||g[a]===d)if(h(b))g=b;else{if(b||"string"===typeof b&&b.length)""===g[g.length-1]?g[g.length-1]=b:g.push(b)}else b||"string"===typeof b&&b.length?g[a]=b:g.splice(a,1);f&&g.unshift("");return this.path(g.join(k),c)};var r=f.query;f.query=function(a,b){return!0===a?c.parseQuery(this._parts.query):a!==d&&"string"!==typeof a?(this._parts.query=c.buildQuery(a),this.build(!b),this):r.call(this,a,b)};f.addQuery=function(a,b,e){var d=c.parseQuery(this._parts.query);c.addQuery(d,a,b);this._parts.query=
|
||||
c.buildQuery(d);"string"!==typeof a&&(e=b);this.build(!e);return this};f.removeQuery=function(a,b,e){var d=c.parseQuery(this._parts.query);c.removeQuery(d,a,b);this._parts.query=c.buildQuery(d);"string"!==typeof a&&(e=b);this.build(!e);return this};f.addSearch=f.addQuery;f.removeSearch=f.removeQuery;f.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()};
|
||||
f.normalizeProtocol=function(a){"string"===typeof this._parts.protocol&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!a));return this};f.normalizeHostname=function(a){this._parts.hostname&&(this.is("IDN")&&s?this._parts.hostname=s.toASCII(this._parts.hostname):this.is("IPv6")&&u&&(this._parts.hostname=u.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!a));return this};f.normalizePort=function(a){"string"===typeof this._parts.protocol&&
|
||||
this._parts.port===c.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!a));return this};f.normalizePath=function(a){if(this._parts.urn||!this._parts.path||"/"===this._parts.path)return this;var b,e,d=this._parts.path,g,f;"/"!==d[0]&&("."===d[0]&&(e=d.substring(0,d.indexOf("/"))),b=!0,d="/"+d);for(d=d.replace(/(\/(\.\/)+)|\/{2,}/g,"/");;){g=d.indexOf("/../");if(-1===g)break;else if(0===g){d=d.substring(3);break}f=d.substring(0,g).lastIndexOf("/");-1===f&&(f=g);d=d.substring(0,
|
||||
f)+d.substring(g+3)}b&&this.is("relative")&&(d=e?e+d:d.substring(1));d=c.recodePath(d);this._parts.path=d;this.build(!a);return this};f.normalizePathname=f.normalizePath;f.normalizeQuery=function(a){"string"===typeof this._parts.query&&(this._parts.query.length?this.query(c.parseQuery(this._parts.query)):this._parts.query=null,this.build(!a));return this};f.normalizeFragment=function(a){this._parts.fragment||(this._parts.fragment=null,this.build(!a));return this};f.normalizeSearch=f.normalizeQuery;
|
||||
f.normalizeHash=f.normalizeFragment;f.iso8859=function(){var a=c.encode,b=c.decode;c.encode=escape;c.decode=decodeURIComponent;this.normalize();c.encode=a;c.decode=b;return this};f.unicode=function(){var a=c.encode,b=c.decode;c.encode=i;c.decode=unescape;this.normalize();c.encode=a;c.decode=b;return this};f.readable=function(){var a=this.clone();a.username("").password("").normalize();var b="";a._parts.protocol&&(b+=a._parts.protocol+"://");a._parts.hostname&&(a.is("punycode")&&s?(b+=s.toUnicode(a._parts.hostname),
|
||||
a._parts.port&&(b+=":"+a._parts.port)):b+=a.host());a._parts.hostname&&(a._parts.path&&"/"!==a._parts.path[0])&&(b+="/");b+=a.path(!0);if(a._parts.query){for(var e="",g=0,f=a._parts.query.split("&"),m=f.length;g<m;g++){var l=(f[g]||"").split("="),e=e+("&"+c.decodeQuery(l[0]).replace(/&/g,"%26"));l[1]!==d&&(e+="="+c.decodeQuery(l[1]).replace(/&/g,"%26"))}b+="?"+e.substring(1)}return b+=a.hash()};f.absoluteTo=function(a){var b=this.clone(),e=["protocol","username","password","hostname","port"],d,g;
|
||||
if(this._parts.urn)throw Error("URNs do not have any generally defined hierachical components");if(this._parts.hostname)return b;a instanceof c||(a=new c(a));d=0;for(g;g=e[d];d++)b._parts[g]=a._parts[g];e=["query","path"];d=0;for(g;g=e[d];d++)!b._parts[g]&&a._parts[g]&&(b._parts[g]=a._parts[g]);"/"!==b.path()[0]&&(a=a.directory(),b._parts.path=(a?a+"/":"")+b._parts.path,b.normalizePath());b.build();return b};f.relativeTo=function(a){var b=this.clone(),e=["protocol","username","password","hostname",
|
||||
"port"],d;if(this._parts.urn)throw Error("URNs do not have any generally defined hierachical components");a instanceof c||(a=new c(a));if("/"!==this.path()[0]||"/"!==a.path()[0])throw Error("Cannot calculate common path from non-relative URLs");d=c.commonPath(b.path(),a.path());for(var a=a.directory(),g=0,f;f=e[g];g++)b._parts[f]=null;if(!d||"/"===d)return b;if(a+"/"===d)b._parts.path="./"+b.filename();else{e="../";d=RegExp("^"+j(d));for(a=a.replace(d,"/").match(/\//g).length-1;a--;)e+="../";b._parts.path=
|
||||
b._parts.path.replace(d,e)}b.build();return b};f.equals=function(a){var b=this.clone(),e=new c(a),d={},g={},a={},f;b.normalize();e.normalize();if(b.toString()===e.toString())return!0;d=b.query();g=e.query();b.query("");e.query("");if(b.toString()!==e.toString()||d.length!==g.length)return!1;d=c.parseQuery(d);g=c.parseQuery(g);for(f in d)if(Object.prototype.hasOwnProperty.call(d,f)){if(h(d[f])){if(!h(g[f])||d[f].length!==g[f].length)return!1;d[f].sort();g[f].sort();b=0;for(e=d[f].length;b<e;b++)if(d[f][b]!==
|
||||
g[f][b])return!1}else if(d[f]!==g[f])return!1;a[f]=!0}for(f in g)if(Object.prototype.hasOwnProperty.call(g,f)&&!a[f])return!1;return!0};"undefined"!==typeof module&&module.exports?module.exports=c:window.URI=c})();
|
||||
(function(d){var j=Object.prototype.hasOwnProperty,h="undefined"!==typeof module&&module.exports?require("./URI"):window.URI,i=function(d){if(i._cache[d])return i._cache[d];if(!(this instanceof i))return new i(d);this.expression=d;i._cache[d]=this;return this},f=function(d){this.data=d;this.cache={}},s=i.prototype,u={"":{prefix:"",separator:",",named:!1,empty_name_separator:!1,encode:"encode"},"+":{prefix:"",separator:",",named:!1,empty_name_separator:!1,encode:"encodeReserved"},"#":{prefix:"#",separator:",",
|
||||
named:!1,empty_name_separator:!1,encode:"encodeReserved"},".":{prefix:".",separator:".",named:!1,empty_name_separator:!1,encode:"encode"},"/":{prefix:"/",separator:"/",named:!1,empty_name_separator:!1,encode:"encode"},";":{prefix:";",separator:";",named:!0,empty_name_separator:!1,encode:"encode"},"?":{prefix:"?",separator:"&",named:!0,empty_name_separator:!0,encode:"encode"},"&":{prefix:"&",separator:"&",named:!0,empty_name_separator:!0,encode:"encode"}};i._cache={};i.EXPRESSION_PATTERN=/\{([^a-zA-Z0-9%_]?)([^\}]+)(\}|$)/g;
|
||||
i.VARIABLE_PATTERN=/^([^*:]+)((\*)|:(\d+))?$/;i.VARIABLE_NAME_PATTERN=/[^a-zA-Z0-9%_]/;i.expand=function(d,c){var f=u[d.operator],l=f.named?"Named":"Unnamed",h=d.variables,j=[],n,p,r;for(r=0;p=h[r];r++)n=c.get(p.name),n.val.length?j.push(i["expand"+l](n,f,p.explode,p.explode&&f.separator||",",p.maxlength,p.name)):n.type&&j.push("");return j.length?f.prefix+j.join(f.separator):""};i.expandNamed=function(g,c,f,l,i,j){var n="",p=c.encode,c=c.empty_name_separator,r=!g[p].length,a=2===g.type?"":h[p](j),
|
||||
b,e,k;e=0;for(k=g.val.length;e<k;e++)i?(b=h[p](g.val[e][1].substring(0,i)),2===g.type&&(a=h[p](g.val[e][0].substring(0,i)))):r?(b=h[p](g.val[e][1]),2===g.type?(a=h[p](g.val[e][0]),g[p].push([a,b])):g[p].push([d,b])):(b=g[p][e][1],2===g.type&&(a=g[p][e][0])),n&&(n+=l),f?n+=a+(c||b?"=":"")+b:(e||(n+=h[p](j)+(c||b?"=":"")),2===g.type&&(n+=a+","),n+=b);return n};i.expandUnnamed=function(g,c,f,l,i){var j="",n=c.encode,c=c.empty_name_separator,p=!g[n].length,r,a,b,e;b=0;for(e=g.val.length;b<e;b++)i?a=h[n](g.val[b][1].substring(0,
|
||||
i)):p?(a=h[n](g.val[b][1]),g[n].push([2===g.type?h[n](g.val[b][0]):d,a])):a=g[n][b][1],j&&(j+=l),2===g.type&&(r=i?h[n](g.val[b][0].substring(0,i)):g[n][b][0],j+=r,j=f?j+(c||a?"=":""):j+","),j+=a;return j};s.expand=function(d){var c="";(!this.parts||!this.parts.length)&&this.parse();d instanceof f||(d=new f(d));for(var j=0,l=this.parts.length;j<l;j++)c+="string"===typeof this.parts[j]?this.parts[j]:i.expand(this.parts[j],d);return c};s.parse=function(){var d=this.expression,c=i.EXPRESSION_PATTERN,
|
||||
f=i.VARIABLE_PATTERN,j=i.VARIABLE_NAME_PATTERN,h=[],s=0,n,p,r;for(c.lastIndex=0;;){p=c.exec(d);if(null===p){h.push(d.substring(s));break}else h.push(d.substring(s,p.index)),s=p.index+p[0].length;if(u[p[1]]){if(!p[3])throw Error('Unclosed Expression "'+p[0]+'"');}else throw Error('Unknown Operator "'+p[1]+'" in "'+p[0]+'"');n=p[2].split(",");for(var a=0,b=n.length;a<b;a++){r=n[a].match(f);if(null===r)throw Error('Invalid Variable "'+n[a]+'" in "'+p[0]+'"');if(r[1].match(j))throw Error('Invalid Variable Name "'+
|
||||
r[1]+'" in "'+p[0]+'"');n[a]={name:r[1],explode:!!r[3],maxlength:r[4]&&parseInt(r[4],10)}}if(!n.length)throw Error('Expression Missing Variable(s) "'+p[0]+'"');h.push({expression:p[0],operator:p[1],variables:n})}h.length||h.push(d);this.parts=h;return this};f.prototype.get=function(f){var c=this.data,h={type:0,val:[],encode:[],encodeReserved:[]},i;if(this.cache[f]!==d)return this.cache[f];this.cache[f]=h;c="[object Function]"===String(Object.prototype.toString.call(c))?c(f):"[object Function]"===
|
||||
String(Object.prototype.toString.call(c[f]))?c[f](f):c[f];if(!(c===d||null===c))if("[object Array]"===String(Object.prototype.toString.call(c))){i=0;for(f=c.length;i<f;i++)c[i]!==d&&null!==c[i]&&h.val.push([d,String(c[i])]);h.val.length&&(h.type=3)}else if("[object Object]"===String(Object.prototype.toString.call(c))){for(i in c)j.call(c,i)&&(c[i]!==d&&null!==c[i])&&h.val.push([i,String(c[i])]);h.val.length&&(h.type=2)}else h.type=1,h.val.push([d,String(c)]);return h};h.expand=function(d,c){var f=
|
||||
(new i(d)).expand(c);return new h(f)};"undefined"!==typeof module&&module.exports?module.exports=i:window.URITemplate=i})();
|
Binary file not shown.
|
@ -6,24 +6,17 @@
|
|||
// Licence: BSD (see attached LICENCE.txt file).
|
||||
//
|
||||
|
||||
MY_ENTITY = "http://lala.home.jeena.net:3002";
|
||||
|
||||
var app_info = {
|
||||
"name": "Tentia",
|
||||
"description": "A small TentStatus client.",
|
||||
"url": "http://jabs.nu/Tentia/",
|
||||
"icon": "http://jabs.nu/Tentia/icon.png",
|
||||
"redirect_uris": [
|
||||
"tentia://oauthtoken"
|
||||
],
|
||||
"scopes": {
|
||||
"read_posts": "Uses posts to show them in a list",
|
||||
"write_posts": "Posts on users behalf"
|
||||
}
|
||||
};
|
||||
|
||||
function getURL(url, type, callback, data) {
|
||||
function getURL(url, type, callback, data, auth_header) {
|
||||
$.ajax({
|
||||
beforeSend: function(xhr) {
|
||||
if (data) {
|
||||
xhr.setRequestHeader("Content-Length", data.length);
|
||||
}
|
||||
|
||||
if (auth_header) {
|
||||
xhr.setRequestHeader("Authorization", auth_header);
|
||||
}
|
||||
},
|
||||
url: url,
|
||||
accepts: "application/vnd.tent.v0+json",
|
||||
contentType: "application/vnd.tent.v0+json",
|
||||
|
@ -32,167 +25,15 @@ function getURL(url, type, callback, data) {
|
|||
data: data,
|
||||
processData: false,
|
||||
error: function(xhr, ajaxOptions, thrownError) {
|
||||
alert(xhr.statusText);
|
||||
alert(ajaxOptions);
|
||||
alert(thrownError);
|
||||
alert("getURL ERROR:");
|
||||
alert(xhr.statusText);
|
||||
alert(ajaxOptions);
|
||||
alert(thrownError);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function makeid(len) {
|
||||
var text = "";
|
||||
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
|
||||
for( var i=0; i < len; i++ )
|
||||
text += possible.charAt(Math.floor(Math.random() * possible.length));
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
function OauthImplementation() {
|
||||
this.requestProfileURL(MY_ENTITY);
|
||||
//this.requestAToken();
|
||||
}
|
||||
|
||||
OauthImplementation.prototype.requestProfileURL = function (entity) {
|
||||
var those = this;
|
||||
getURL(entity, "HEAD", function(resp) {
|
||||
var headers = resp.getAllResponseHeaders();
|
||||
var regex = /Link: <([^>]*)>; rel="https:\/\/tent.io\/rels\/profile"/;
|
||||
var profile_url = headers.match(regex)[1]
|
||||
if (profile_url == "/profile") {
|
||||
profile_url = entity + "/profile";
|
||||
}
|
||||
alert(profile_url);
|
||||
those.register(profile_url);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
OauthImplementation.prototype.register = function (url) {
|
||||
var those = this;
|
||||
getURL(url, "GET", function(resp) {
|
||||
var profile = JSON.parse(resp.responseText);
|
||||
var server = profile["https://tent.io/types/info/core/v0.1.0"]["servers"][0];
|
||||
var callback = function(resp) {
|
||||
var data = JSON.parse(resp.responseText);
|
||||
those.authRequest(server, data);
|
||||
}
|
||||
alert(server + "/apps")
|
||||
getURL(server + "/apps", "POST", callback, JSON.stringify(app_info));
|
||||
});
|
||||
}
|
||||
|
||||
OauthImplementation.prototype.authRequest = function(server, register_data) {
|
||||
// id
|
||||
// mac_key_id
|
||||
// mac_key
|
||||
// mac_algorithm
|
||||
var state = makeid(19);
|
||||
var auth = "/oauth/authorize?client_id=" + register_data["id"]
|
||||
+ "&redirect_uri=" + escape(app_info["redirect_uris"][0])
|
||||
+ "&scope=" + Object.keys(app_info["scopes"]).join(",")
|
||||
+ "&state=" + state
|
||||
+ "&tent_post_types=" + escape("https://tent.io/types/posts/status/v0.1.0");
|
||||
|
||||
alert(server + auth)
|
||||
controller.openURL_(server + auth);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
OauthImplementation.prototype.requestAToken = function() {
|
||||
var url = OAUTH_REQUEST_TOKEN_URL;
|
||||
var _this = this;
|
||||
|
||||
var message = { method:"POST" , action:url };
|
||||
|
||||
OAuth.completeRequest(message,
|
||||
{ consumerKey : OAUTH_CONSUMER_KEY
|
||||
, consumerSecret: OAUTH_CONSUMER_SECRET
|
||||
//, token : controller.oauth.accessToken.key
|
||||
//, tokenSecret : controller.oauth.accessToken.secret
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
beforeSend: function(xhr) {
|
||||
xhr.setRequestHeader("Authorization", OAuth.getAuthorizationHeader("", message.parameters));
|
||||
},
|
||||
url: url,
|
||||
type: 'POST',
|
||||
dataType: 'text',
|
||||
success: function(data) {
|
||||
_this.requestTokenTicketFinished(data);
|
||||
},
|
||||
error:function (xhr, ajaxOptions, thrownError) {
|
||||
alert(xhr.statusText);
|
||||
alert(ajaxOptions);
|
||||
alert(thrownError);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
OauthImplementation.prototype.requestTokenTicketFinished = function(data) {
|
||||
controller.openURL_(OAUTH_USER_AUTHORIZATION_URL + "?" + data);
|
||||
}
|
||||
|
||||
OauthImplementation.prototype.requestAccessToken = function(responseBody) {
|
||||
// "twittia://oauth_token?oauth_token=jCcf7ClzJMbE4coZdONi467OAQxRGOBZJsuopG8C8&oauth_verifier=BK2ZkAIz51lqI4qta8MnKc280GyDLy0OQBpdsEmjT40"
|
||||
alert("XXX");
|
||||
alert(responseBody);
|
||||
|
||||
|
||||
/*
|
||||
var urlVars = getUrlVars(responseBody);
|
||||
|
||||
var url = OAUTH_ACCESS_TOKEN_URL;
|
||||
var _this = this;
|
||||
var accessTokenKey = getUrlVars(responseBody)
|
||||
|
||||
var message = { method:"POST" , action:url };
|
||||
|
||||
OAuth.completeRequest(message,
|
||||
{ consumerKey : OAUTH_CONSUMER_KEY
|
||||
, consumerSecret: OAUTH_CONSUMER_SECRET
|
||||
, token : urlVars["oauth_token"]
|
||||
, tokenSecret : urlVars["oauth_verifier"]
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
beforeSend: function(xhr) {
|
||||
xhr.setRequestHeader("Authorization", OAuth.getAuthorizationHeader("", message.parameters));
|
||||
},
|
||||
url: url,
|
||||
type: 'POST',
|
||||
dataType: 'text',
|
||||
success: function(data) {
|
||||
_this.requestAccessTokenTicketFinished(data);
|
||||
},
|
||||
error:function (xhr, ajaxOptions, thrownError) {
|
||||
alert(xhr.statusText);
|
||||
alert(ajaxOptions);
|
||||
alert(thrownError);
|
||||
}
|
||||
});*/
|
||||
}
|
||||
|
||||
OauthImplementation.prototype.requestAccessTokenTicketFinished = function(responseBody) {
|
||||
var urlVars = getUrlVars(responseBody);
|
||||
controller.storeAccessToken_secret_userId_andScreenName_(
|
||||
urlVars["oauth_token"],
|
||||
urlVars["oauth_token_secret"],
|
||||
urlVars["user_id"],
|
||||
urlVars["screen_name"]
|
||||
);
|
||||
}
|
||||
|
||||
function getUrlVars(url)
|
||||
{
|
||||
function getUrlVars(url) {
|
||||
var vars = [], hash;
|
||||
if(url.indexOf("#") > -1) url = url.slice(0, url.indexOf("#"));
|
||||
var hashes = url.slice(url.indexOf('?') + 1).split('&');
|
||||
|
@ -205,4 +46,151 @@ function getUrlVars(url)
|
|||
return vars;
|
||||
}
|
||||
|
||||
function makeAuthHeader(url, http_method, mac_key, mac_key_id) {
|
||||
|
||||
url = URI(url);
|
||||
var nonce = makeid(8);
|
||||
var time_stamp = parseInt((new Date).getTime() / 1000, 10);
|
||||
|
||||
var normalizedRequestString = ""
|
||||
+ time_stamp + '\n'
|
||||
+ nonce + '\n'
|
||||
+ http_method + '\n'
|
||||
+ url.path() + '\n'
|
||||
+ url.hostname() + '\n'
|
||||
+ url.port() + '\n'
|
||||
+ '\n' ;
|
||||
|
||||
var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, mac_key);
|
||||
hmac.update(normalizedRequestString);
|
||||
var hash = hmac.finalize();
|
||||
var mac = hash.toString(CryptoJS.enc.Base64);
|
||||
|
||||
return 'MAC id="' + mac_key_id +
|
||||
'", ts="' + time_stamp +
|
||||
'", nonce="' + nonce +
|
||||
'", mac="' + mac + '"';
|
||||
}
|
||||
|
||||
|
||||
function makeid(len) {
|
||||
var text = "";
|
||||
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
|
||||
for( var i=0; i < len; i++ )
|
||||
text += possible.charAt(Math.floor(Math.random() * possible.length));
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
function OauthImplementation(entity) {
|
||||
this.entity = entity || "http://lala.home.jeena.net:3002";
|
||||
this.app_info = {
|
||||
"id": null,
|
||||
"name": "Tentia",
|
||||
"description": "A small TentStatus client.",
|
||||
"url": "http://jabs.nu/Tentia/",
|
||||
"icon": "http://jabs.nu/Tentia/icon.png",
|
||||
"redirect_uris": [
|
||||
"tentia://oauthtoken"
|
||||
],
|
||||
"scopes": {
|
||||
"read_posts": "Uses posts to show them in a list",
|
||||
"write_posts": "Posts on users behalf"
|
||||
}
|
||||
};
|
||||
this.register_data = null;
|
||||
this.profile = null;
|
||||
this.state = null;
|
||||
this.requestProfileURL(this.entity);
|
||||
}
|
||||
|
||||
OauthImplementation.prototype.apiRoot = function() {
|
||||
return this.profile["https://tent.io/types/info/core/v0.1.0"]["servers"][0];
|
||||
}
|
||||
|
||||
OauthImplementation.prototype.requestProfileURL = function (entity) {
|
||||
var those = this;
|
||||
getURL(entity, "HEAD", function(resp) {
|
||||
var headers = resp.getAllResponseHeaders();
|
||||
var regex = /Link: <([^>]*)>; rel="https:\/\/tent.io\/rels\/profile"/;
|
||||
var profile_url = headers.match(regex)[1]
|
||||
if (profile_url == "/profile") {
|
||||
profile_url = entity + "/profile";
|
||||
}
|
||||
those.register(profile_url);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
OauthImplementation.prototype.register = function (url) {
|
||||
var those = this;
|
||||
getURL(url, "GET", function(resp) {
|
||||
those.profile = JSON.parse(resp.responseText);
|
||||
var callback = function(resp) {
|
||||
var data = JSON.parse(resp.responseText);
|
||||
those.authRequest(data);
|
||||
}
|
||||
getURL(those.apiRoot() + "/apps", "POST", callback, JSON.stringify(those.app_info));
|
||||
});
|
||||
}
|
||||
|
||||
OauthImplementation.prototype.authRequest = function(register_data) {
|
||||
// id
|
||||
// mac_key_id
|
||||
// mac_key
|
||||
// mac_algorithm
|
||||
this.register_data = register_data;
|
||||
|
||||
this.state = makeid(19);
|
||||
var auth = "/oauth/authorize?client_id=" + register_data["id"]
|
||||
+ "&redirect_uri=" + escape(this.app_info["redirect_uris"][0])
|
||||
+ "&scope=" + Object.keys(this.app_info["scopes"]).join(",")
|
||||
+ "&state=" + this.state
|
||||
+ "&tent_post_types=" + escape("https://tent.io/types/posts/status/v0.1.0");
|
||||
|
||||
controller.openURL_(this.apiRoot() + auth);
|
||||
}
|
||||
|
||||
OauthImplementation.prototype.requestAccessToken = function(responseBody) {
|
||||
// /oauthtoken?code=51d0115b04d1ed94001dde751c5b360f&state=aQfH1VEohYsQr86qqyv
|
||||
var urlVars = getUrlVars(responseBody);
|
||||
if(this.state && this.state != "" && urlVars["state"] == this.state) {
|
||||
|
||||
var url = this.apiRoot() + "/apps/" + this.register_data["id"] + "/authorizations";
|
||||
|
||||
var requestBody = JSON.stringify({
|
||||
'code' : urlVars["code"],
|
||||
'token_type' : "mac"
|
||||
});
|
||||
|
||||
var those = this;
|
||||
var callback = function(resp) {
|
||||
those.requestAccessTokenTicketFinished(resp.responseText);
|
||||
};
|
||||
|
||||
var auth_header = makeAuthHeader(url, "POST", this.register_data["mac_key"], this.register_data["mac_key_id"]);
|
||||
getURL(url, "POST", callback, requestBody, auth_header);
|
||||
|
||||
} else {
|
||||
alert("State is not the same: {" + this.state + "} vs {" + urlVars["state"] + "}")
|
||||
}
|
||||
|
||||
this.state = null; // reset the state
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
OauthImplementation.prototype.requestAccessTokenTicketFinished = function(responseBody) {
|
||||
|
||||
var secret_data = {
|
||||
access: JSON.parse(responseBody),
|
||||
register_data: this.register_data
|
||||
}
|
||||
|
||||
controller.storeSecretData_(JSON.stringify(secret_data));
|
||||
}
|
||||
|
||||
var tentia_oauth;
|
70
build/Debug/Tentia.app/Contents/Resources/URI.min.js
vendored
Normal file
70
build/Debug/Tentia.app/Contents/Resources/URI.min.js
vendored
Normal file
|
@ -0,0 +1,70 @@
|
|||
/*! URI.js v1.7.4 http://medialize.github.com/URI.js/ */
|
||||
/* build contains: IPv6.js, punycode.js, SecondLevelDomains.js, URI.js, URITemplate.js */
|
||||
(function(){("undefined"!==typeof module&&module.exports?module.exports:window).IPv6={best:function(d){var d=d.toLowerCase().split(":"),j=d.length,h=8;""===d[0]&&""===d[1]&&""===d[2]?(d.shift(),d.shift()):""===d[0]&&""===d[1]?d.shift():""===d[j-1]&&""===d[j-2]&&d.pop();j=d.length;-1!==d[j-1].indexOf(".")&&(h=7);var i;for(i=0;i<j&&""!==d[i];i++);if(i<h)for(d.splice(i,1,"0000");d.length<h;)d.splice(i,0,"0000");for(i=0;i<h;i++){for(var j=d[i].split(""),f=0;3>f;f++)if("0"===j[0]&&1<j.length)j.splice(0,
|
||||
1);else break;d[i]=j.join("")}var j=-1,s=f=0,u=-1,g=!1;for(i=0;i<h;i++)g?"0"===d[i]?s+=1:(g=!1,s>f&&(j=u,f=s)):"0"==d[i]&&(g=!0,u=i,s=1);s>f&&(j=u,f=s);1<f&&d.splice(j,f,"");j=d.length;h="";""===d[0]&&(beststr=":");for(i=0;i<j;i++){h+=d[i];if(i===j-1)break;h+=":"}""===d[j-1]&&(h+=":");return h}}})();
|
||||
(function(d){function j(a){throw RangeError(C[a]);}function h(a,b){for(var e=a.length;e--;)a[e]=b(a[e]);return a}function i(a){for(var b=[],e=0,c=a.length,k,d;e<c;)k=a.charCodeAt(e++),55296==(k&63488)&&(d=a.charCodeAt(e++),(55296!=(k&64512)||56320!=(d&64512))&&j("ucs2decode"),k=((k&1023)<<10)+(d&1023)+65536),b.push(k);return b}function f(a){return h(a,function(a){var b="";55296==(a&63488)&&j("ucs2encode");65535<a&&(a-=65536,b+=z(a>>>10&1023|55296),a=56320|a&1023);return b+=z(a)}).join("")}function s(e,
|
||||
c,k){for(var d=0,e=k?w(e/b):e>>1,e=e+w(e/c);e>x*r>>1;d+=n)e=w(e/x);return w(d+(x+1)*e/(e+a))}function u(a){var b=[],c=a.length,d,g=0,t=k,i=e,m,h,l,q,v;m=a.lastIndexOf(B);0>m&&(m=0);for(h=0;h<m;++h)128<=a.charCodeAt(h)&&j("not-basic"),b.push(a.charCodeAt(h));for(m=0<m?m+1:0;m<c;){h=g;d=1;for(l=n;;l+=n){m>=c&&j("invalid-input");q=a.charCodeAt(m++);q=10>q-48?q-22:26>q-65?q-65:26>q-97?q-97:n;(q>=n||q>w((y-g)/d))&&j("overflow");g+=q*d;v=l<=i?p:l>=i+r?r:l-i;if(q<v)break;q=n-v;d>w(y/q)&&j("overflow");d*=
|
||||
q}d=b.length+1;i=s(g-h,d,0==h);w(g/d)>y-t&&j("overflow");t+=w(g/d);g%=d;b.splice(g++,0,t)}return f(b)}function g(a){var b,c,d,g,f,t,m,h,l,q=[],v,u,x,a=i(a);v=a.length;b=k;c=0;f=e;for(t=0;t<v;++t)l=a[t],128>l&&q.push(z(l));for((d=g=q.length)&&q.push(B);d<v;){m=y;for(t=0;t<v;++t)l=a[t],l>=b&&l<m&&(m=l);u=d+1;m-b>w((y-c)/u)&&j("overflow");c+=(m-b)*u;b=m;for(t=0;t<v;++t)if(l=a[t],l<b&&++c>y&&j("overflow"),l==b){h=c;for(m=n;;m+=n){l=m<=f?p:m>=f+r?r:m-f;if(h<l)break;x=h-l;h=n-l;q.push(z(l+x%h+22+75*(26>
|
||||
l+x%h)-0));h=w(x/h)}q.push(z(h+22+75*(26>h)-0));f=s(c,u,d==g);c=0;++d}++c;++b}return q.join("")}var c,m="function"==typeof define&&"object"==typeof define.amd&&define.amd&&define,l="object"==typeof exports&&exports,q="object"==typeof module&&module,y=2147483647,n=36,p=1,r=26,a=38,b=700,e=72,k=128,B="-",t=/[^ -~]/,v=/^xn--/,C={overflow:"Overflow: input needs wider integers to process.",ucs2decode:"UCS-2(decode): illegal sequence",ucs2encode:"UCS-2(encode): illegal value","not-basic":"Illegal input >= 0x80 (not a basic code point)",
|
||||
"invalid-input":"Invalid input"},x=n-p,w=Math.floor,z=String.fromCharCode,A;c={version:"0.3.0",ucs2:{decode:i,encode:f},decode:u,encode:g,toASCII:function(a){return h(a.split("."),function(a){return t.test(a)?"xn--"+g(a):a}).join(".")},toUnicode:function(a){return h(a.split("."),function(a){return v.test(a)?u(a.slice(4).toLowerCase()):a}).join(".")}};if(l)if(q&&q.exports==l)q.exports=c;else for(A in c)c.hasOwnProperty(A)&&(l[A]=c[A]);else m?define("punycode",c):d.punycode=c})(this);
|
||||
(function(){var d={list:{ac:"com|gov|mil|net|org",ae:"ac|co|gov|mil|name|net|org|pro|sch",af:"com|edu|gov|net|org",al:"com|edu|gov|mil|net|org",ao:"co|ed|gv|it|og|pb",ar:"com|edu|gob|gov|int|mil|net|org|tur",at:"ac|co|gv|or",au:"asn|com|csiro|edu|gov|id|net|org",ba:"co|com|edu|gov|mil|net|org|rs|unbi|unmo|unsa|untz|unze",bb:"biz|co|com|edu|gov|info|net|org|store|tv",bh:"biz|cc|com|edu|gov|info|net|org",bn:"com|edu|gov|net|org",bo:"com|edu|gob|gov|int|mil|net|org|tv",br:"adm|adv|agr|am|arq|art|ato|b|bio|blog|bmd|cim|cng|cnt|com|coop|ecn|edu|eng|esp|etc|eti|far|flog|fm|fnd|fot|fst|g12|ggf|gov|imb|ind|inf|jor|jus|lel|mat|med|mil|mus|net|nom|not|ntr|odo|org|ppg|pro|psc|psi|qsl|rec|slg|srv|tmp|trd|tur|tv|vet|vlog|wiki|zlg",
|
||||
bs:"com|edu|gov|net|org",bz:"du|et|om|ov|rg",ca:"ab|bc|mb|nb|nf|nl|ns|nt|nu|on|pe|qc|sk|yk",ck:"biz|co|edu|gen|gov|info|net|org",cn:"ac|ah|bj|com|cq|edu|fj|gd|gov|gs|gx|gz|ha|hb|he|hi|hl|hn|jl|js|jx|ln|mil|net|nm|nx|org|qh|sc|sd|sh|sn|sx|tj|tw|xj|xz|yn|zj",co:"com|edu|gov|mil|net|nom|org",cr:"ac|c|co|ed|fi|go|or|sa",cy:"ac|biz|com|ekloges|gov|ltd|name|net|org|parliament|press|pro|tm","do":"art|com|edu|gob|gov|mil|net|org|sld|web",dz:"art|asso|com|edu|gov|net|org|pol",ec:"com|edu|fin|gov|info|med|mil|net|org|pro",
|
||||
eg:"com|edu|eun|gov|mil|name|net|org|sci",er:"com|edu|gov|ind|mil|net|org|rochest|w",es:"com|edu|gob|nom|org",et:"biz|com|edu|gov|info|name|net|org",fj:"ac|biz|com|info|mil|name|net|org|pro",fk:"ac|co|gov|net|nom|org",fr:"asso|com|f|gouv|nom|prd|presse|tm",gg:"co|net|org",gh:"com|edu|gov|mil|org",gn:"ac|com|gov|net|org",gr:"com|edu|gov|mil|net|org",gt:"com|edu|gob|ind|mil|net|org",gu:"com|edu|gov|net|org",hk:"com|edu|gov|idv|net|org",id:"ac|co|go|mil|net|or|sch|web",il:"ac|co|gov|idf|k12|muni|net|org",
|
||||
"in":"ac|co|edu|ernet|firm|gen|gov|i|ind|mil|net|nic|org|res",iq:"com|edu|gov|i|mil|net|org",ir:"ac|co|dnssec|gov|i|id|net|org|sch",it:"edu|gov",je:"co|net|org",jo:"com|edu|gov|mil|name|net|org|sch",jp:"ac|ad|co|ed|go|gr|lg|ne|or",ke:"ac|co|go|info|me|mobi|ne|or|sc",kh:"com|edu|gov|mil|net|org|per",ki:"biz|com|de|edu|gov|info|mob|net|org|tel",km:"asso|com|coop|edu|gouv|k|medecin|mil|nom|notaires|pharmaciens|presse|tm|veterinaire",kn:"edu|gov|net|org",kr:"ac|busan|chungbuk|chungnam|co|daegu|daejeon|es|gangwon|go|gwangju|gyeongbuk|gyeonggi|gyeongnam|hs|incheon|jeju|jeonbuk|jeonnam|k|kg|mil|ms|ne|or|pe|re|sc|seoul|ulsan",
|
||||
kw:"com|edu|gov|net|org",ky:"com|edu|gov|net|org",kz:"com|edu|gov|mil|net|org",lb:"com|edu|gov|net|org",lk:"assn|com|edu|gov|grp|hotel|int|ltd|net|ngo|org|sch|soc|web",lr:"com|edu|gov|net|org",lv:"asn|com|conf|edu|gov|id|mil|net|org",ly:"com|edu|gov|id|med|net|org|plc|sch",ma:"ac|co|gov|m|net|org|press",mc:"asso|tm",me:"ac|co|edu|gov|its|net|org|priv",mg:"com|edu|gov|mil|nom|org|prd|tm",mk:"com|edu|gov|inf|name|net|org|pro",ml:"com|edu|gov|net|org|presse",mn:"edu|gov|org",mo:"com|edu|gov|net|org",
|
||||
mt:"com|edu|gov|net|org",mv:"aero|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro",mw:"ac|co|com|coop|edu|gov|int|museum|net|org",mx:"com|edu|gob|net|org",my:"com|edu|gov|mil|name|net|org|sch",nf:"arts|com|firm|info|net|other|per|rec|store|web",ng:"biz|com|edu|gov|mil|mobi|name|net|org|sch",ni:"ac|co|com|edu|gob|mil|net|nom|org",np:"com|edu|gov|mil|net|org",nr:"biz|com|edu|gov|info|net|org",om:"ac|biz|co|com|edu|gov|med|mil|museum|net|org|pro|sch",pe:"com|edu|gob|mil|net|nom|org|sld",ph:"com|edu|gov|i|mil|net|ngo|org",
|
||||
pk:"biz|com|edu|fam|gob|gok|gon|gop|gos|gov|net|org|web",pl:"art|bialystok|biz|com|edu|gda|gdansk|gorzow|gov|info|katowice|krakow|lodz|lublin|mil|net|ngo|olsztyn|org|poznan|pwr|radom|slupsk|szczecin|torun|warszawa|waw|wroc|wroclaw|zgora",pr:"ac|biz|com|edu|est|gov|info|isla|name|net|org|pro|prof",ps:"com|edu|gov|net|org|plo|sec",pw:"belau|co|ed|go|ne|or",ro:"arts|com|firm|info|nom|nt|org|rec|store|tm|www",rs:"ac|co|edu|gov|in|org",sb:"com|edu|gov|net|org",sc:"com|edu|gov|net|org",sh:"co|com|edu|gov|net|nom|org",
|
||||
sl:"com|edu|gov|net|org",st:"co|com|consulado|edu|embaixada|gov|mil|net|org|principe|saotome|store",sv:"com|edu|gob|org|red",sz:"ac|co|org",tr:"av|bbs|bel|biz|com|dr|edu|gen|gov|info|k12|name|net|org|pol|tel|tsk|tv|web",tt:"aero|biz|cat|co|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel",tw:"club|com|ebiz|edu|game|gov|idv|mil|net|org",mu:"ac|co|com|gov|net|or|org",mz:"ac|co|edu|gov|org",na:"co|com",nz:"ac|co|cri|geek|gen|govt|health|iwi|maori|mil|net|org|parliament|school",
|
||||
pa:"abo|ac|com|edu|gob|ing|med|net|nom|org|sld",pt:"com|edu|gov|int|net|nome|org|publ",py:"com|edu|gov|mil|net|org",qa:"com|edu|gov|mil|net|org",re:"asso|com|nom",ru:"ac|adygeya|altai|amur|arkhangelsk|astrakhan|bashkiria|belgorod|bir|bryansk|buryatia|cbg|chel|chelyabinsk|chita|chukotka|chuvashia|com|dagestan|e-burg|edu|gov|grozny|int|irkutsk|ivanovo|izhevsk|jar|joshkar-ola|kalmykia|kaluga|kamchatka|karelia|kazan|kchr|kemerovo|khabarovsk|khakassia|khv|kirov|koenig|komi|kostroma|kranoyarsk|kuban|kurgan|kursk|lipetsk|magadan|mari|mari-el|marine|mil|mordovia|mosreg|msk|murmansk|nalchik|net|nnov|nov|novosibirsk|nsk|omsk|orenburg|org|oryol|penza|perm|pp|pskov|ptz|rnd|ryazan|sakhalin|samara|saratov|simbirsk|smolensk|spb|stavropol|stv|surgut|tambov|tatarstan|tom|tomsk|tsaritsyn|tsk|tula|tuva|tver|tyumen|udm|udmurtia|ulan-ude|vladikavkaz|vladimir|vladivostok|volgograd|vologda|voronezh|vrn|vyatka|yakutia|yamal|yekaterinburg|yuzhno-sakhalinsk",
|
||||
rw:"ac|co|com|edu|gouv|gov|int|mil|net",sa:"com|edu|gov|med|net|org|pub|sch",sd:"com|edu|gov|info|med|net|org|tv",se:"a|ac|b|bd|c|d|e|f|g|h|i|k|l|m|n|o|org|p|parti|pp|press|r|s|t|tm|u|w|x|y|z",sg:"com|edu|gov|idn|net|org|per",sn:"art|com|edu|gouv|org|perso|univ",sy:"com|edu|gov|mil|net|news|org",th:"ac|co|go|in|mi|net|or",tj:"ac|biz|co|com|edu|go|gov|info|int|mil|name|net|nic|org|test|web",tn:"agrinet|com|defense|edunet|ens|fin|gov|ind|info|intl|mincom|nat|net|org|perso|rnrt|rns|rnu|tourism",tz:"ac|co|go|ne|or",
|
||||
ua:"biz|cherkassy|chernigov|chernovtsy|ck|cn|co|com|crimea|cv|dn|dnepropetrovsk|donetsk|dp|edu|gov|if|in|ivano-frankivsk|kh|kharkov|kherson|khmelnitskiy|kiev|kirovograd|km|kr|ks|kv|lg|lugansk|lutsk|lviv|me|mk|net|nikolaev|od|odessa|org|pl|poltava|pp|rovno|rv|sebastopol|sumy|te|ternopil|uzhgorod|vinnica|vn|zaporizhzhe|zhitomir|zp|zt",ug:"ac|co|go|ne|or|org|sc",uk:"ac|bl|british-library|co|cym|gov|govt|icnet|jet|lea|ltd|me|mil|mod|national-library-scotland|nel|net|nhs|nic|nls|org|orgn|parliament|plc|police|sch|scot|soc",
|
||||
us:"dni|fed|isa|kids|nsn",uy:"com|edu|gub|mil|net|org",ve:"co|com|edu|gob|info|mil|net|org|web",vi:"co|com|k12|net|org",vn:"ac|biz|com|edu|gov|health|info|int|name|net|org|pro",ye:"co|com|gov|ltd|me|net|org|plc",yu:"ac|co|edu|gov|org",za:"ac|agric|alt|bourse|city|co|cybernet|db|edu|gov|grondar|iaccess|imt|inca|landesign|law|mil|net|ngo|nis|nom|olivetti|org|pix|school|tm|web",zm:"ac|co|com|edu|gov|net|org|sch"},has_expression:null,is_expression:null,has:function(j){return!!j.match(d.has_expression)},
|
||||
is:function(j){return!!j.match(d.is_expression)},get:function(j){return(j=j.match(d.has_expression))&&j[1]||null},init:function(){var j="",h;for(h in d.list)Object.prototype.hasOwnProperty.call(d.list,h)&&(j+="|("+("("+d.list[h]+")."+h)+")");d.has_expression=RegExp("\\.("+j.substr(1)+")$","i");d.is_expression=RegExp("^("+j.substr(1)+")$","i")}};d.init();"undefined"!==typeof module&&module.exports?module.exports=d:window.SecondLevelDomains=d})();
|
||||
(function(d){function j(a){return a.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function h(a){return"[object Array]"===String(Object.prototype.toString.call(a))}function i(a){return encodeURIComponent(a).replace(/[!'()*]/g,escape).replace(/\*/g,"%2A")}var f="undefined"!==typeof module&&module.exports,s=f?require("./punycode"):window.punycode,u=f?require("./IPv6"):window.IPv6,g=f?require("./SecondLevelDomains"):window.SecondLevelDomains,c=function(a,b){if(!(this instanceof c))return new c(a,b);a===
|
||||
d&&(a="undefined"!==typeof location?location.href+"":"");this.href(a);return b!==d?this.absoluteTo(b):this},f=c.prototype;c.protocol_expression=/^[a-z][a-z0-9-+-]*$/i;c.idn_expression=/[^a-z0-9\.-]/i;c.punycode_expression=/(xn--)/i;c.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;c.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/;
|
||||
c.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?\u00ab\u00bb\u201c\u201d\u2018\u2019]))/ig;c.defaultPorts={http:"80",https:"443",ftp:"21"};c.invalid_hostname_characters=/[^a-zA-Z0-9\.-]/;c.encode=i;c.decode=decodeURIComponent;c.iso8859=function(){c.encode=escape;c.decode=unescape};c.unicode=function(){c.encode=i;c.decode=decodeURIComponent};
|
||||
c.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}}};
|
||||
c.encodeQuery=function(a){return c.encode(a+"").replace(/%20/g,"+")};c.decodeQuery=function(a){return c.decode((a+"").replace(/\+/g,"%20"))};c.recodePath=function(a){for(var a=(a+"").split("/"),b=0,e=a.length;b<e;b++)a[b]=c.encodePathSegment(c.decode(a[b]));return a.join("/")};c.decodePath=function(a){for(var a=(a+"").split("/"),b=0,e=a.length;b<e;b++)a[b]=c.decodePathSegment(a[b]);return a.join("/")};var m={encode:"encode",decode:"decode"},l,q=function(a,b){return function(e){return c[b](e+"").replace(c.characters[a][b].expression,
|
||||
function(e){return c.characters[a][b].map[e]})}};for(l in m)c[l+"PathSegment"]=q("pathname",m[l]);c.encodeReserved=q("reserved","encode");c.parse=function(a){var b,e={};b=a.indexOf("#");-1<b&&(e.fragment=a.substring(b+1)||null,a=a.substring(0,b));b=a.indexOf("?");-1<b&&(e.query=a.substring(b+1)||null,a=a.substring(0,b));"//"===a.substring(0,2)?(e.protocol="",a=a.substring(2),a=c.parseAuthority(a,e)):(b=a.indexOf(":"),-1<b&&(e.protocol=a.substring(0,b),e.protocol&&!e.protocol.match(c.protocol_expression)?
|
||||
e.protocol=d:"//"===a.substring(b+1,b+3)?(a=a.substring(b+3),a=c.parseAuthority(a,e)):(a=a.substring(b+1),e.urn=!0)));e.path=a;return e};c.parseHost=function(a,b){var e=a.indexOf("/"),c;-1===e&&(e=a.length);"["===a[0]?(c=a.indexOf("]"),b.hostname=a.substring(1,c)||null,b.port=a.substring(c+2,e)||null):a.indexOf(":")!==a.lastIndexOf(":")?(b.hostname=a.substring(0,e)||null,b.port=null):(c=a.substring(0,e).split(":"),b.hostname=c[0]||null,b.port=c[1]||null);b.hostname&&"/"!==a.substring(e)[0]&&(e++,
|
||||
a="/"+a);return a.substring(e)||"/"};c.parseAuthority=function(a,b){a=c.parseUserinfo(a,b);return c.parseHost(a,b)};c.parseUserinfo=function(a,b){var e=a.indexOf("@"),k=a.indexOf("/");-1<e&&(-1===k||e<k)?(k=a.substring(0,e).split(":"),b.username=k[0]?c.decode(k[0]):null,b.password=k[1]?c.decode(k[1]):null,a=a.substring(e+1)):(b.username=null,b.password=null);return a};c.parseQuery=function(a){if(!a)return{};a=a.replace(/&+/g,"&").replace(/^\?*&*|&+$/g,"");if(!a)return{};for(var b={},a=a.split("&"),
|
||||
e=a.length,k=0;k<e;k++){var d=a[k].split("="),g=c.decodeQuery(d.shift()),d=d.length?c.decodeQuery(d.join("=")):null;b[g]?("string"===typeof b[g]&&(b[g]=[b[g]]),b[g].push(d)):b[g]=d}return b};c.build=function(a){var b="";a.protocol&&(b+=a.protocol+":");if(!a.urn&&(b||a.hostname))b+="//";b+=c.buildAuthority(a)||"";"string"===typeof a.path&&("/"!==a.path[0]&&"string"===typeof a.hostname&&(b+="/"),b+=a.path);"string"===typeof a.query&&(b+="?"+a.query);"string"===typeof a.fragment&&(b+="#"+a.fragment);
|
||||
return b};c.buildHost=function(a){var b="";if(a.hostname)c.ip6_expression.test(a.hostname)?b=a.port?b+("["+a.hostname+"]:"+a.port):b+a.hostname:(b+=a.hostname,a.port&&(b+=":"+a.port));else return"";return b};c.buildAuthority=function(a){return c.buildUserinfo(a)+c.buildHost(a)};c.buildUserinfo=function(a){var b="";a.username&&(b+=c.encode(a.username),a.password&&(b+=":"+c.encode(a.password)),b+="@");return b};c.buildQuery=function(a,b){var e="",k;for(k in a)if(Object.hasOwnProperty.call(a,k)&&k)if(h(a[k]))for(var g=
|
||||
{},f=0,m=a[k].length;f<m;f++)a[k][f]!==d&&g[a[k][f]+""]===d&&(e+="&"+c.buildQueryParameter(k,a[k][f]),!0!==b&&(g[a[k][f]+""]=!0));else a[k]!==d&&(e+="&"+c.buildQueryParameter(k,a[k]));return e.substring(1)};c.buildQueryParameter=function(a,b){return c.encodeQuery(a)+(null!==b?"="+c.encodeQuery(b):"")};c.addQuery=function(a,b,e){if("object"===typeof b)for(var k in b)Object.prototype.hasOwnProperty.call(b,k)&&c.addQuery(a,k,b[k]);else if("string"===typeof b)a[b]===d?a[b]=e:("string"===typeof a[b]&&
|
||||
(a[b]=[a[b]]),h(e)||(e=[e]),a[b]=a[b].concat(e));else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");};c.removeQuery=function(a,b,e){if(h(b))for(var e=0,k=b.length;e<k;e++)a[b[e]]=d;else if("object"===typeof b)for(k in b)Object.prototype.hasOwnProperty.call(b,k)&&c.removeQuery(a,k,b[k]);else if("string"===typeof b)if(e!==d)if(a[b]===e)a[b]=d;else{if(h(a[b])){var k=a[b],g={},f,m;if(h(e)){f=0;for(m=e.length;f<m;f++)g[e[f]]=!0}else g[e]=!0;f=0;for(m=k.length;f<
|
||||
m;f++)g[k[f]]!==d&&(k.splice(f,1),m--,f--);a[b]=k}}else a[b]=d;else throw new TypeError("URI.addQuery() accepts an object, string as the first parameter");};c.commonPath=function(a,b){var e=Math.min(a.length,b.length),c;for(c=0;c<e;c++)if(a[c]!==b[c]){c--;break}if(1>c)return a[0]===b[0]&&"/"===a[0]?"/":"";"/"!==a[c]&&(c=a.substring(0,c).lastIndexOf("/"));return a.substring(0,c+1)};c.withinString=function(a,b){return a.replace(c.find_uri_expression,b)};c.ensureValidHostname=function(a){if(a.match(c.invalid_hostname_characters)){if(!s)throw new TypeError("Hostname '"+
|
||||
a+"' contains characters other than [A-Z0-9.-] and Punycode.js is not available");if(s.toASCII(a).match(c.invalid_hostname_characters))throw new TypeError("Hostname '"+a+"' contains characters other than [A-Z0-9.-]");}};f.build=function(a){if(!0===a)this._deferred_build=!0;else if(a===d||this._deferred_build)this._string=c.build(this._parts),this._deferred_build=!1;return this};f.clone=function(){return new c(this)};f.toString=function(){return this.build(!1)._string};f.valueOf=function(){return this.toString()};
|
||||
m={protocol:"protocol",username:"username",password:"password",hostname:"hostname",port:"port"};q=function(a){return function(b,e){if(b===d)return this._parts[a]||"";this._parts[a]=b;this.build(!e);return this}};for(l in m)f[l]=q(m[l]);m={query:"?",fragment:"#"};q=function(a,b){return function(e,c){if(e===d)return this._parts[a]||"";null!==e&&(e+="",e[0]===b&&(e=e.substring(1)));this._parts[a]=e;this.build(!c);return this}};for(l in m)f[l]=q(l,m[l]);m={search:["?","query"],hash:["#","fragment"]};
|
||||
q=function(a,b){return function(e,c){var d=this[a](e,c);return"string"===typeof d&&d.length?b+d:d}};for(l in m)f[l]=q(m[l][1],m[l][0]);f.pathname=function(a,b){if(a===d||!0===a){var e=this._parts.path||(this._parts.urn?"":"/");return a?c.decodePath(e):e}this._parts.path=a?c.recodePath(a):"/";this.build(!b);return this};f.path=f.pathname;f.href=function(a,b){if(a===d)return this.toString();this._string="";this._parts={protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null,
|
||||
query:null,fragment:null};var e=a instanceof c,k="object"===typeof a&&(a.hostname||a.path),g;if("string"===typeof a)this._parts=c.parse(a);else if(e||k)for(g in e=e?a._parts:a,e)Object.hasOwnProperty.call(this._parts,g)&&(this._parts[g]=e[g]);else throw new TypeError("invalid input");this.build(!b);return this};f.is=function(a){var b=!1,e=!1,d=!1,f=!1,m=!1,l=!1,h=!1,i=!this._parts.urn;this._parts.hostname&&(i=!1,e=c.ip4_expression.test(this._parts.hostname),d=c.ip6_expression.test(this._parts.hostname),
|
||||
b=e||d,m=(f=!b)&&g&&g.has(this._parts.hostname),l=f&&c.idn_expression.test(this._parts.hostname),h=f&&c.punycode_expression.test(this._parts.hostname));switch(a.toLowerCase()){case "relative":return i;case "absolute":return!i;case "domain":case "name":return f;case "sld":return m;case "ip":return b;case "ip4":case "ipv4":case "inet4":return e;case "ip6":case "ipv6":case "inet6":return d;case "idn":return l;case "url":return!this._parts.urn;case "urn":return!!this._parts.urn;case "punycode":return h}return null};
|
||||
var y=f.protocol,n=f.port,p=f.hostname;f.protocol=function(a,b){if(a!==d&&a&&(a=a.replace(/:(\/\/)?$/,""),a.match(/[^a-zA-z0-9\.+-]/)))throw new TypeError("Protocol '"+a+"' contains characters other than [A-Z0-9.+-]");return y.call(this,a,b)};f.scheme=f.protocol;f.port=function(a,b){if(this._parts.urn)return a===d?"":this;if(a!==d&&(0===a&&(a=null),a&&(a+="",":"===a[0]&&(a=a.substring(1)),a.match(/[^0-9]/))))throw new TypeError("Port '"+a+"' contains characters other than [0-9]");return n.call(this,
|
||||
a,b)};f.hostname=function(a,b){if(this._parts.urn)return a===d?"":this;if(a!==d){var e={};c.parseHost(a,e);a=e.hostname}return p.call(this,a,b)};f.host=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d)return this._parts.hostname?c.buildHost(this._parts):"";c.parseHost(a,this._parts);this.build(!b);return this};f.authority=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d)return this._parts.hostname?c.buildAuthority(this._parts):"";c.parseAuthority(a,this._parts);this.build(!b);
|
||||
return this};f.userinfo=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d){if(!this._parts.username)return"";var e=c.buildUserinfo(this._parts);return e.substring(0,e.length-1)}"@"!==a[a.length-1]&&(a+="@");c.parseUserinfo(a,this._parts);this.build(!b);return this};f.subdomain=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d){if(!this._parts.hostname||this.is("IP"))return"";var e=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,
|
||||
e)||""}e=this._parts.hostname.length-this.domain().length;e=this._parts.hostname.substring(0,e);e=RegExp("^"+j(e));a&&"."!==a[a.length-1]&&(a+=".");a&&c.ensureValidHostname(a);this._parts.hostname=this._parts.hostname.replace(e,a);this.build(!b);return this};f.domain=function(a,b){if(this._parts.urn)return a===d?"":this;"boolean"===typeof a&&(b=a,a=d);if(a===d){if(!this._parts.hostname||this.is("IP"))return"";var e=this._parts.hostname.match(/\./g);if(e&&2>e.length)return this._parts.hostname;e=this._parts.hostname.length-
|
||||
this.tld(b).length-1;e=this._parts.hostname.lastIndexOf(".",e-1)+1;return this._parts.hostname.substring(e)||""}if(!a)throw new TypeError("cannot set domain empty");c.ensureValidHostname(a);!this._parts.hostname||this.is("IP")?this._parts.hostname=a:(e=RegExp(j(this.domain())+"$"),this._parts.hostname=this._parts.hostname.replace(e,a));this.build(!b);return this};f.tld=function(a,b){if(this._parts.urn)return a===d?"":this;"boolean"===typeof a&&(b=a,a=d);if(a===d){if(!this._parts.hostname||this.is("IP"))return"";
|
||||
var c=this._parts.hostname.lastIndexOf("."),c=this._parts.hostname.substring(c+1);return!0!==b&&g&&g.list[c.toLowerCase()]?g.get(this._parts.hostname)||c:c}if(a)if(a.match(/[^a-zA-Z0-9-]/))if(g&&g.is(a))c=RegExp(j(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(c,a);else throw new TypeError("TLD '"+a+"' contains characters other than [A-Z0-9]");else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");c=RegExp(j(this.tld())+"$");
|
||||
this._parts.hostname=this._parts.hostname.replace(c,a)}else throw new TypeError("cannot set TLD empty");this.build(!b);return this};f.directory=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d||!0===a){if(!this._parts.path&&!this._parts.hostname)return"";if("/"===this._parts.path)return"/";var e=this._parts.path.length-this.filename().length-1,e=this._parts.path.substring(0,e)||(this._parts.hostname?"/":"");return a?c.decodePath(e):e}e=this._parts.path.length-this.filename().length;
|
||||
e=this._parts.path.substring(0,e);e=RegExp("^"+j(e));this.is("relative")||(a||(a="/"),"/"!==a[0]&&(a="/"+a));a&&"/"!==a[a.length-1]&&(a+="/");a=c.recodePath(a);this._parts.path=this._parts.path.replace(e,a);this.build(!b);return this};f.filename=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d||!0===a){if(!this._parts.path||"/"===this._parts.path)return"";var e=this._parts.path.lastIndexOf("/"),e=this._parts.path.substring(e+1);return a?c.decodePathSegment(e):e}e=!1;"/"===a[0]&&(a=a.substring(1));
|
||||
a.match(/\.?\//)&&(e=!0);var k=RegExp(j(this.filename())+"$"),a=c.recodePath(a);this._parts.path=this._parts.path.replace(k,a);e?this.normalizePath(b):this.build(!b);return this};f.suffix=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d||!0===a){if(!this._parts.path||"/"===this._parts.path)return"";var e=this.filename(),k=e.lastIndexOf(".");if(-1===k)return"";e=e.substring(k+1);e=/^[a-z0-9%]+$/i.test(e)?e:"";return a?c.decodePathSegment(e):e}"."===a[0]&&(a=a.substring(1));if(e=this.suffix())k=
|
||||
a?RegExp(j(e)+"$"):RegExp(j("."+e)+"$");else{if(!a)return this;this._parts.path+="."+c.recodePath(a)}k&&(a=c.recodePath(a),this._parts.path=this._parts.path.replace(k,a));this.build(!b);return this};f.segment=function(a,b,c){var k=this._parts.urn?":":"/",g=this.path(),f="/"===g.substring(0,1),g=g.split(k);"number"!==typeof a&&(c=b,b=a,a=d);if(a!==d&&"number"!==typeof a)throw Error("Bad segment '"+a+"', must be 0-based integer");f&&g.shift();0>a&&(a=Math.max(g.length+a,0));if(b===d)return a===d?g:
|
||||
g[a];if(null===a||g[a]===d)if(h(b))g=b;else{if(b||"string"===typeof b&&b.length)""===g[g.length-1]?g[g.length-1]=b:g.push(b)}else b||"string"===typeof b&&b.length?g[a]=b:g.splice(a,1);f&&g.unshift("");return this.path(g.join(k),c)};var r=f.query;f.query=function(a,b){return!0===a?c.parseQuery(this._parts.query):a!==d&&"string"!==typeof a?(this._parts.query=c.buildQuery(a),this.build(!b),this):r.call(this,a,b)};f.addQuery=function(a,b,e){var d=c.parseQuery(this._parts.query);c.addQuery(d,a,b);this._parts.query=
|
||||
c.buildQuery(d);"string"!==typeof a&&(e=b);this.build(!e);return this};f.removeQuery=function(a,b,e){var d=c.parseQuery(this._parts.query);c.removeQuery(d,a,b);this._parts.query=c.buildQuery(d);"string"!==typeof a&&(e=b);this.build(!e);return this};f.addSearch=f.addQuery;f.removeSearch=f.removeQuery;f.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()};
|
||||
f.normalizeProtocol=function(a){"string"===typeof this._parts.protocol&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!a));return this};f.normalizeHostname=function(a){this._parts.hostname&&(this.is("IDN")&&s?this._parts.hostname=s.toASCII(this._parts.hostname):this.is("IPv6")&&u&&(this._parts.hostname=u.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!a));return this};f.normalizePort=function(a){"string"===typeof this._parts.protocol&&
|
||||
this._parts.port===c.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!a));return this};f.normalizePath=function(a){if(this._parts.urn||!this._parts.path||"/"===this._parts.path)return this;var b,e,d=this._parts.path,g,f;"/"!==d[0]&&("."===d[0]&&(e=d.substring(0,d.indexOf("/"))),b=!0,d="/"+d);for(d=d.replace(/(\/(\.\/)+)|\/{2,}/g,"/");;){g=d.indexOf("/../");if(-1===g)break;else if(0===g){d=d.substring(3);break}f=d.substring(0,g).lastIndexOf("/");-1===f&&(f=g);d=d.substring(0,
|
||||
f)+d.substring(g+3)}b&&this.is("relative")&&(d=e?e+d:d.substring(1));d=c.recodePath(d);this._parts.path=d;this.build(!a);return this};f.normalizePathname=f.normalizePath;f.normalizeQuery=function(a){"string"===typeof this._parts.query&&(this._parts.query.length?this.query(c.parseQuery(this._parts.query)):this._parts.query=null,this.build(!a));return this};f.normalizeFragment=function(a){this._parts.fragment||(this._parts.fragment=null,this.build(!a));return this};f.normalizeSearch=f.normalizeQuery;
|
||||
f.normalizeHash=f.normalizeFragment;f.iso8859=function(){var a=c.encode,b=c.decode;c.encode=escape;c.decode=decodeURIComponent;this.normalize();c.encode=a;c.decode=b;return this};f.unicode=function(){var a=c.encode,b=c.decode;c.encode=i;c.decode=unescape;this.normalize();c.encode=a;c.decode=b;return this};f.readable=function(){var a=this.clone();a.username("").password("").normalize();var b="";a._parts.protocol&&(b+=a._parts.protocol+"://");a._parts.hostname&&(a.is("punycode")&&s?(b+=s.toUnicode(a._parts.hostname),
|
||||
a._parts.port&&(b+=":"+a._parts.port)):b+=a.host());a._parts.hostname&&(a._parts.path&&"/"!==a._parts.path[0])&&(b+="/");b+=a.path(!0);if(a._parts.query){for(var e="",g=0,f=a._parts.query.split("&"),m=f.length;g<m;g++){var l=(f[g]||"").split("="),e=e+("&"+c.decodeQuery(l[0]).replace(/&/g,"%26"));l[1]!==d&&(e+="="+c.decodeQuery(l[1]).replace(/&/g,"%26"))}b+="?"+e.substring(1)}return b+=a.hash()};f.absoluteTo=function(a){var b=this.clone(),e=["protocol","username","password","hostname","port"],d,g;
|
||||
if(this._parts.urn)throw Error("URNs do not have any generally defined hierachical components");if(this._parts.hostname)return b;a instanceof c||(a=new c(a));d=0;for(g;g=e[d];d++)b._parts[g]=a._parts[g];e=["query","path"];d=0;for(g;g=e[d];d++)!b._parts[g]&&a._parts[g]&&(b._parts[g]=a._parts[g]);"/"!==b.path()[0]&&(a=a.directory(),b._parts.path=(a?a+"/":"")+b._parts.path,b.normalizePath());b.build();return b};f.relativeTo=function(a){var b=this.clone(),e=["protocol","username","password","hostname",
|
||||
"port"],d;if(this._parts.urn)throw Error("URNs do not have any generally defined hierachical components");a instanceof c||(a=new c(a));if("/"!==this.path()[0]||"/"!==a.path()[0])throw Error("Cannot calculate common path from non-relative URLs");d=c.commonPath(b.path(),a.path());for(var a=a.directory(),g=0,f;f=e[g];g++)b._parts[f]=null;if(!d||"/"===d)return b;if(a+"/"===d)b._parts.path="./"+b.filename();else{e="../";d=RegExp("^"+j(d));for(a=a.replace(d,"/").match(/\//g).length-1;a--;)e+="../";b._parts.path=
|
||||
b._parts.path.replace(d,e)}b.build();return b};f.equals=function(a){var b=this.clone(),e=new c(a),d={},g={},a={},f;b.normalize();e.normalize();if(b.toString()===e.toString())return!0;d=b.query();g=e.query();b.query("");e.query("");if(b.toString()!==e.toString()||d.length!==g.length)return!1;d=c.parseQuery(d);g=c.parseQuery(g);for(f in d)if(Object.prototype.hasOwnProperty.call(d,f)){if(h(d[f])){if(!h(g[f])||d[f].length!==g[f].length)return!1;d[f].sort();g[f].sort();b=0;for(e=d[f].length;b<e;b++)if(d[f][b]!==
|
||||
g[f][b])return!1}else if(d[f]!==g[f])return!1;a[f]=!0}for(f in g)if(Object.prototype.hasOwnProperty.call(g,f)&&!a[f])return!1;return!0};"undefined"!==typeof module&&module.exports?module.exports=c:window.URI=c})();
|
||||
(function(d){var j=Object.prototype.hasOwnProperty,h="undefined"!==typeof module&&module.exports?require("./URI"):window.URI,i=function(d){if(i._cache[d])return i._cache[d];if(!(this instanceof i))return new i(d);this.expression=d;i._cache[d]=this;return this},f=function(d){this.data=d;this.cache={}},s=i.prototype,u={"":{prefix:"",separator:",",named:!1,empty_name_separator:!1,encode:"encode"},"+":{prefix:"",separator:",",named:!1,empty_name_separator:!1,encode:"encodeReserved"},"#":{prefix:"#",separator:",",
|
||||
named:!1,empty_name_separator:!1,encode:"encodeReserved"},".":{prefix:".",separator:".",named:!1,empty_name_separator:!1,encode:"encode"},"/":{prefix:"/",separator:"/",named:!1,empty_name_separator:!1,encode:"encode"},";":{prefix:";",separator:";",named:!0,empty_name_separator:!1,encode:"encode"},"?":{prefix:"?",separator:"&",named:!0,empty_name_separator:!0,encode:"encode"},"&":{prefix:"&",separator:"&",named:!0,empty_name_separator:!0,encode:"encode"}};i._cache={};i.EXPRESSION_PATTERN=/\{([^a-zA-Z0-9%_]?)([^\}]+)(\}|$)/g;
|
||||
i.VARIABLE_PATTERN=/^([^*:]+)((\*)|:(\d+))?$/;i.VARIABLE_NAME_PATTERN=/[^a-zA-Z0-9%_]/;i.expand=function(d,c){var f=u[d.operator],l=f.named?"Named":"Unnamed",h=d.variables,j=[],n,p,r;for(r=0;p=h[r];r++)n=c.get(p.name),n.val.length?j.push(i["expand"+l](n,f,p.explode,p.explode&&f.separator||",",p.maxlength,p.name)):n.type&&j.push("");return j.length?f.prefix+j.join(f.separator):""};i.expandNamed=function(g,c,f,l,i,j){var n="",p=c.encode,c=c.empty_name_separator,r=!g[p].length,a=2===g.type?"":h[p](j),
|
||||
b,e,k;e=0;for(k=g.val.length;e<k;e++)i?(b=h[p](g.val[e][1].substring(0,i)),2===g.type&&(a=h[p](g.val[e][0].substring(0,i)))):r?(b=h[p](g.val[e][1]),2===g.type?(a=h[p](g.val[e][0]),g[p].push([a,b])):g[p].push([d,b])):(b=g[p][e][1],2===g.type&&(a=g[p][e][0])),n&&(n+=l),f?n+=a+(c||b?"=":"")+b:(e||(n+=h[p](j)+(c||b?"=":"")),2===g.type&&(n+=a+","),n+=b);return n};i.expandUnnamed=function(g,c,f,l,i){var j="",n=c.encode,c=c.empty_name_separator,p=!g[n].length,r,a,b,e;b=0;for(e=g.val.length;b<e;b++)i?a=h[n](g.val[b][1].substring(0,
|
||||
i)):p?(a=h[n](g.val[b][1]),g[n].push([2===g.type?h[n](g.val[b][0]):d,a])):a=g[n][b][1],j&&(j+=l),2===g.type&&(r=i?h[n](g.val[b][0].substring(0,i)):g[n][b][0],j+=r,j=f?j+(c||a?"=":""):j+","),j+=a;return j};s.expand=function(d){var c="";(!this.parts||!this.parts.length)&&this.parse();d instanceof f||(d=new f(d));for(var j=0,l=this.parts.length;j<l;j++)c+="string"===typeof this.parts[j]?this.parts[j]:i.expand(this.parts[j],d);return c};s.parse=function(){var d=this.expression,c=i.EXPRESSION_PATTERN,
|
||||
f=i.VARIABLE_PATTERN,j=i.VARIABLE_NAME_PATTERN,h=[],s=0,n,p,r;for(c.lastIndex=0;;){p=c.exec(d);if(null===p){h.push(d.substring(s));break}else h.push(d.substring(s,p.index)),s=p.index+p[0].length;if(u[p[1]]){if(!p[3])throw Error('Unclosed Expression "'+p[0]+'"');}else throw Error('Unknown Operator "'+p[1]+'" in "'+p[0]+'"');n=p[2].split(",");for(var a=0,b=n.length;a<b;a++){r=n[a].match(f);if(null===r)throw Error('Invalid Variable "'+n[a]+'" in "'+p[0]+'"');if(r[1].match(j))throw Error('Invalid Variable Name "'+
|
||||
r[1]+'" in "'+p[0]+'"');n[a]={name:r[1],explode:!!r[3],maxlength:r[4]&&parseInt(r[4],10)}}if(!n.length)throw Error('Expression Missing Variable(s) "'+p[0]+'"');h.push({expression:p[0],operator:p[1],variables:n})}h.length||h.push(d);this.parts=h;return this};f.prototype.get=function(f){var c=this.data,h={type:0,val:[],encode:[],encodeReserved:[]},i;if(this.cache[f]!==d)return this.cache[f];this.cache[f]=h;c="[object Function]"===String(Object.prototype.toString.call(c))?c(f):"[object Function]"===
|
||||
String(Object.prototype.toString.call(c[f]))?c[f](f):c[f];if(!(c===d||null===c))if("[object Array]"===String(Object.prototype.toString.call(c))){i=0;for(f=c.length;i<f;i++)c[i]!==d&&null!==c[i]&&h.val.push([d,String(c[i])]);h.val.length&&(h.type=3)}else if("[object Object]"===String(Object.prototype.toString.call(c))){for(i in c)j.call(c,i)&&(c[i]!==d&&null!==c[i])&&h.val.push([i,String(c[i])]);h.val.length&&(h.type=2)}else h.type=1,h.val.push([d,String(c)]);return h};h.expand=function(d,c){var f=
|
||||
(new i(d)).expand(c);return new h(f)};"undefined"!==typeof module&&module.exports?module.exports=i:window.URITemplate=i})();
|
8
build/Debug/Tentia.app/Contents/Resources/enc-base64-min.js
vendored
Normal file
8
build/Debug/Tentia.app/Contents/Resources/enc-base64-min.js
vendored
Normal file
|
@ -0,0 +1,8 @@
|
|||
/*
|
||||
CryptoJS v3.0.2
|
||||
code.google.com/p/crypto-js
|
||||
(c) 2009-2012 by Jeff Mott. All rights reserved.
|
||||
code.google.com/p/crypto-js/wiki/License
|
||||
*/
|
||||
(function(){var h=CryptoJS,i=h.lib.WordArray;h.enc.Base64={stringify:function(b){var e=b.words,f=b.sigBytes,c=this._map;b.clamp();for(var b=[],a=0;a<f;a+=3)for(var d=(e[a>>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g<f;g++)b.push(c.charAt(d>>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join("")},parse:function(b){var b=b.replace(/\s/g,""),e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c));
|
||||
for(var c=[],a=0,d=0;d<e;d++)if(d%4){var g=f.indexOf(b.charAt(d-1))<<2*(d%4),h=f.indexOf(b.charAt(d))>>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return i.create(c,a)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})();
|
17
build/Debug/Tentia.app/Contents/Resources/hmac-sha256.js
Normal file
17
build/Debug/Tentia.app/Contents/Resources/hmac-sha256.js
Normal file
|
@ -0,0 +1,17 @@
|
|||
/*
|
||||
CryptoJS v3.0.2
|
||||
code.google.com/p/crypto-js
|
||||
(c) 2009-2012 by Jeff Mott. All rights reserved.
|
||||
code.google.com/p/crypto-js/wiki/License
|
||||
*/
|
||||
var CryptoJS=CryptoJS||function(h,i){var e={},f=e.lib={},l=f.Base=function(){function a(){}return{extend:function(j){a.prototype=this;var d=new a;j&&d.mixIn(j);d.$super=this;return d},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var d in a)a.hasOwnProperty(d)&&(this[d]=a[d]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.$super.extend(this)}}}(),k=f.WordArray=l.extend({init:function(a,j){a=
|
||||
this.words=a||[];this.sigBytes=j!=i?j:4*a.length},toString:function(a){return(a||m).stringify(this)},concat:function(a){var j=this.words,d=a.words,c=this.sigBytes,a=a.sigBytes;this.clamp();if(c%4)for(var b=0;b<a;b++)j[c+b>>>2]|=(d[b>>>2]>>>24-8*(b%4)&255)<<24-8*((c+b)%4);else if(65535<d.length)for(b=0;b<a;b+=4)j[c+b>>>2]=d[b>>>2];else j.push.apply(j,d);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<<32-8*(b%4);a.length=h.ceil(b/4)},clone:function(){var a=
|
||||
l.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],d=0;d<a;d+=4)b.push(4294967296*h.random()|0);return k.create(b,a)}}),o=e.enc={},m=o.Hex={stringify:function(a){for(var b=a.words,a=a.sigBytes,d=[],c=0;c<a;c++){var e=b[c>>>2]>>>24-8*(c%4)&255;d.push((e>>>4).toString(16));d.push((e&15).toString(16))}return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c<b;c+=2)d[c>>>3]|=parseInt(a.substr(c,2),16)<<24-4*(c%8);return k.create(d,b/2)}},q=o.Latin1={stringify:function(a){for(var b=
|
||||
a.words,a=a.sigBytes,d=[],c=0;c<a;c++)d.push(String.fromCharCode(b[c>>>2]>>>24-8*(c%4)&255));return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c<b;c++)d[c>>>2]|=(a.charCodeAt(c)&255)<<24-8*(c%4);return k.create(d,b)}},r=o.Utf8={stringify:function(a){try{return decodeURIComponent(escape(q.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return q.parse(unescape(encodeURIComponent(a)))}},b=f.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=k.create();
|
||||
this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=r.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,d=b.words,c=b.sigBytes,e=this.blockSize,g=c/(4*e),g=a?h.ceil(g):h.max((g|0)-this._minBufferSize,0),a=g*e,c=h.min(4*a,c);if(a){for(var f=0;f<a;f+=e)this._doProcessBlock(d,f);f=d.splice(0,a);b.sigBytes-=c}return k.create(f,c)},clone:function(){var a=l.clone.call(this);a._data=this._data.clone();return a},_minBufferSize:0});f.Hasher=b.extend({init:function(){this.reset()},
|
||||
reset:function(){b.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();return this},finalize:function(a){a&&this._append(a);this._doFinalize();return this._hash},clone:function(){var a=b.clone.call(this);a._hash=this._hash.clone();return a},blockSize:16,_createHelper:function(a){return function(b,d){return a.create(d).finalize(b)}},_createHmacHelper:function(a){return function(b,d){return g.HMAC.create(a,d).finalize(b)}}});var g=e.algo={};return e}(Math);
|
||||
(function(h){var i=CryptoJS,e=i.lib,f=e.WordArray,e=e.Hasher,l=i.algo,k=[],o=[];(function(){function e(a){for(var b=h.sqrt(a),d=2;d<=b;d++)if(!(a%d))return!1;return!0}function f(a){return 4294967296*(a-(a|0))|0}for(var b=2,g=0;64>g;)e(b)&&(8>g&&(k[g]=f(h.pow(b,0.5))),o[g]=f(h.pow(b,1/3)),g++),b++})();var m=[],l=l.SHA256=e.extend({_doReset:function(){this._hash=f.create(k.slice(0))},_doProcessBlock:function(e,f){for(var b=this._hash.words,g=b[0],a=b[1],j=b[2],d=b[3],c=b[4],h=b[5],l=b[6],k=b[7],n=0;64>
|
||||
n;n++){if(16>n)m[n]=e[f+n]|0;else{var i=m[n-15],p=m[n-2];m[n]=((i<<25|i>>>7)^(i<<14|i>>>18)^i>>>3)+m[n-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+m[n-16]}i=k+((c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25))+(c&h^~c&l)+o[n]+m[n];p=((g<<30|g>>>2)^(g<<19|g>>>13)^(g<<10|g>>>22))+(g&a^g&j^a&j);k=l;l=h;h=c;c=d+i|0;d=j;j=a;a=g;g=i+p|0}b[0]=b[0]+g|0;b[1]=b[1]+a|0;b[2]=b[2]+j|0;b[3]=b[3]+d|0;b[4]=b[4]+c|0;b[5]=b[5]+h|0;b[6]=b[6]+l|0;b[7]=b[7]+k|0},_doFinalize:function(){var e=this._data,f=e.words,b=8*this._nDataBytes,
|
||||
g=8*e.sigBytes;f[g>>>5]|=128<<24-g%32;f[(g+64>>>9<<4)+15]=b;e.sigBytes=4*f.length;this._process()}});i.SHA256=e._createHelper(l);i.HmacSHA256=e._createHmacHelper(l)})(Math);
|
||||
(function(){var h=CryptoJS,i=h.enc.Utf8;h.algo.HMAC=h.lib.Base.extend({init:function(e,f){e=this._hasher=e.create();"string"==typeof f&&(f=i.parse(f));var h=e.blockSize,k=4*h;f.sigBytes>k&&(f=e.finalize(f));for(var o=this._oKey=f.clone(),m=this._iKey=f.clone(),q=o.words,r=m.words,b=0;b<h;b++)q[b]^=1549556828,r[b]^=909522486;o.sigBytes=m.sigBytes=k;this.reset()},reset:function(){var e=this._hasher;e.reset();e.update(this._iKey)},update:function(e){this._hasher.update(e);return this},finalize:function(e){var f=
|
||||
this._hasher,e=f.finalize(e);f.reset();return f.finalize(this._oKey.clone().concat(e))}})})();
|
|
@ -7,8 +7,7 @@
|
|||
<link rel="stylesheet" href="~/Library/Application%20Support/Style.css" type="text/css" />
|
||||
<script type="text/javascript" src="jQuery.js"></script>
|
||||
<script type="text/javascript" src="jQuery-Plugins.js"></script>
|
||||
<script type="text/javascript" src="sha1.js"></script>
|
||||
<script type="text/javascript" src="oauth.js"></script>
|
||||
<script type="text/javascript" src="jso.js"></script>
|
||||
<script type="text/javascript" src="Constants.js"></script>
|
||||
<script type="text/javascript" src="Core.js"></script>
|
||||
</head>
|
||||
|
|
|
@ -5,9 +5,10 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<script type="text/javascript" src="jQuery.js"></script>
|
||||
<script type="text/javascript" src="jQuery-Plugins.js"></script>
|
||||
<script type="text/javascript" src="sha1.js"></script>
|
||||
<script type="text/javascript" src="oauth.js"></script>
|
||||
<script type="text/javascript" src="hmac-sha256.js"></script>
|
||||
<script type="text/javascript" src="enc-base64-min.js"></script>
|
||||
<script type="text/javascript" src="Constants.js"></script>
|
||||
<script type="text/javascript" src="URI.min.js"></script>
|
||||
<script type="text/javascript" src="OauthImplementation.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,33 +1,33 @@
|
|||
ffffffffffffffffffffffffffffffff 3ddc90c7adbe232b25db27bf9ae28615 ffffffffffffffffffffffffffffffff 102 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app
|
||||
ffffffffffffffffffffffffffffffff 07d4ddde1c7b4b4fee20864dfe87606b ffffffffffffffffffffffffffffffff 125132 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/MacOS/Tentia
|
||||
ffffffffffffffffffffffffffffffff 7365c3e40e3a8c345e594a3358870afe ffffffffffffffffffffffffffffffff 47308 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/i386/Tentia
|
||||
ffffffffffffffffffffffffffffffff ed3b6292efc4dffe0e1fdcc298491563 ffffffffffffffffffffffffffffffff 71736 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/x86_64/Tentia
|
||||
42acb1866502724ee28245c2f99e565a 2577f0e7533580056a012b1d8c07e8e3 ffffffffffffffffffffffffffffffff 74372 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/x86_64/Controller.o
|
||||
d56a7f2949f5e77d95daeff9827e3c0c f52127d6e87cbff0cead9facce224e97 ffffffffffffffffffffffffffffffff 60296 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/i386/Controller.o
|
||||
00000000000000000000000000000000 c7a2ed34f1b3c3c36f2238612a286b0e ffffffffffffffffffffffffffffffff 7294 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/OauthImplementation.js
|
||||
00000000000000000000000000000000 c7a2ed34f1b3c3c36f2238612a286b0e ffffffffffffffffffffffffffffffff 6218 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/OauthImplementation.js
|
||||
0000000050783ba000000000000000cc 6b23c46f80bbe095d628a0dd8c50b78c ffffffffffffffffffffffffffffffff 204 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Frameworks/Sparkle.framework
|
||||
ffffffffffffffffffffffffffffffff 07d4ddde1c7b4b4fee20864dfe87606b ffffffffffffffffffffffffffffffff 125264 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/MacOS/Tentia
|
||||
ffffffffffffffffffffffffffffffff 7365c3e40e3a8c345e594a3358870afe ffffffffffffffffffffffffffffffff 47440 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/i386/Tentia
|
||||
ffffffffffffffffffffffffffffffff 6711c5d466273f5a792af8d9e1a5319f ffffffffffffffffffffffffffffffff 6456 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/i386/TweetModel.o
|
||||
ffffffffffffffffffffffffffffffff d72ca303542648087e1ad07182f9d39f ffffffffffffffffffffffffffffffff 9580 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/i386/Constants.o
|
||||
ffffffffffffffffffffffffffffffff 1ef511a44e75dd4e304fe7498e57eaad ffffffffffffffffffffffffffffffff 24136 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/i386/ViewDelegate.o
|
||||
d56a7f2949069da695daeff9827e3c7c f52127d6e87cbff0cead9facce224e97 ffffffffffffffffffffffffffffffff 61112 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/i386/Controller.o
|
||||
ffffffffffffffffffffffffffffffff a6d1a98896876b2874da800beec1af5f ffffffffffffffffffffffffffffffff 2520 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/i386/main.o
|
||||
ffffffffffffffffffffffffffffffff 6bcdf375b7d539d37a5749532ffc84b5 ffffffffffffffffffffffffffffffff 29928 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/i386/NewMessageWindow.o
|
||||
ffffffffffffffffffffffffffffffff a97a8adeefed1ba8a895f7136e93dbf0 ffffffffffffffffffffffffffffffff 10692 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/i386/AccessToken.o
|
||||
00000000006c1f9f000000000000016a d56a7f2949f5fca495daeff9827e3b33 ffffffffffffffffffffffffffffffff 13965516 /var/folders/zl/vphyb36166vg0vnzmz23_y740000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders/Tentia_Prefix-blwgpqgklakogehapwplzglymvsa/Tentia_Prefix.pch.pth
|
||||
ffffffffffffffffffffffffffffffff ed3b6292efc4dffe0e1fdcc298491563 ffffffffffffffffffffffffffffffff 71888 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/x86_64/Tentia
|
||||
ffffffffffffffffffffffffffffffff 244b8c9ee82cc5939662218150f75171 ffffffffffffffffffffffffffffffff 8624 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/x86_64/TweetModel.o
|
||||
ffffffffffffffffffffffffffffffff e1dd691322b6c644d65505d9fd9e9344 ffffffffffffffffffffffffffffffff 11084 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/x86_64/Constants.o
|
||||
ffffffffffffffffffffffffffffffff 2a0eeea2e8601206c56722921666610f ffffffffffffffffffffffffffffffff 28012 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/x86_64/ViewDelegate.o
|
||||
42acb18665f10895e28245c2f99e562a 2577f0e7533580056a012b1d8c07e8e3 ffffffffffffffffffffffffffffffff 75272 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/x86_64/Controller.o
|
||||
ffffffffffffffffffffffffffffffff 34c5f6253fd3652602ac9f689caff418 ffffffffffffffffffffffffffffffff 2672 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/x86_64/main.o
|
||||
ffffffffffffffffffffffffffffffff 1c94908045430b21b3bd64e63fe2ae06 ffffffffffffffffffffffffffffffff 35572 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/x86_64/NewMessageWindow.o
|
||||
ffffffffffffffffffffffffffffffff 0b19471e78e79db38cf65ac8ea0898ec ffffffffffffffffffffffffffffffff 13872 /Users/jeena/Projects/Tentia/build/Tentia.build/Debug/Twittia.build/Objects-normal/x86_64/AccessToken.o
|
||||
00000000006c1f9f000000000000016a 42acb18665026997e28245c2f99e5165 ffffffffffffffffffffffffffffffff 13379576 /var/folders/zl/vphyb36166vg0vnzmz23_y740000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders/Tentia_Prefix-ebfofqgutfagnlccnfecejfszpvw/Tentia_Prefix.pch.pth
|
||||
00000000000000000000000000000000 8aee465c6d1319e6da0148fd63b765fd ffffffffffffffffffffffffffffffff 726 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/index_oauth.html
|
||||
00000000000000000000000000000000 8aee465c6d1319e6da0148fd63b765fd ffffffffffffffffffffffffffffffff 808 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/index_oauth.html
|
||||
00000000000000000000000000000000 cc90fbe023b6ad3b1d31bdcece689545 ffffffffffffffffffffffffffffffff 630 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/pin.png
|
||||
00000000000000000000000000000000 d3b0bab7e35e3d2ecbe610f54e5c88a5 ffffffffffffffffffffffffffffffff 121861 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/Icon.icns
|
||||
00000000000000000000000000000000 461f981fcc74c67c6a4c4118e66a23ce ffffffffffffffffffffffffffffffff 11868 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/sprite-icons.png
|
||||
00000000000000000000000000000000 a0807f75cabb63b870a3a7b7ea3b4eea ffffffffffffffffffffffffffffffff 3002 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/default.css
|
||||
00000000000000000000000000000000 54f84f996cfd6998112e0864b3a219a5 ffffffffffffffffffffffffffffffff 72174 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/jQuery.js
|
||||
00000000000000000000000000000000 330ef8757cd3b7688fce18574fe407a9 ffffffffffffffffffffffffffffffff 166 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/odd-bg.png
|
||||
00000000000000000000000000000000 8a232f6677c0a8eec8a15245edbb9c1d ffffffffffffffffffffffffffffffff 796 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/index.html
|
||||
00000000000000000000000000000000 8a232f6677c0a8eec8a15245edbb9c1d ffffffffffffffffffffffffffffffff 738 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/index.html
|
||||
00000000000000000000000000000000 c7041b32297ba497b55c6642144d5dc5 ffffffffffffffffffffffffffffffff 9868 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/jQuery-Plugins.js
|
||||
00000000000000000000000000000000 6b53144155d69e19d6d6fa76747e514d ffffffffffffffffffffffffffffffff 171 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/even-bg.png
|
||||
0000000050818d19000000000001860d 1926f4b36e7b4a1ba0e5655b80e91321 ffffffffffffffffffffffffffffffff 18355 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/English.lproj/MainMenu.nib
|
||||
|
@ -35,12 +35,15 @@ ffffffffffffffffffffffffffffffff 0b19471e78e79db38cf65ac8ea0898ec ffffffffffffff
|
|||
0000000050783ba0000000000000002d fe67d8f27aa4e8b8947f60c7b095bdfd ffffffffffffffffffffffffffffffff 92 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/English.lproj/InfoPlist.strings
|
||||
00000000000000000000000000000000 d7e3e39afe56553560f5631d079a8dbb ffffffffffffffffffffffffffffffff 442 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/English.lproj/Credits.rtf
|
||||
00000000000000000000000000000000 437db02b06d2926fe8326ed076a1de04 ffffffffffffffffffffffffffffffff 17178 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/Core.js
|
||||
00000000000000000000000000000000 ea6df34316ae4b4a2b0a04e0ea2b7541 ffffffffffffffffffffffffffffffff 5550 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/sha1.js
|
||||
00000000000000000000000000000000 c5fc2a371798c0a6995845e5185b1605 ffffffffffffffffffffffffffffffff 20756 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/oauth.js
|
||||
00000000000000000000000000000000 f046752ea2d26acc574f55553b495770 ffffffffffffffffffffffffffffffff 1178 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/dsa_pub.pem
|
||||
00000000000000000000000000000000 5574e00c2add45a7d40448dc5ebe5186 ffffffffffffffffffffffffffffffff 607 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/Constants.js
|
||||
00000000000000000000000000000000 ba2eda5238edbcb684b843ab45b36cd5 ffffffffffffffffffffffffffffffff 5030 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/hmac-sha256.js
|
||||
00000000000000000000000000000000 245cec8ee42313430237f8dba54aca84 ffffffffffffffffffffffffffffffff 891 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/enc-base64-min.js
|
||||
00000000000000000000000000000000 94a473b04f4d1a20dd3c7034dce17a55 ffffffffffffffffffffffffffffffff 35693 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/URI.min.js
|
||||
00000000000000000000000000000000 c674cff473d4e9e23616ac3a869f2f2d ffffffffffffffffffffffffffffffff 8 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/PkgInfo
|
||||
00000000000000000000000000000000 c674cff473d4e9e23616ac3a869f2f2d ffffffffffffffffffffffffffffffff 2494 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Info.plist
|
||||
00000000000000000000000000000000 ea6df34316ae4b4a2b0a04e0ea2b7541 ffffffffffffffffffffffffffffffff 5550 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/sha1.js
|
||||
00000000000000000000000000000000 c5fc2a371798c0a6995845e5185b1605 ffffffffffffffffffffffffffffffff 20756 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/oauth.js
|
||||
00000000006c1f9f000000000000016a f5ab1abc302b4ea21d42c30e172292fa ffffffffffffffffffffffffffffffff 13965516 /var/folders/zl/vphyb36166vg0vnzmz23_y740000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders/Tentia_Prefix-anfhnluebtepscdoibdoxidqnxkm/Tentia_Prefix.pch.pth
|
||||
00000000006c1f9f000000000000016a f67475fafe41232cd38bb85c77f763b2 ffffffffffffffffffffffffffffffff 13379576 /var/folders/zl/vphyb36166vg0vnzmz23_y740000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders/Tentia_Prefix-alrrevllevkhjgcdcmspictlkefh/Tentia_Prefix.pch.pth
|
||||
0000000050783ba00000000000004832 df58b68e94244aace26f23989188c2cf ffffffffffffffffffffffffffffffff 3951 /Users/jeena/Projects/Tentia/build/Debug/Tentia.app/Contents/Resources/English.lproj/NewTweetWindow.nib
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -8,6 +8,7 @@
|
|||
<script type="text/javascript" src="hmac-sha256.js"></script>
|
||||
<script type="text/javascript" src="enc-base64-min.js"></script>
|
||||
<script type="text/javascript" src="Constants.js"></script>
|
||||
<script type="text/javascript" src="URI.min.js"></script>
|
||||
<script type="text/javascript" src="OauthImplementation.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
|
Reference in a new issue