11'use strict' ;
22
3- const Useragent = require ( 'useragent ' ) ;
3+ const Useragent = require ( 'my-ua-parser ' ) ;
44
5- // Requires semver be installed
6- require ( 'useragent/features' ) ; // Enhances Useragent
5+ const internals = { } ;
76
87
9- const internals = { } ;
8+ internals . parseVersion = function ( version , index ) {
9+
10+ if ( ! version ) {
11+ return '0' ;
12+ }
13+
14+ const parts = version . split ( '.' ) ;
15+ return parts [ index ] || '0' ;
16+ } ;
17+
18+
19+ internals . parseUserAgent = function ( userAgentString ) {
20+
21+ const result = Useragent ( userAgentString || '' ) ;
22+
23+ return {
24+ family : result . browser . name || 'Other' ,
25+ major : internals . parseVersion ( result . browser . version , 0 ) ,
26+ minor : internals . parseVersion ( result . browser . version , 1 ) ,
27+ patch : internals . parseVersion ( result . browser . version , 2 ) ,
28+ source : userAgentString ,
29+ os : {
30+ family : result . os . name || 'Other' ,
31+ major : internals . parseVersion ( result . os . version , 0 ) ,
32+ minor : internals . parseVersion ( result . os . version , 1 ) ,
33+ patch : internals . parseVersion ( result . os . version , 2 )
34+ } ,
35+ device : {
36+ family : result . device . model || result . device . type || 'Other' ,
37+ brand : result . device . vendor ,
38+ model : result . device . model
39+ }
40+ } ;
41+ } ;
1042
1143
1244exports . plugin = {
@@ -18,12 +50,17 @@ exports.plugin = {
1850 register : function ( server , options ) {
1951
2052 server . ext ( 'onRequest' , internals . onRequest ) ;
53+
54+ server . decorate ( 'request' , 'userAgent' , function ( ) {
55+
56+ return this . plugins . scooter ;
57+ } ) ;
2158 }
2259} ;
2360
2461
2562internals . onRequest = function ( request , h ) {
2663
27- request . plugins . scooter = Useragent . lookup ( request . headers [ 'user-agent' ] ) ;
64+ request . plugins . scooter = internals . parseUserAgent ( request . headers [ 'user-agent' ] ) ;
2865 return h . continue ;
2966} ;
0 commit comments