| @@ 20-37 (lines=18) @@ | ||
| 17 | } |
|
| 18 | }; |
|
| 19 | ||
| 20 | const browserFromUserAgent = (userAgent) => { |
|
| 21 | const lowerUserAgent = userAgent.toLowerCase(); |
|
| 22 | ||
| 23 | switch (true) { |
|
| 24 | case lowerUserAgent.indexOf('opera') >= 0 || lowerUserAgent.indexOf('opr') >= 0: |
|
| 25 | return 'Opera'; |
|
| 26 | case lowerUserAgent.indexOf('firefox') >= 0: |
|
| 27 | return 'Firefox'; |
|
| 28 | case lowerUserAgent.indexOf('chrome') >= 0: |
|
| 29 | return 'Chrome'; |
|
| 30 | case lowerUserAgent.indexOf('safari') >= 0: |
|
| 31 | return 'Safari'; |
|
| 32 | case lowerUserAgent.indexOf('msie') >= 0: |
|
| 33 | return 'Internet Explorer'; |
|
| 34 | default: |
|
| 35 | return 'Others'; |
|
| 36 | } |
|
| 37 | }; |
|
| 38 | ||
| 39 | const extractDomain = (url) => { |
|
| 40 | const domain = url.indexOf('://') > -1 ? url.split('/')[2] : url.split('/')[0]; |
|
| @@ 3-18 (lines=16) @@ | ||
| 1 | import { isNil, isEmpty, memoizeWith, prop } from 'ramda'; |
|
| 2 | ||
| 3 | const osFromUserAgent = (userAgent) => { |
|
| 4 | const lowerUserAgent = userAgent.toLowerCase(); |
|
| 5 | ||
| 6 | switch (true) { |
|
| 7 | case lowerUserAgent.indexOf('linux') >= 0: |
|
| 8 | return 'Linux'; |
|
| 9 | case lowerUserAgent.indexOf('windows') >= 0: |
|
| 10 | return 'Windows'; |
|
| 11 | case lowerUserAgent.indexOf('mac') >= 0: |
|
| 12 | return 'MacOS'; |
|
| 13 | case lowerUserAgent.indexOf('mobi') >= 0: |
|
| 14 | return 'Mobile'; |
|
| 15 | default: |
|
| 16 | return 'Others'; |
|
| 17 | } |
|
| 18 | }; |
|
| 19 | ||
| 20 | const browserFromUserAgent = (userAgent) => { |
|
| 21 | const lowerUserAgent = userAgent.toLowerCase(); |
|