Code Duplication    Length = 16-21 lines in 4 locations

src/Analytics.php 4 locations

@@ 48-64 (lines=17) @@
45
        return $this->viewId;
46
    }
47
48
    public function fetchVisitorsAndPageViews(Period $period): Collection
49
    {
50
        $response = $this->performQuery(
51
            $period,
52
            'ga:users,ga:pageviews',
53
            ['dimensions' => 'ga:date,ga:pageTitle']
54
        );
55
56
        return collect($response['rows'] ?? [])->map(function (array $dateRow) {
57
            return [
58
                'date' => Carbon::createFromFormat('Ymd', $dateRow[0]),
59
                'pageTitle' => $dateRow[1],
60
                'visitors' => (int) $dateRow[2],
61
                'pageViews' => (int) $dateRow[3],
62
            ];
63
        });
64
    }
65
66
    public function fetchTotalVisitorsAndPageViews(Period $period): Collection
67
    {
@@ 66-81 (lines=16) @@
63
        });
64
    }
65
66
    public function fetchTotalVisitorsAndPageViews(Period $period): Collection
67
    {
68
        $response = $this->performQuery(
69
            $period,
70
            'ga:users,ga:pageviews',
71
            ['dimensions' => 'ga:date']
72
        );
73
74
        return collect($response['rows'] ?? [])->map(function (array $dateRow) {
75
            return [
76
                'date' => Carbon::createFromFormat('Ymd', $dateRow[0]),
77
                'visitors' => (int) $dateRow[1],
78
                'pageViews' => (int) $dateRow[2],
79
            ];
80
        });
81
    }
82
83
    public function fetchMostVisitedPages(Period $period, int $maxResults = 20): Collection
84
    {
@@ 83-103 (lines=21) @@
80
        });
81
    }
82
83
    public function fetchMostVisitedPages(Period $period, int $maxResults = 20): Collection
84
    {
85
        $response = $this->performQuery(
86
            $period,
87
            'ga:pageviews',
88
            [
89
                'dimensions' => 'ga:pagePath,ga:pageTitle',
90
                'sort' => '-ga:pageviews',
91
                'max-results' => $maxResults,
92
            ]
93
        );
94
95
        return collect($response['rows'] ?? [])
96
            ->map(function (array $pageRow) {
97
                return [
98
                    'url' => $pageRow[0],
99
                    'pageTitle' => $pageRow[1],
100
                    'pageViews' => (int) $pageRow[2],
101
                ];
102
            });
103
    }
104
105
    public function fetchTopReferrers(Period $period, int $maxResults = 20): Collection
106
    {
@@ 105-122 (lines=18) @@
102
            });
103
    }
104
105
    public function fetchTopReferrers(Period $period, int $maxResults = 20): Collection
106
    {
107
        $response = $this->performQuery($period,
108
            'ga:pageviews',
109
            [
110
                'dimensions' => 'ga:fullReferrer',
111
                'sort' => '-ga:pageviews',
112
                'max-results' => $maxResults,
113
            ]
114
        );
115
116
        return collect($response['rows'] ?? [])->map(function (array $pageRow) {
117
            return [
118
                'url' => $pageRow[0],
119
                'pageViews' => (int) $pageRow[1],
120
            ];
121
        });
122
    }
123
124
    public function fetchUserTypes(Period $period): Collection
125
    {