express-useragent
Advanced tools
Comparing version 0.0.12 to 0.1.0
@@ -21,3 +21,3 @@ /** | ||
Chrome: /chrome\/([\d\w\.\-]+)/i, | ||
Chromium: /crios\/([\d\w\.\-]+)/i, | ||
Chromium: /crios\/([\d\w\.\-]+)/i, | ||
Safari: /version\/([\d\w\.\-]+)/i, | ||
@@ -40,3 +40,3 @@ Opera: /version\/([\d\w\.\-]+)/i, | ||
Flock: /flock/i, | ||
OmniWeb:/omniweb/i, | ||
OmniWeb: /omniweb/i, | ||
Chromium: /(chromium)|(crios)/i, | ||
@@ -65,2 +65,3 @@ Chrome: /chrome/i, | ||
Linux: /linux/i, | ||
Linux64: /linux x86\_64/i, | ||
Wii: /wii/i, | ||
@@ -91,38 +92,39 @@ PS3: /playstation 3/i, | ||
this.DefaultAgent = { | ||
isMobile : false, | ||
isiPad : false, | ||
isiPod : false, | ||
isiPhone : false, | ||
isAndroid : false, | ||
isBlackberry : false, | ||
isOpera : false, | ||
isIE : false, | ||
isIECompatibilityMode : false, | ||
isSafari : false, | ||
isFirefox : false, | ||
isWebkit : false, | ||
isChrome : false, | ||
isKonqueror : false, | ||
isOmniWeb : false, | ||
isSeaMonkey : false, | ||
isFlock : false, | ||
isAmaya : false, | ||
isEpiphany : false, | ||
isDesktop : false, | ||
isWindows : false, | ||
isLinux : false, | ||
isMac : false, | ||
isBada : false, | ||
isSamsung : false, | ||
isRaspberry : false, | ||
isBot : false, | ||
isCurl : false, | ||
isAndroidTablet : false, | ||
isMobile: false, | ||
isiPad: false, | ||
isiPod: false, | ||
isiPhone: false, | ||
isAndroid: false, | ||
isBlackberry: false, | ||
isOpera: false, | ||
isIE: false, | ||
isIECompatibilityMode: false, | ||
isSafari: false, | ||
isFirefox: false, | ||
isWebkit: false, | ||
isChrome: false, | ||
isKonqueror: false, | ||
isOmniWeb: false, | ||
isSeaMonkey: false, | ||
isFlock: false, | ||
isAmaya: false, | ||
isEpiphany: false, | ||
isDesktop: false, | ||
isWindows: false, | ||
isLinux: false, | ||
isLinux64: false, | ||
isMac: false, | ||
isBada: false, | ||
isSamsung: false, | ||
isRaspberry: false, | ||
isBot: false, | ||
isCurl: false, | ||
isAndroidTablet: false, | ||
isWinJs: false, | ||
Browser : 'unknown', | ||
Version : 'unknown', | ||
OS : 'unknown', | ||
Platform : 'unknown', | ||
GeoIP : {}, | ||
source:'' | ||
Browser: 'unknown', | ||
Version: 'unknown', | ||
OS: 'unknown', | ||
Platform: 'unknown', | ||
GeoIP: {}, | ||
source: '' | ||
}; | ||
@@ -188,3 +190,3 @@ | ||
break; | ||
case 'Chromium': | ||
case 'Chromium': | ||
if (this._Versions.Chromium.test(string)) { | ||
@@ -210,3 +212,3 @@ return RegExp.$1; | ||
case 'WinJs': | ||
if (this._Versions.WinJs.test(string)){ | ||
if (this._Versions.WinJs.test(string)) { | ||
return RegExp.$1; | ||
@@ -217,3 +219,3 @@ } | ||
if (this._Versions.IE.test(string)) { | ||
return RegExp.$2? RegExp.$2:RegExp.$1; | ||
return RegExp.$2 ? RegExp.$2 : RegExp.$1; | ||
} | ||
@@ -277,3 +279,3 @@ break; | ||
this.Agent.isWindows = true; | ||
return 'Windows 8.1'; | ||
return 'Windows 8.1'; | ||
case this._OS.Windows2003.test(string): | ||
@@ -290,2 +292,6 @@ this.Agent.isWindows = true; | ||
return 'Windows Phone 8'; | ||
case this._OS.Linux64.test(string): | ||
this.Agent.isLinux = true; | ||
this.Agent.isLinux64 = true; | ||
return 'Linux 64'; | ||
case this._OS.Linux.test(string): | ||
@@ -361,10 +367,10 @@ this.Agent.isLinux = true; | ||
}; | ||
this.testCompatibilityMode = function() { | ||
var ua = this; | ||
if(this.Agent.isIE){ | ||
if(/Trident\/(\d)\.0/i.test(ua.Agent.source)){ | ||
var tridentVersion = parseInt(RegExp.$1,10); | ||
var version = parseInt(ua.Agent.Version,10); | ||
if(version === 7 && tridentVersion === 6){ | ||
var ua = this; | ||
if (this.Agent.isIE) { | ||
if (/Trident\/(\d)\.0/i.test(ua.Agent.source)) { | ||
var tridentVersion = parseInt(RegExp.$1, 10); | ||
var version = parseInt(ua.Agent.Version, 10); | ||
if (version === 7 && tridentVersion === 6) { | ||
ua.Agent.isIECompatibilityMode = true; | ||
@@ -374,9 +380,9 @@ ua.Agent.Version = 10.0; | ||
if(version === 7 && tridentVersion === 5){ | ||
if (version === 7 && tridentVersion === 5) { | ||
ua.Agent.isIECompatibilityMode = true; | ||
ua.Agent.Version = 9.0; | ||
} | ||
if(version === 7 && tridentVersion === 4){ | ||
ua.Agent.isIECompatibilityMode = true; | ||
} | ||
if (version === 7 && tridentVersion === 4) { | ||
ua.Agent.isIECompatibilityMode = true; | ||
ua.Agent.Version = 8.0; | ||
@@ -390,3 +396,3 @@ } | ||
var ua = this; | ||
for( var key in ua.DefaultAgent) { | ||
for (var key in ua.DefaultAgent) { | ||
ua.Agent[key] = ua.DefaultAgent[key]; | ||
@@ -425,3 +431,3 @@ } | ||
} | ||
if(/mobile/i.test(ua.Agent.source)) { | ||
if (/mobile/i.test(ua.Agent.source)) { | ||
ua.Agent.isMobile = true; | ||
@@ -434,6 +440,6 @@ ua.Agent.isDesktop = false; | ||
var ua = this; | ||
Object.keys(headers).forEach(function(key){ | ||
if(/^GEOIP/i.test(key)) { | ||
ua.Agent.GeoIP[key] = headers[key]; | ||
} | ||
Object.keys(headers).forEach(function(key) { | ||
if (/^GEOIP/i.test(key)) { | ||
ua.Agent.GeoIP[key] = headers[key]; | ||
} | ||
}); | ||
@@ -444,4 +450,4 @@ }; | ||
var ua = this; | ||
if(/googlebot|gurujibot|yandexbot|slurp|msnbot|bingbot|facebookexternalhit/i.test(ua.Agent.source)) { | ||
ua.Agent.isBot = true; | ||
if (/googlebot|gurujibot|yandexbot|slurp|msnbot|bingbot|facebookexternalhit/i.test(ua.Agent.source)) { | ||
ua.Agent.isBot = true; | ||
} | ||
@@ -452,3 +458,3 @@ }; | ||
var ua = this; | ||
if(ua.Agent.isAndroid && !/mobile/i.test(ua.Agent.source)) { | ||
if (ua.Agent.isAndroid && !/mobile/i.test(ua.Agent.source)) { | ||
ua.Agent.isAndroidTablet = true; | ||
@@ -475,4 +481,6 @@ } | ||
var source = req.headers['user-agent'] || '', | ||
ua = new UserAgent(); | ||
if(typeof source == 'undefined') { source = "unknown"; } | ||
ua = new UserAgent(); | ||
if (typeof source === 'undefined') { | ||
source = "unknown"; | ||
} | ||
ua.Agent.source = source.replace(/^\s*/, '').replace(/\s*$/, ''); | ||
@@ -489,5 +497,9 @@ ua.Agent.OS = ua.getOS(ua.Agent.source); | ||
req.useragent = ua.Agent; | ||
res.locals({"useragent" : ua.Agent}); | ||
if ('function' === typeof res.locals) { | ||
res.locals({useragent: ua.Agent}); | ||
} else { | ||
res.locals.useragent = ua.Agent; | ||
} | ||
next(); | ||
} | ||
}; | ||
}; | ||
@@ -494,0 +506,0 @@ |
{ | ||
"name": "express-useragent", | ||
"description": "ExpressJS/Connect/TrinteJS user-agent middleware exposing", | ||
"version": "0.0.12", | ||
"version": "0.1.0", | ||
"homepage": "https://github.com/biggora/express-useragent/", | ||
@@ -56,9 +56,9 @@ "repository": { | ||
"engines": { | ||
"node": ">=0.5" | ||
"node": ">=0.6" | ||
}, | ||
"dependencies": {}, | ||
"devDependencies": { | ||
"connect": ">= 1.7.1 < 2.0.0", | ||
"express": ">= 2.5.0 < 3.0.0", | ||
"nodeunit": ">=0.5.4" | ||
"connect": ">= 2.5.0", | ||
"express": ">= 3.0.0", | ||
"nodeunit": ">= 0.5.4" | ||
}, | ||
@@ -65,0 +65,0 @@ "scripts": { |
@@ -67,2 +67,31 @@ /** | ||
exports['Linux 64 Chrome'] = function(test) { | ||
var s = 'User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36'; | ||
var a = ua.parse(s); | ||
test.ok(!a.isMobile, 'Mobile'); | ||
test.ok(!a.isiPad, 'iPad'); | ||
test.ok(!a.isiPod, 'iPod'); | ||
test.ok(!a.isiPhone, 'iPhone'); | ||
test.ok(!a.isAndroid, 'Android'); | ||
test.ok(!a.isBlackberry, 'Blackberry'); | ||
test.ok(!a.isOpera, 'Opera'); | ||
test.ok(!a.isIE, 'IE'); | ||
test.ok(!a.isSafari, 'Safari'); | ||
test.ok(!a.isFirefox, 'Firefox'); | ||
test.ok(!a.isWebkit, 'Webkit'); | ||
test.ok(a.isChrome, 'Chrome'); | ||
test.ok(!a.isKonqueror, 'Konqueror'); | ||
test.ok(a.isDesktop, 'Desktop'); | ||
test.ok(!a.isWindows, 'Windows'); | ||
test.ok(a.isLinux, 'Linux'); | ||
test.ok(a.isLinux64, 'Linux 64'); | ||
test.ok(!a.isMac, 'Mac'); | ||
test.ok(!a.isWindowsPhone, 'Windows Phone'); | ||
test.done(); | ||
}; | ||
exports['Linux Firefox 11'] = function(test) { | ||
@@ -90,2 +119,3 @@ | ||
test.ok(a.isLinux, 'Linux'); | ||
test.ok(!a.isLinux64, 'Linux 64'); | ||
test.ok(!a.isMac, 'Mac'); | ||
@@ -92,0 +122,0 @@ test.ok(!a.isWindowsPhone, 'Windows Phone'); |
62127
1492