Completed
Pull Request — master (#247)
by Alejandro
08:42
created

src/utils/helpers/visits.js   A

Complexity

Total Complexity 6
Complexity/F 3

Size

Lines of Code 37
Function Count 2

Duplication

Duplicated Lines 0
Ratio 0 %

Test Coverage

Coverage 91.67%

Importance

Changes 0
Metric Value
wmc 6
eloc 25
mnd 4
bc 4
fnc 2
dl 0
loc 37
ccs 11
cts 12
cp 0.9167
rs 10
bpm 2
cpm 3
noi 0
c 0
b 0
f 0
1
import bowser from 'bowser';
2
import { hasValue } from '../utils';
3
4 1
const DEFAULT = 'Others';
5 1
const BROWSERS_WHITELIST = [
6
  'Android Browser',
7
  'Chrome',
8
  'Chromium',
9
  'Firefox',
10
  'Internet Explorer',
11
  'Microsoft Edge',
12
  'Opera',
13
  'Safari',
14
  'Samsung Internet for Android',
15
  'Vivaldi',
16
  'WeChat',
17
];
18
19 1
export const parseUserAgent = (userAgent) => {
20 10
  if (!hasValue(userAgent)) {
21
    return { browser: DEFAULT, os: DEFAULT };
22
  }
23
24 10
  const { browser: { name: browser }, os: { name: os } } = bowser.parse(userAgent);
25
26 10
  return { os: os || DEFAULT, browser: browser && BROWSERS_WHITELIST.includes(browser) ? browser : DEFAULT };
27
};
28
29 1
export const extractDomain = (url) => {
30 10
  if (!hasValue(url)) {
31 4
    return 'Direct';
32
  }
33
34 6
  const domain = url.includes('://') ? url.split('/')[2] : url.split('/')[0];
35
36 6
  return domain.split(':')[0];
37
};
38