Skip to content

Instantly share code, notes, and snippets.

@baio
Created September 22, 2014 07:42
Show Gist options
  • Select an option

  • Save baio/4d85f2ebb220f16c41c7 to your computer and use it in GitHub Desktop.

Select an option

Save baio/4d85f2ebb220f16c41c7 to your computer and use it in GitHub Desktop.
Dirty fix for WP8 + cordova + oauth.io js (Look for //FIX WP8)
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
module.exports = {
oauthd_url: "https://oauth.io",
oauthd_api: "https://oauth.io/api",
version: "web-0.2.4",
options: {}
};
},{}],2:[function(require,module,exports){
"use strict";
var Url, cache, config, cookies, sha1;
config = require("../config");
cookies = require("../tools/cookies");
cache = require("../tools/cache");
Url = require("../tools/url");
sha1 = require("../tools/sha1");
module.exports = function(window, document, jQuery, navigator) {
var $, client_states, oauth_result, oauthio, parse_urlfragment, providers_api, providers_cb, providers_desc;
$ = jQuery;
Url = Url(document);
cookies.init(config, document);
cache.init(cookies, config);
oauthio = {
request: {}
};
providers_desc = {};
providers_cb = {};
providers_api = {
execProvidersCb: function(provider, e, r) {
var cbs, i;
if (providers_cb[provider]) {
cbs = providers_cb[provider];
delete providers_cb[provider];
for (i in cbs) {
cbs[i](e, r);
}
}
},
getDescription: function(provider, opts, callback) {
opts = opts || {};
if (typeof providers_desc[provider] === "object") {
return callback(null, providers_desc[provider]);
}
if (!providers_desc[provider]) {
providers_api.fetchDescription(provider);
}
if (!opts.wait) {
return callback(null, {});
}
providers_cb[provider] = providers_cb[provider] || [];
providers_cb[provider].push(callback);
}
};
config.oauthd_base = Url.getAbsUrl(config.oauthd_url).match(/^.{2,5}:\/\/[^/]+/)[0];
client_states = [];
oauth_result = void 0;
(parse_urlfragment = function() {
var cookie_state, results;
results = /[\\#&]oauthio=([^&]*)/.exec(document.location.hash);
if (results) {
document.location.hash = document.location.hash.replace(/&?oauthio=[^&]*/, "");
oauth_result = decodeURIComponent(results[1].replace(/\+/g, " "));
cookie_state = cookies.readCookie("oauthio_state");
if (cookie_state) {
client_states.push(cookie_state);
cookies.eraseCookie("oauthio_state");
}
}
})();
window.location_operations = {
reload: function() {
return document.location.reload();
},
getHash: function() {
return document.location.hash;
},
setHash: function(newHash) {
return document.location.hash = newHash;
},
changeHref: function(newLocation) {
return document.location.href = newLocation;
}
};
return function(exports) {
var delayedFunctions, delayfn, e, _preloadcalls;
delayedFunctions = function($) {
oauthio.request = require("./oauthio_requests")($, config, client_states, cache, providers_api);
providers_api.fetchDescription = function(provider) {
if (providers_desc[provider]) {
return;
}
providers_desc[provider] = true;
$.ajax({
url: config.oauthd_api + "/providers/" + provider,
data: {
extend: true
},
dataType: "json"
}).done(function(data) {
providers_desc[provider] = data.data;
providers_api.execProvidersCb(provider, null, data.data);
}).always(function() {
if (typeof providers_desc[provider] !== "object") {
delete providers_desc[provider];
providers_api.execProvidersCb(provider, new Error("Unable to fetch request description"));
}
});
};
};
if (exports.OAuth == null) {
exports.OAuth = {
initialize: function(public_key, options) {
var i;
config.key = public_key;
if (options) {
for (i in options) {
config.options[i] = options[i];
}
}
},
setOAuthdURL: function(url) {
config.oauthd_url = url;
config.oauthd_base = Url.getAbsUrl(config.oauthd_url).match(/^.{2,5}:\/\/[^/]+/)[0];
},
getVersion: function() {
return config.version;
},
create: function(provider, tokens, request) {
var i, make_res, make_res_endpoint, res;
if (!tokens) {
return cache.tryCache(exports.OAuth, provider, true);
}
if (typeof request !== "object") {
providers_api.fetchDescription(provider);
}
make_res = function(method) {
return oauthio.request.mkHttp(provider, tokens, request, method);
};
make_res_endpoint = function(method, url) {
return oauthio.request.mkHttpEndpoint(provider, tokens, request, method, url);
};
res = {};
for (i in tokens) {
res[i] = tokens[i];
}
res.get = make_res("GET");
res.post = make_res("POST");
res.put = make_res("PUT");
res.patch = make_res("PATCH");
res.del = make_res("DELETE");
res.me = oauthio.request.mkHttpMe(provider, tokens, request, "GET");
return res;
},
popup: function(provider, opts, callback) {
var defer, frm, getMessage, gotmessage, interval, res, url, wnd, wndTimeout, wnd_options, wnd_settings, _ref;
gotmessage = false;
getMessage = function(e) {
if (e.origin !== config.oauthd_base) {
return;
}
try {
wnd.close();
} catch (_error) {}
opts.data = e.data;
oauthio.request.sendCallback(opts, defer);
return gotmessage = true;
};
wnd = void 0;
frm = void 0;
wndTimeout = void 0;
defer = (_ref = window.jQuery) != null ? _ref.Deferred() : void 0;
opts = opts || {};
if (!config.key) {
if (defer != null) {
defer.reject(new Error("OAuth object must be initialized"));
}
if (callback == null) {
return defer.promise();
} else {
return callback(new Error("OAuth object must be initialized"));
}
}
if (arguments.length === 2 && typeof opts === 'function') {
callback = opts;
opts = {};
}
if (cache.cacheEnabled(opts.cache)) {
res = cache.tryCache(exports.OAuth, provider, opts.cache);
if (res) {
if (defer != null) {
defer.resolve(res);
}
if (callback) {
return callback(null, res);
} else {
return defer.promise();
}
}
}
if (!opts.state) {
opts.state = sha1.create_hash();
opts.state_type = "client";
}
client_states.push(opts.state);
url = config.oauthd_url + "/auth/" + provider + "?k=" + config.key;
//FIX WP8
console.log(opts.fixedDomain);
if (!opts.fixedDomain){
url += "&d=" + encodeURIComponent(Url.getAbsUrl("/"));
}
else {
url += "&d=" + encodeURIComponent(opts.fixedDomain);
}
if (opts) {
url += "&opts=" + encodeURIComponent(JSON.stringify(opts));
}
if (opts.wnd_settings) {
wnd_settings = opts.wnd_settings;
delete opts.wnd_settings;
} else {
wnd_settings = {
width: Math.floor(window.outerWidth * 0.8),
height: Math.floor(window.outerHeight * 0.5)
};
}
if (wnd_settings.height == null) {
wnd_settings.height = (wnd_settings.height < 350 ? 350 : void 0);
}
if (wnd_settings.width == null) {
wnd_settings.width = (wnd_settings.width < 800 ? 800 : void 0);
}
if (wnd_settings.left == null) {
wnd_settings.left = window.screenX + (window.outerWidth - wnd_settings.width) / 2;
}
if (wnd_settings.top == null) {
wnd_settings.top = window.screenY + (window.outerHeight - wnd_settings.height) / 8;
}
wnd_options = "width=" + wnd_settings.width + ",height=" + wnd_settings.height;
wnd_options += ",toolbar=0,scrollbars=1,status=1,resizable=1,location=1,menuBar=0";
wnd_options += ",left=" + wnd_settings.left + ",top=" + wnd_settings.top;
opts = {
provider: provider,
cache: opts.cache
};
opts.callback = function(e, r) {
if (window.removeEventListener) {
window.removeEventListener("message", getMessage, false);
} else if (window.detachEvent) {
window.detachEvent("onmessage", getMessage);
} else {
if (document.detachEvent) {
document.detachEvent("onmessage", getMessage);
}
}
opts.callback = function() {};
if (wndTimeout) {
clearTimeout(wndTimeout);
wndTimeout = undefined;
}
if (callback) {
return callback(e, r);
} else {
return undefined;
}
};
if (window.attachEvent) {
window.attachEvent("onmessage", getMessage);
} else if (document.attachEvent) {
document.attachEvent("onmessage", getMessage);
} else {
if (window.addEventListener) {
window.addEventListener("message", getMessage, false);
}
}
if (typeof chrome !== "undefined" && chrome.runtime && chrome.runtime.onMessageExternal) {
chrome.runtime.onMessageExternal.addListener(function(request, sender, sendResponse) {
request.origin = sender.url.match(/^.{2,5}:\/\/[^/]+/)[0];
if (defer != null) {
defer.resolve();
}
return getMessage(request);
});
}
if (!frm && (navigator.userAgent.indexOf("MSIE") !== -1 || navigator.appVersion.indexOf("Trident/") > 0)) {
frm = document.createElement("iframe");
frm.src = config.oauthd_url + "/auth/iframe?d=" + encodeURIComponent(Url.getAbsUrl("/"));
frm.width = 0;
frm.height = 0;
frm.frameBorder = 0;
frm.style.visibility = "hidden";
document.body.appendChild(frm);
}
wndTimeout = setTimeout(function() {
if (defer != null) {
defer.reject(new Error("Authorization timed out"));
}
if (opts.callback && typeof opts.callback === "function") {
opts.callback(new Error("Authorization timed out"));
}
try {
wnd.close();
} catch (_error) {}
}, 1200 * 1000);
//FIX WP8
if (navigator.userAgent.indexOf("Windows Phone 8") == -1){
wnd = window.open(url, "Authorization", wnd_options);
}
else{
wnd = window.open(url, "_blank", wnd_options);
}
if (wnd) {
wnd.focus();
interval = window.setInterval(function() {
if (wnd === null || wnd.closed) {
window.clearInterval(interval);
if (!gotmessage) {
if (defer != null) {
defer.reject(new Error("The popup was closed"));
}
if (opts.callback && typeof opts.callback === "function") {
return opts.callback(new Error("The popup was closed"));
}
}
}
}, 500);
} else {
if (defer != null) {
defer.reject(new Error("Could not open a popup"));
}
if (opts.callback && typeof opts.callback === "function") {
opts.callback(new Error("Could not open a popup"));
}
}
return defer != null ? defer.promise() : void 0;
},
redirect: function(provider, opts, url) {
var redirect_uri, res;
if (arguments.length === 2) {
url = opts;
opts = {};
}
if (cache.cacheEnabled(opts.cache)) {
res = cache.tryCache(exports.OAuth, provider, opts.cache);
if (res) {
url = Url.getAbsUrl(url) + (url.indexOf("#") === -1 ? "#" : "&") + "oauthio=cache";
window.location_operations.changeHref(url);
window.location_operations.reload();
return;
}
}
if (!opts.state) {
opts.state = sha1.create_hash();
opts.state_type = "client";
}
cookies.createCookie("oauthio_state", opts.state);
redirect_uri = encodeURIComponent(Url.getAbsUrl(url));
url = config.oauthd_url + "/auth/" + provider + "?k=" + config.key;
url += "&redirect_uri=" + redirect_uri;
if (opts) {
url += "&opts=" + encodeURIComponent(JSON.stringify(opts));
}
window.location_operations.changeHref(url);
},
callback: function(provider, opts, callback) {
var defer, res, _ref;
defer = (_ref = window.jQuery) != null ? _ref.Deferred() : void 0;
if (arguments.length === 1 && typeof provider === "function") {
callback = provider;
provider = undefined;
opts = {};
}
if (arguments.length === 1 && typeof provider === "string") {
opts = {};
}
if (arguments.length === 2 && typeof opts === "function") {
callback = opts;
opts = {};
}
if (cache.cacheEnabled(opts.cache) || oauth_result === "cache") {
res = cache.tryCache(exports.OAuth, provider, opts.cache);
if (oauth_result === "cache" && (typeof provider !== "string" || !provider)) {
if (defer != null) {
defer.reject(new Error("You must set a provider when using the cache"));
}
if (callback) {
return callback(new Error("You must set a provider when using the cache"));
} else {
return defer != null ? defer.promise() : void 0;
}
}
if (res) {
if (callback) {
if (res) {
return callback(null, res);
}
} else {
if (defer != null) {
defer.resolve(res);
}
return defer != null ? defer.promise() : void 0;
}
}
}
if (!oauth_result) {
return;
}
oauthio.request.sendCallback({
data: oauth_result,
provider: provider,
cache: opts.cache,
callback: callback
}, defer);
return defer != null ? defer.promise() : void 0;
},
clearCache: function(provider) {
cookies.eraseCookie("oauthio_provider_" + provider);
},
http_me: function(opts) {
if (oauthio.request.http_me) {
oauthio.request.http_me(opts);
}
},
http: function(opts) {
if (oauthio.request.http) {
oauthio.request.http(opts);
}
}
};
if (typeof window.jQuery === "undefined") {
_preloadcalls = [];
delayfn = void 0;
if (typeof chrome !== "undefined" && chrome.extension) {
delayfn = function() {
return function() {
throw new Error("Please include jQuery before oauth.js");
};
};
} else {
e = document.createElement("script");
e.src = "//code.jquery.com/jquery.min.js";
e.type = "text/javascript";
e.onload = function() {
var i;
delayedFunctions(window.jQuery);
for (i in _preloadcalls) {
_preloadcalls[i].fn.apply(null, _preloadcalls[i].args);
}
};
document.getElementsByTagName("head")[0].appendChild(e);
delayfn = function(f) {
return function() {
var arg, args_copy;
args_copy = [];
for (arg in arguments) {
args_copy[arg] = arguments[arg];
}
_preloadcalls.push({
fn: f,
args: args_copy
});
};
};
}
oauthio.request.http = delayfn(function() {
oauthio.request.http.apply(exports.OAuth, arguments);
});
providers_api.fetchDescription = delayfn(function() {
providers_api.fetchDescription.apply(providers_api, arguments);
});
oauthio.request = require("./oauthio_requests")(window.jQuery, config, client_states, cache, providers_api);
} else {
delayedFunctions(window.jQuery);
}
}
};
};
},{"../config":1,"../tools/cache":5,"../tools/cookies":6,"../tools/sha1":7,"../tools/url":8,"./oauthio_requests":3}],3:[function(require,module,exports){
var Url,
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
Url = require('../tools/url')();
module.exports = function($, config, client_states, cache, providers_api) {
return {
http: function(opts) {
var defer, desc_opts, doRequest, i, options;
doRequest = function() {
var i, k, qs, request;
request = options.oauthio.request || {};
if (!request.cors) {
options.url = encodeURIComponent(options.url);
if (options.url[0] !== "/") {
options.url = "/" + options.url;
}
options.url = config.oauthd_url + "/request/" + options.oauthio.provider + options.url;
options.headers = options.headers || {};
options.headers.oauthio = "k=" + config.key;
if (options.oauthio.tokens.oauth_token && options.oauthio.tokens.oauth_token_secret) {
options.headers.oauthio += "&oauthv=1";
}
for (k in options.oauthio.tokens) {
options.headers.oauthio += "&" + encodeURIComponent(k) + "=" + encodeURIComponent(options.oauthio.tokens[k]);
}
delete options.oauthio;
return $.ajax(options);
}
if (options.oauthio.tokens) {
if (options.oauthio.tokens.access_token) {
options.oauthio.tokens.token = options.oauthio.tokens.access_token;
}
if (!options.url.match(/^[a-z]{2,16}:\/\//)) {
if (options.url[0] !== "/") {
options.url = "/" + options.url;
}
options.url = request.url + options.url;
}
options.url = Url.replaceParam(options.url, options.oauthio.tokens, request.parameters);
if (request.query) {
qs = [];
for (i in request.query) {
qs.push(encodeURIComponent(i) + "=" + encodeURIComponent(Url.replaceParam(request.query[i], options.oauthio.tokens, request.parameters)));
}
if (__indexOf.call(options.url, "?") >= 0) {
options.url += "&" + qs;
} else {
options.url += "?" + qs;
}
}
if (request.headers) {
options.headers = options.headers || {};
for (i in request.headers) {
options.headers[i] = Url.replaceParam(request.headers[i], options.oauthio.tokens, request.parameters);
}
}
delete options.oauthio;
return $.ajax(options);
}
};
options = {};
i = void 0;
for (i in opts) {
options[i] = opts[i];
}
if (!options.oauthio.request || options.oauthio.request === true) {
desc_opts = {
wait: !!options.oauthio.request
};
defer = $ != null ? $.Deferred() : void 0;
providers_api.getDescription(options.oauthio.provider, desc_opts, function(e, desc) {
if (e) {
return defer != null ? defer.reject(e) : void 0;
}
if (options.oauthio.tokens.oauth_token && options.oauthio.tokens.oauth_token_secret) {
options.oauthio.request = desc.oauth1 && desc.oauth1.request;
} else {
options.oauthio.request = desc.oauth2 && desc.oauth2.request;
}
if (defer != null) {
defer.resolve();
}
});
return defer != null ? defer.then(doRequest) : void 0;
} else {
return doRequest();
}
},
http_me: function(opts) {
var defer, desc_opts, doRequest, k, options;
doRequest = function() {
var defer, k, promise, request;
defer = $ != null ? $.Deferred() : void 0;
request = options.oauthio.request || {};
options.url = config.oauthd_url + "/auth/" + options.oauthio.provider + "/me";
options.headers = options.headers || {};
options.headers.oauthio = "k=" + config.key;
if (options.oauthio.tokens.oauth_token && options.oauthio.tokens.oauth_token_secret) {
options.headers.oauthio += "&oauthv=1";
}
for (k in options.oauthio.tokens) {
options.headers.oauthio += "&" + encodeURIComponent(k) + "=" + encodeURIComponent(options.oauthio.tokens[k]);
}
delete options.oauthio;
promise = $.ajax(options);
$.when(promise).done(function(data) {
if (defer != null) {
defer.resolve(data.data);
}
}).fail(function(data) {
if (data.responseJSON) {
if (defer != null) {
defer.reject(data.responseJSON.data);
}
} else {
if (defer != null) {
defer.reject(new Error("An error occured while trying to access the resource"));
}
}
});
return defer != null ? defer.promise() : void 0;
};
options = {};
for (k in opts) {
options[k] = opts[k];
}
if (!options.oauthio.request || options.oauthio.request === true) {
desc_opts = {
wait: !!options.oauthio.request
};
defer = $ != null ? $.Deferred() : void 0;
providers_api.getDescription(options.oauthio.provider, desc_opts, function(e, desc) {
if (e) {
return defer != null ? defer.reject(e) : void 0;
}
if (options.oauthio.tokens.oauth_token && options.oauthio.tokens.oauth_token_secret) {
options.oauthio.request = desc.oauth1 && desc.oauth1.request;
} else {
options.oauthio.request = desc.oauth2 && desc.oauth2.request;
}
if (defer != null) {
defer.resolve();
}
});
return defer != null ? defer.then(doRequest) : void 0;
} else {
return doRequest();
}
},
mkHttp: function(provider, tokens, request, method) {
var base;
base = this;
return function(opts, opts2) {
var i, options;
options = {};
if (typeof opts === "string") {
if (typeof opts2 === "object") {
for (i in opts2) {
options[i] = opts2[i];
}
}
options.url = opts;
} else if (typeof opts === "object") {
for (i in opts) {
options[i] = opts[i];
}
}
options.type = options.type || method;
options.oauthio = {
provider: provider,
tokens: tokens,
request: request
};
return base.http(options);
};
},
mkHttpMe: function(provider, tokens, request, method) {
var base;
base = this;
return function(filter) {
var options;
options = {};
options.type = options.type || method;
options.oauthio = {
provider: provider,
tokens: tokens,
request: request
};
options.data = options.data || {};
options.data.filter = (filter ? filter.join(",") : undefined);
return base.http_me(options);
};
},
sendCallback: function(opts, defer) {
var base, data, e, err, i, k, make_res, request, res, tokens, v;
base = this;
data = void 0;
err = void 0;
try {
data = JSON.parse(opts.data);
} catch (_error) {
e = _error;
if (defer != null) {
defer.reject(new Error("Error while parsing result"));
}
return opts.callback(new Error("Error while parsing result"));
}
if (!data || !data.provider) {
return;
}
if (opts.provider && data.provider.toLowerCase() !== opts.provider.toLowerCase()) {
err = new Error("Returned provider name does not match asked provider");
if (defer != null) {
defer.reject(err);
}
if (opts.callback && typeof opts.callback === "function") {
return opts.callback(err);
} else {
return;
}
}
if (data.status === "error" || data.status === "fail") {
err = new Error(data.message);
err.body = data.data;
if (defer != null) {
defer.reject(err);
}
if (opts.callback && typeof opts.callback === "function") {
return opts.callback(err);
} else {
return;
}
}
if (data.status !== "success" || !data.data) {
err = new Error();
err.body = data.data;
if (defer != null) {
defer.reject(err);
}
if (opts.callback && typeof opts.callback === "function") {
return opts.callback(err);
} else {
return;
}
}
data.state = data.state.replace(/\s+/g, "");
for (k in client_states) {
v = client_states[k];
client_states[k] = v.replace(/\s+/g, "");
}
if (!data.state || client_states.indexOf(data.state) === -1) {
if (defer != null) {
defer.reject(new Error("State is not matching"));
}
if (opts.callback && typeof opts.callback === "function") {
return opts.callback(new Error("State is not matching"));
} else {
return;
}
}
if (!opts.provider) {
data.data.provider = data.provider;
}
res = data.data;
if (cache.cacheEnabled(opts.cache) && res) {
cache.storeCache(data.provider, res);
}
request = res.request;
delete res.request;
tokens = void 0;
if (res.access_token) {
tokens = {
access_token: res.access_token
};
} else if (res.oauth_token && res.oauth_token_secret) {
tokens = {
oauth_token: res.oauth_token,
oauth_token_secret: res.oauth_token_secret
};
}
if (!request) {
if (defer != null) {
defer.resolve(res);
}
if (opts.callback && typeof opts.callback === "function") {
return opts.callback(null, res);
} else {
return;
}
}
if (request.required) {
for (i in request.required) {
tokens[request.required[i]] = res[request.required[i]];
}
}
make_res = function(method) {
return base.mkHttp(data.provider, tokens, request, method);
};
res.get = make_res("GET");
res.post = make_res("POST");
res.put = make_res("PUT");
res.patch = make_res("PATCH");
res.del = make_res("DELETE");
res.me = base.mkHttpMe(data.provider, tokens, request, "GET");
if (defer != null) {
defer.resolve(res);
}
if (opts.callback && typeof opts.callback === "function") {
return opts.callback(null, res);
} else {
}
}
};
};
},{"../tools/url":8}],4:[function(require,module,exports){
var OAuth_creator, jquery;
if (typeof jQuery !== "undefined" && jQuery !== null) {
jquery = jQuery;
} else {
jquery = void 0;
}
OAuth_creator = require('./lib/oauth')(window, document, jquery, navigator);
OAuth_creator(window || this);
},{"./lib/oauth":2}],5:[function(require,module,exports){
module.exports = {
init: function(cookies_module, config) {
this.config = config;
return this.cookies = cookies_module;
},
tryCache: function(OAuth, provider, cache) {
var e, i, res;
if (this.cacheEnabled(cache)) {
cache = this.cookies.readCookie("oauthio_provider_" + provider);
if (!cache) {
return false;
}
cache = decodeURIComponent(cache);
}
if (typeof cache === "string") {
try {
cache = JSON.parse(cache);
} catch (_error) {
e = _error;
return false;
}
}
if (typeof cache === "object") {
res = {};
for (i in cache) {
if (i !== "request" && typeof cache[i] !== "function") {
res[i] = cache[i];
}
}
return OAuth.create(provider, res, cache.request);
}
return false;
},
storeCache: function(provider, cache) {
this.cookies.createCookie("oauthio_provider_" + provider, encodeURIComponent(JSON.stringify(cache)), cache.expires_in - 10 || 3600);
},
cacheEnabled: function(cache) {
if (typeof cache === "undefined") {
return this.config.options.cache;
}
return cache;
}
};
},{}],6:[function(require,module,exports){
/* istanbul ignore next */
module.exports = {
init: function(config, document) {
this.config = config;
return this.document = document;
},
createCookie: function(name, value, expires) {
var date;
this.eraseCookie(name);
date = new Date();
date.setTime(date.getTime() + (expires || 1200) * 1000);
expires = "; expires=" + date.toGMTString();
this.document.cookie = name + "=" + value + expires + "; path=/";
},
readCookie: function(name) {
var c, ca, i, nameEQ;
nameEQ = name + "=";
ca = this.document.cookie.split(";");
i = 0;
while (i < ca.length) {
c = ca[i];
while (c.charAt(0) === " ") {
c = c.substring(1, c.length);
}
if (c.indexOf(nameEQ) === 0) {
return c.substring(nameEQ.length, c.length);
}
i++;
}
return null;
},
eraseCookie: function(name) {
var date;
date = new Date();
date.setTime(date.getTime() - 86400000);
this.document.cookie = name + "=; expires=" + date.toGMTString() + "; path=/";
}
};
},{}],7:[function(require,module,exports){
var b64pad, hexcase;
hexcase = 0;
b64pad = "";
/* istanbul ignore next */
module.exports = {
hex_sha1: function(s) {
return this.rstr2hex(this.rstr_sha1(this.str2rstr_utf8(s)));
},
b64_sha1: function(s) {
return this.rstr2b64(this.rstr_sha1(this.str2rstr_utf8(s)));
},
any_sha1: function(s, e) {
return this.rstr2any(this.rstr_sha1(this.str2rstr_utf8(s)), e);
},
hex_hmac_sha1: function(k, d) {
return this.rstr2hex(this.rstr_hmac_sha1(this.str2rstr_utf8(k), this.str2rstr_utf8(d)));
},
b64_hmac_sha1: function(k, d) {
return this.rstr2b64(this.rstr_hmac_sha1(this.str2rstr_utf8(k), this.str2rstr_utf8(d)));
},
any_hmac_sha1: function(k, d, e) {
return this.rstr2any(this.rstr_hmac_sha1(this.str2rstr_utf8(k), this.str2rstr_utf8(d)), e);
},
sha1_vm_test: function() {
return thishex_sha1("abc").toLowerCase() === "a9993e364706816aba3e25717850c26c9cd0d89d";
},
rstr_sha1: function(s) {
return this.binb2rstr(this.binb_sha1(this.rstr2binb(s), s.length * 8));
},
rstr_hmac_sha1: function(key, data) {
var bkey, hash, i, ipad, opad;
bkey = this.rstr2binb(key);
if (bkey.length > 16) {
bkey = this.binb_sha1(bkey, key.length * 8);
}
ipad = Array(16);
opad = Array(16);
i = 0;
while (i < 16) {
ipad[i] = bkey[i] ^ 0x36363636;
opad[i] = bkey[i] ^ 0x5C5C5C5C;
i++;
}
hash = this.binb_sha1(ipad.concat(this.rstr2binb(data)), 512 + data.length * 8);
return this.binb2rstr(this.binb_sha1(opad.concat(hash), 512 + 160));
},
rstr2hex: function(input) {
var e, hex_tab, i, output, x;
try {
hexcase;
} catch (_error) {
e = _error;
hexcase = 0;
}
hex_tab = (hexcase ? "0123456789ABCDEF" : "0123456789abcdef");
output = "";
x = void 0;
i = 0;
while (i < input.length) {
x = input.charCodeAt(i);
output += hex_tab.charAt((x >>> 4) & 0x0F) + hex_tab.charAt(x & 0x0F);
i++;
}
return output;
},
rstr2b64: function(input) {
var e, i, j, len, output, tab, triplet;
try {
b64pad;
} catch (_error) {
e = _error;
b64pad = "";
}
tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
output = "";
len = input.length;
i = 0;
while (i < len) {
triplet = (input.charCodeAt(i) << 16) | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) | (i + 2 < len ? input.charCodeAt(i + 2) : 0);
j = 0;
while (j < 4) {
if (i * 8 + j * 6 > input.length * 8) {
output += b64pad;
} else {
output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F);
}
j++;
}
i += 3;
}
return output;
},
rstr2any: function(input, encoding) {
var dividend, divisor, full_length, i, output, q, quotient, remainders, x;
divisor = encoding.length;
remainders = Array();
i = void 0;
q = void 0;
x = void 0;
quotient = void 0;
dividend = Array(Math.ceil(input.length / 2));
i = 0;
while (i < dividend.length) {
dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);
i++;
}
while (dividend.length > 0) {
quotient = Array();
x = 0;
i = 0;
while (i < dividend.length) {
x = (x << 16) + dividend[i];
q = Math.floor(x / divisor);
x -= q * divisor;
if (quotient.length > 0 || q > 0) {
quotient[quotient.length] = q;
}
i++;
}
remainders[remainders.length] = x;
dividend = quotient;
}
output = "";
i = remainders.length - 1;
while (i >= 0) {
output += encoding.charAt(remainders[i]);
i--;
}
full_length = Math.ceil(input.length * 8 / (Math.log(encoding.length) / Math.log(2)));
i = output.length;
while (i < full_length) {
output = encoding[0] + output;
i++;
}
return output;
},
str2rstr_utf8: function(input) {
var i, output, x, y;
output = "";
i = -1;
x = void 0;
y = void 0;
while (++i < input.length) {
x = input.charCodeAt(i);
y = (i + 1 < input.length ? input.charCodeAt(i + 1) : 0);
if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {
x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
i++;
}
if (x <= 0x7F) {
output += String.fromCharCode(x);
} else if (x <= 0x7FF) {
output += String.fromCharCode(0xC0 | ((x >>> 6) & 0x1F), 0x80 | (x & 0x3F));
} else if (x <= 0xFFFF) {
output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F), 0x80 | ((x >>> 6) & 0x3F), 0x80 | (x & 0x3F));
} else {
if (x <= 0x1FFFFF) {
output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07), 0x80 | ((x >>> 12) & 0x3F), 0x80 | ((x >>> 6) & 0x3F), 0x80 | (x & 0x3F));
}
}
}
return output;
},
str2rstr_utf16le: function(input) {
var i, output;
output = "";
i = 0;
while (i < input.length) {
output += String.fromCharCode(input.charCodeAt(i) & 0xFF, (input.charCodeAt(i) >>> 8) & 0xFF);
i++;
}
return output;
},
str2rstr_utf16be: function(input) {
var i, output;
output = "";
i = 0;
while (i < input.length) {
output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, input.charCodeAt(i) & 0xFF);
i++;
}
return output;
},
rstr2binb: function(input) {
var i, output;
output = Array(input.length >> 2);
i = 0;
while (i < output.length) {
output[i] = 0;
i++;
}
i = 0;
while (i < input.length * 8) {
output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);
i += 8;
}
return output;
},
binb2rstr: function(input) {
var i, output;
output = "";
i = 0;
while (i < input.length * 32) {
output += String.fromCharCode((input[i >> 5] >>> (24 - i % 32)) & 0xFF);
i += 8;
}
return output;
},
binb_sha1: function(x, len) {
var a, b, c, d, e, i, j, olda, oldb, oldc, oldd, olde, t, w;
x[len >> 5] |= 0x80 << (24 - len % 32);
x[((len + 64 >> 9) << 4) + 15] = len;
w = Array(80);
a = 1732584193;
b = -271733879;
c = -1732584194;
d = 271733878;
e = -1009589776;
i = 0;
while (i < x.length) {
olda = a;
oldb = b;
oldc = c;
oldd = d;
olde = e;
j = 0;
while (j < 80) {
if (j < 16) {
w[j] = x[i + j];
} else {
w[j] = this.bit_rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);
}
t = this.safe_add(this.safe_add(this.bit_rol(a, 5), this.sha1_ft(j, b, c, d)), this.safe_add(this.safe_add(e, w[j]), this.sha1_kt(j)));
e = d;
d = c;
c = this.bit_rol(b, 30);
b = a;
a = t;
j++;
}
a = this.safe_add(a, olda);
b = this.safe_add(b, oldb);
c = this.safe_add(c, oldc);
d = this.safe_add(d, oldd);
e = this.safe_add(e, olde);
i += 16;
}
return Array(a, b, c, d, e);
},
sha1_ft: function(t, b, c, d) {
if (t < 20) {
return (b & c) | ((~b) & d);
}
if (t < 40) {
return b ^ c ^ d;
}
if (t < 60) {
return (b & c) | (b & d) | (c & d);
}
return b ^ c ^ d;
},
sha1_kt: function(t) {
if (t < 20) {
return 1518500249;
} else {
if (t < 40) {
return 1859775393;
} else {
if (t < 60) {
return -1894007588;
} else {
return -899497514;
}
}
}
},
safe_add: function(x, y) {
var lsw, msw;
lsw = (x & 0xFFFF) + (y & 0xFFFF);
msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
},
bit_rol: function(num, cnt) {
return (num << cnt) | (num >>> (32 - cnt));
},
create_hash: function() {
var hash;
hash = this.b64_sha1((new Date()).getTime() + ":" + Math.floor(Math.random() * 9999999));
return hash.replace(/\+/g, "-").replace(/\//g, "_").replace(/\=+$/, "");
}
};
},{}],8:[function(require,module,exports){
module.exports = function(document) {
return {
getAbsUrl: function(url) {
var base_url;
if (url.match(/^.{2,5}:\/\//)) {
return url;
}
if (url[0] === "/") {
return document.location.protocol + "//" + document.location.host + url;
}
base_url = document.location.protocol + "//" + document.location.host + document.location.pathname;
if (base_url[base_url.length - 1] !== "/" && url[0] !== "#") {
return base_url + "/" + url;
}
return base_url + url;
},
replaceParam: function(param, rep, rep2) {
param = param.replace(/\{\{(.*?)\}\}/g, function(m, v) {
return rep[v] || "";
});
if (rep2) {
param = param.replace(/\{(.*?)\}/g, function(m, v) {
return rep2[v] || "";
});
}
return param;
}
};
};
},{}]},{},[4])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment