summaryrefslogtreecommitdiffstats
path: root/core/vendor/base64/base64.js
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2015-12-14 17:48:30 +0100
committerVincent Petry <pvince81@owncloud.com>2015-12-14 17:48:30 +0100
commit595fd9de6ed6114b57a40b28393dbd1cd706667c (patch)
tree109f26b5ca8d1a077f5fab755a3bd68516f9c39d /core/vendor/base64/base64.js
parentab9849e72f9a4ea78dcdd7ce4a87a5353aebd478 (diff)
downloadnextcloud-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.js61
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;
+ });
+
+}());