diff options
author | Vincent Petry <pvince81@owncloud.com> | 2015-12-14 17:48:30 +0100 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2015-12-14 17:48:30 +0100 |
commit | 595fd9de6ed6114b57a40b28393dbd1cd706667c (patch) | |
tree | 109f26b5ca8d1a077f5fab755a3bd68516f9c39d /core/vendor/base64/base64.js | |
parent | ab9849e72f9a4ea78dcdd7ce4a87a5353aebd478 (diff) | |
download | nextcloud-server-595fd9de6ed6114b57a40b28393dbd1cd706667c.tar.gz nextcloud-server-595fd9de6ed6114b57a40b28393dbd1cd706667c.zip |
Add davidchambers/base64 JS library
Diffstat (limited to 'core/vendor/base64/base64.js')
-rw-r--r-- | core/vendor/base64/base64.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/core/vendor/base64/base64.js b/core/vendor/base64/base64.js new file mode 100644 index 00000000000..b82dded62c2 --- /dev/null +++ b/core/vendor/base64/base64.js @@ -0,0 +1,61 @@ +;(function () { + + var object = typeof exports != 'undefined' ? exports : this; // #8: web workers + var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + + function InvalidCharacterError(message) { + this.message = message; + } + InvalidCharacterError.prototype = new Error; + InvalidCharacterError.prototype.name = 'InvalidCharacterError'; + + // encoder + // [https://gist.github.com/999166] by [https://github.com/nignag] + object.btoa || ( + object.btoa = function (input) { + var str = String(input); + for ( + // initialize result and counter + var block, charCode, idx = 0, map = chars, output = ''; + // if the next str index does not exist: + // change the mapping table to "=" + // check if d has no fractional digits + str.charAt(idx | 0) || (map = '=', idx % 1); + // "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8 + output += map.charAt(63 & block >> 8 - idx % 1 * 8) + ) { + charCode = str.charCodeAt(idx += 3/4); + if (charCode > 0xFF) { + throw new InvalidCharacterError("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range."); + } + block = block << 8 | charCode; + } + return output; + }); + + // decoder + // [https://gist.github.com/1020396] by [https://github.com/atk] + object.atob || ( + object.atob = function (input) { + var str = String(input).replace(/=+$/, ''); + if (str.length % 4 == 1) { + throw new InvalidCharacterError("'atob' failed: The string to be decoded is not correctly encoded."); + } + for ( + // initialize result and counters + var bc = 0, bs, buffer, idx = 0, output = ''; + // get next character + buffer = str.charAt(idx++); + // character found in table? initialize bit storage and add its ascii value; + ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, + // and if not first of each 4 characters, + // convert the first 8 bits to one ascii character + bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0 + ) { + // try to find character in table (0-63, not found => -1) + buffer = chars.indexOf(buffer); + } + return output; + }); + +}()); |