diff --git a/src/sniff.js b/src/sniff.js deleted file mode 100644 index 2a3b6c8..0000000 --- a/src/sniff.js +++ /dev/null @@ -1,159 +0,0 @@ -/** - * Sniff-js v0.1 - * Small script to extract detailed system data based on user-agent string - * http://github.com/faisalman/sniff-js - * - * Copyright © 2012 Faisalman - * Licensed under GPL2 http://www.gnu.org/licenses/gpl-2.0.html - */ - -function sniff(){ - - // regexp mapper - var regxMap = function(ua){ - var i, j; - for(j = 1; j < arguments.length; j += 2){ - var rx = arguments[j], - asc = arguments[j+1], - k, l, m, n, o, p; - for(l = 0; l < rx.length; l++){ - m = rx[l].exec(ua); - //console.log(m); - if(!!m){ - k = {}; - o = 1; - for(n = 0; n < asc.length; n++){ - if(typeof asc[n] === 'object' && asc[n].length === 2){ - k[asc[n][0]] = asc[n][1]; - o -= 1; - } else if(typeof asc[n] === 'object' && asc[n].length === 3){ - k[asc[n][0]] = (!!m[n+o]) ? m[n+o].replace(asc[n][1], asc[n][2]) : 'unknown'; - } else { - k[asc[n]] = (!!m[n+o]) ? m[n+o] : 'unknown'; - } - }; - i = k; - p = true; - break; - } - }; - if(!p){ - k = {}; - for(l in asc){ - if(asc.hasOwnProperty(l)){ - k[asc[l]] = 'unknown'; - } - }; - i = k; - } - if(p) break; - }; - return i; - }; - - var winMap = function(){ - switch(arguments[1]){ - case 'nt 5.0': - return '2000'; - case 'nt 5.1': - case 'nt 5.2': - return 'XP'; - case 'nt 6.0': - return 'Vista'; - case 'nt 6.1': - return '7'; - case 'nt 6.2': - return '8'; - default: - return arguments[1]; - }; - }; - - this.ua = window.navigator.userAgent; - - this.getBrowser = function(){ - - return regxMap(this.ua, [ - - // Mixed - /(kindle)\/((\d+)?[\w\.]+)/i, // Kindle - /(lunascape|maxthon|netfront|jasmine)[\/\s]?((\d+)?[\w\.]+)/i, // Lunascape/Maxthon/Netfront/Jasmine - - // Presto based - /(opera\smini)\/((\d+)?[\w\.-]+)/i, // Opera Mini - /(opera\smobi)\/((\d+)?[\w\.-]+)/i, // Opera Mobile - /(opera).*\/((\d+)?[\w\.]+)/i, // Opera - - // Trident based - /(avant\sbrowser|iemobile)[\/\s]?((\d+)?[\w\.]+)/i, // Avant/IEMobile - /ms(ie)\s((\d+)?[\w\.]+)/i, // Internet Explorer - - // Webkit/KHTML based - /(chromium|flock|rockmelt|midori|epiphany)\/((\d+)?[\w\.]+)/i, // Chromium/Flock/RockMelt/Midori/Epiphany - /(chrome|omniweb|arora|dolfin)\/((\d+)?[\w\.]+)/i, // Chrome/OmniWeb/Arora/Dolphin - /(mobile\ssafari|safari|konqueror)\/((\d+)?[\w\.]+)/i, // Safari/Konqueror - /(applewebkit|khtml)\/((\d+)?[\w\.]+)/i, - - // Gecko based - /(iceweasel|camino|fennec|maemo|minimo)[\/\s]?((\d+)?[\w\.\+]+)/i, // Iceweasel/Camino/Fennec/Maemo/Minimo - /(firefox|seamonkey|netscape|navigator)\/((\d+)?[\w\.]+)/i, // Firefox/SeaMonkey/Netscape - /(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i, // Mozilla - - // Other - /(lynx)\/?((\d+)?[\w\.]+)/i, // Lynx - ], ['name', 'release', 'version']); - }; - - this.getEngine = function(){ - - return regxMap(this.ua, [ - - /(presto|[aple]*webkit|trident)\/([\w\.]+)/i, // Presto/Webkit/Trident - /(khtml)\/([\w\.]+)/i // KHTML - ], ['name', 'version'], [ - - /rv\:([\w\.]+).*(gecko)/i // Gecko - ], ['version', 'name']); - }; - - this.getOS = function(){ - - return regxMap(this.ua, [ - - // Windows based - /(windows)\s?([\w\.\s]+)*/i, // Windows - ], ['name', ['version', /(nt\s[\d\.]+)/gi, this.winMap]], [ - - // Mobile/Embedded OS - /(blackberry).+version\/([\w\.]+)/i, // Blackberry - /(android|symbianos|symbos|webos|palm\os|qnx)[\/\s]?([\w\.]+)*/i, // Android/Symbian/WebOS/Palm/QNX - /(nintendo)\s([wids]+)/i, // Nintendo Wii/DS - - // GNU/Linux based - /(mint)[\s\(]?(\w+)*/i, // Mint - /(joli|ubuntu|debian|suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat)[\/\s]?([\w\.-]+)*/i, - // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware - // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat - /(gnu|linux)\s?([\w\.]+)*/i // Other GNU/Linux - ], ['name', 'version'], [ - - /cros\s([\w\.\s]+)/i // Chromium OS - ], [['name', 'Chromium OS'], 'version'],[ - - /sunos\s?([\w\.\s]+)*/i // Solaris - ], [['name', 'Solaris'], 'version'], [ - - // BSD based - /\s(\w*bsd|dragonfly)\s?([\w\.]+)*/i, // FreeBSD/NetBSD/OpenBSD/DragonFly - ], ['name', 'version'],[ - - /(ip[honead]+).*os\s*([\w]+)*\slike\smac/i // iOS - ], [['name', /.+/g, 'iOS'], ['version', /_/g, '.']], [ - - /(mac)\s([\w\s\.]+)/i, // Mac - - // Other - /(unix|minix)[\/\s]?()*/i - ], ['name', 'version']); - }; -}; diff --git a/src/ua-parser.js b/ua-parser.js similarity index 100% rename from src/ua-parser.js rename to ua-parser.js