GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Passed
Push — master ( ea1cd4...3d413f )
by Trevor
01:49
created

AnalyticsVideo::get()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 15
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 8
dl 0
loc 15
rs 10
c 0
b 0
f 0
cc 3
nc 4
nop 2
1
<?php
2
3
4
namespace ApiVideo\Client\Api;
5
6
use ApiVideo\Client\Model\Analytic\AnalyticData;
7
use ApiVideo\Client\Model\Analytic\AnalyticEvent;
8
use ApiVideo\Client\Model\Analytic\AnalyticVideo;
9
10
class AnalyticsVideo extends BaseApi
11
{
12
    /**
13
     * @param $videoId
14
     * @param string|null $period
15
     * @return AnalyticVideo|null
16
     */
17
    public function get($videoId, $period = null)
18
    {
19
        $parameters = '';
20
        if (null !== $period) {
21
            $parameters = "?period=$period";
22
        }
23
24
        $response = $this->browser->get("/analytics/videos/$videoId".$parameters);
25
        if (!$response->isSuccessful()) {
26
            $this->registerLastError($response);
27
28
            return null;
29
        }
30
31
        return $this->unmarshal($response);
32
    }
33
34
    /**
35
     * @param array $parameters
36
     * @return AnalyticVideo[]|null
37
     */
38
    public function search(array $parameters = array())
39
    {
40
        $params             = $parameters;
41
        $currentPage        = isset($parameters['currentPage']) ? $parameters['currentPage'] : 1;
42
        $params['pageSize'] = isset($parameters['pageSize']) ? $parameters['pageSize'] : 100;
43
        $allAnalytics       = array();
44
45
        do {
46
            $params['currentPage'] = $currentPage;
47
            $response              = $this->browser->get('/analytics/videos?'.http_build_query($parameters));
48
49
            if (!$response->isSuccessful()) {
50
                $this->registerLastError($response);
51
52
                return null;
53
            }
54
55
            $json           = json_decode($response->getContent(), true);
56
            $analytics      = $json['data'];
57
            $allAnalytics[] = $this->castAll($analytics);
58
59
            if (isset($parameters['currentPage'])) {
60
                break;
61
            }
62
63
            $pagination = $json['pagination'];
64
            $pagination['currentPage']++;
65
        } while ($pagination['pagesTotal'] > $pagination['currentPage']);
66
67
        $allAnalytics = call_user_func_array('array_merge', $allAnalytics);
68
69
        return $allAnalytics;
70
    }
71
72
    /**
73
     * @param array $data
74
     * @return AnalyticVideo
75
     */
76
    protected function cast(array $data)
77
    {
78
        $analytic             = new AnalyticVideo();
79
        $analytic->videoId    = $data['video']['video_id'];
80
        $analytic->videoTitle = $data['video']['title'];
81
        $analytic->period     = $data['period'];
82
        // Build Analytic Data
83
        foreach ($data['data'] as $playerSession) {
84
            $analyticData = new AnalyticData();
85
86
            // Build Analytic Session
87
            $analyticData->session->sessionId = $playerSession['session']['session_id'];
88
            $analyticData->session->loadedAt  = new \DateTime($playerSession['session']['loaded_at']);
89
            $analyticData->session->endedAt   = new \DateTime($playerSession['session']['ended_at']);
90
91
            // Build Analytic Location
92
            $analyticData->location->country = $playerSession['location']['country'];
93
            $analyticData->location->city    = $playerSession['location']['city'];
94
95
            // Build Analytic Referrer
96
            $analyticData->referrer->url         = $playerSession['referrer']['url'];
97
            $analyticData->referrer->medium      = $playerSession['referrer']['medium'];
98
            $analyticData->referrer->source      = $playerSession['referrer']['source'];
99
            $analyticData->referrer->search_term = $playerSession['referrer']['search_term'];
100
101
            // Build Analytic Device
102
            $analyticData->device->type   = $playerSession['device']['type'];
103
            $analyticData->device->vendor = $playerSession['device']['vendor'];
104
            $analyticData->device->model  = $playerSession['device']['model'];
105
106
            // Build Analytic Os
107
            $analyticData->os->name      = $playerSession['os']['name'];
108
            $analyticData->os->shortname = $playerSession['os']['shortname'];
109
            $analyticData->os->version   = $playerSession['os']['version'];
110
111
            // Build Analytic Client
112
            $analyticData->client->type    = $playerSession['client']['type'];
113
            $analyticData->client->name    = $playerSession['client']['name'];
114
            $analyticData->client->version = $playerSession['client']['version'];
115
116
            // Build Analytic Events
117
            $analyticData->events = $this->buildAnalyticEventsData($playerSession['events']);
118
119
            $analytic->data[] = $analyticData;
120
        }
121
122
        return $analytic;
123
    }
124
125
    private function buildAnalyticEventsData(array $events)
126
    {
127
        $eventsBuilded = array();
128
129
        foreach ($events as $event) {
130
            $analyticEvent            = new AnalyticEvent();
131
            $analyticEvent->type      = $event['type'];
132
            $analyticEvent->emittedAt = new \DateTime($event['emitted_at']);
133
            $analyticEvent->at        = isset($event['at']) ? $event['at'] : null;
134
            $analyticEvent->from      = isset($event['from']) ? $event['from'] : null;
135
            $analyticEvent->to        = isset($event['to']) ? $event['to'] : null;
136
137
            $eventsBuilded[] = $analyticEvent;
138
        }
139
140
        return $eventsBuilded;
141
    }
142
143
}
144