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

AnalyticsLive::buildAnalyticEventsData()   A

Complexity

Conditions 5
Paths 9

Size

Total Lines 16
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 10
dl 0
loc 16
rs 9.6111
c 0
b 0
f 0
cc 5
nc 9
nop 1
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\AnalyticLive;
9
10
class AnalyticsLive extends BaseApi
11
{
12
    /**
13
     * @param $liveStreamId
14
     * @param string|null $period
15
     * @return AnalyticLive|null
16
     */
17
    public function get($liveStreamId, $period = null)
18
    {
19
        $parameters = '';
20
        if (null !== $period) {
21
            $parameters = "?period=$period";
22
        }
23
24
        $response = $this->browser->get("/analytics/live-streams/$liveStreamId".$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 AnalyticLive[]|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/live-streams?'.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 AnalyticLive
75
     */
76
    protected function cast(array $data)
77
    {
78
        $analytic             = new AnalyticLive();
79
        $analytic->liveStreamId    = $data['live']['live_stream_id'];
80
        $analytic->liveName = $data['live']['name'];
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