Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
alexanderdean committed Jun 27, 2014
2 parents c1290b9 + 869f8ec commit 49fd822
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 7 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
Version 1.0.3 (2014-06-27)
--------------------------
Changed Base64 encoding function to prevent character encoding errors, thanks @shermozle! (#231)

Version 1.0.2 (2014-06-24)
--------------------------
Added guard to prevent document size field from being set as "NaNxNaN" (#220)
Expand Down
3 changes: 1 addition & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "snowplow-tracker",
"version": "1.0.2",
"version": "1.0.3",
"devDependencies": {
"grunt": "~0.4.2",
"intern": "~1.4.0",
Expand All @@ -14,7 +14,6 @@
"grunt-browserify": "~1.3.0",
"jstimezonedetect": "~1.0.5",
"JSON": "~1.0.0",
"Base64": "~0.2.0",
"sha1": "git://github.com/pvorb/node-sha1.git#v1.0.0",
"grunt-lodash": "~0.3.0"
},
Expand Down
82 changes: 82 additions & 0 deletions src/js/lib/base64.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
/*
* Copyright (c) 2013 Kevin van Zonneveld (http://kvz.io)
* and Contributors (http://phpjs.org/authors)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
* of the Software, and to permit persons to whom the Software is furnished to do
* so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/

(function() {

var object = typeof exports !== 'undefined' ? exports : this; // For eventual node.js environment support

function base64_encode(data) {
// discuss at: http://phpjs.org/functions/base64_encode/
// original by: Tyler Akins (http://rumkin.com)
// improved by: Bayron Guevara
// improved by: Thunder.m
// improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// improved by: Rafał Kukawski (http://kukawski.pl)
// bugfixed by: Pellentesque Malesuada
// example 1: base64_encode('Kevin van Zonneveld');
// returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='
// example 2: base64_encode('a');
// returns 2: 'YQ=='
// example 3: base64_encode('✓ à la mode');
// returns 3: '4pyTIMOgIGxhIG1vZGU='

var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
ac = 0,
enc = '',
tmp_arr = [];

if (!data) {
return data;
}

data = unescape(encodeURIComponent(data));

do {
// pack three octets into four hexets
o1 = data.charCodeAt(i++);
o2 = data.charCodeAt(i++);
o3 = data.charCodeAt(i++);

bits = o1 << 16 | o2 << 8 | o3;

h1 = bits >> 18 & 0x3f;
h2 = bits >> 12 & 0x3f;
h3 = bits >> 6 & 0x3f;
h4 = bits & 0x3f;

// use hexets to index into b64, and append result to encoded string
tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
} while (i < data.length);

enc = tmp_arr.join('');

var r = data.length % 3;

return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);
}

object.base64encode = base64_encode;

}());
6 changes: 2 additions & 4 deletions src/js/payload.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,7 @@
var
lodash = require('./lib/lodash'),
json2 = require('JSON'),
Base64 = require('Base64'),
base64encode = Base64.btoa,
base64decode = Base64.atob,
base64 = require('./lib/base64'),

object = typeof exports !== 'undefined' ? exports : this; // For eventual node.js environment support

Expand All @@ -51,7 +49,7 @@
function base64urlencode(data) {
if (!data) return data;

var enc = base64encode(data);
var enc = base64.base64encode(data);
return enc.replace(/=/g, '')
.replace(/\+/g, '-')
.replace(/\//g, '_');
Expand Down
2 changes: 1 addition & 1 deletion src/js/snowplow.js
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@
windowAlias = window,

/* Tracker identifier with version */
version = 'js-1.0.2', // Update banner.js too
version = 'js-1.0.3',

/* Contains three variables that are shared with tracker.js and must be passed by reference */
mutSnowplowState = {
Expand Down

0 comments on commit 49fd822

Please sign in to comment.