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 ( 8954c8...99655a )
by Trevor
01:33
created

src/Api/AnalyticsVideo.php (2 issues)

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
use DateTime;
10
use Exception;
11
12
class AnalyticsVideo extends BaseApi
13
{
14
    /**
15
     * @param $videoId
16
     * @param string|null $period
17
     * @return AnalyticVideo|null
18
     */
19
    public function get($videoId, $period = null, array $metadata = null)
20
    {
21
        $parameters = array();
22
        if (null !== $period) {
23
            $parameters['period'] = $period;
24
        }
25
26
27
        if(null !== $metadata){
28
            if(!is_array($metadata)){
0 ignored issues
show
The condition is_array($metadata) is always true.
Loading history...
29
                throw new \InvalidArgumentException('Metadata argument must be an array');
30
            }
31
32
            $parameters['metadata'] = $metadata;
33
        }
34
35
        $response = $this->browser->get("/analytics/videos/$videoId?".http_build_query($parameters));
36
        if (!$response->isSuccessful()) {
37
            $this->registerLastError($response);
38
39
            return null;
40
        }
41
42
        return $this->unmarshal($response);
43
    }
44
45
    /**
46
     * @param array $parameters
47
     * @return AnalyticVideo[]|null
48
     */
49
    public function search(array $parameters = array())
50
    {
51
        $params             = $parameters;
52
        $currentPage        = isset($parameters['currentPage']) ? $parameters['currentPage'] : 1;
53
        $params['pageSize'] = isset($parameters['pageSize']) ? $parameters['pageSize'] : 100;
54
        $allAnalytics       = array();
55
56
        do {
57
            $params['currentPage'] = $currentPage;
58
59
            var_dump("/analytics/videos?".http_build_query($parameters));
0 ignored issues
show
Security Debugging Code introduced by
var_dump('/analytics/vid...ild_query($parameters)) looks like debug code. Are you sure you do not want to remove it?
Loading history...
60
            $response              = $this->browser->get('/analytics/videos?'.http_build_query($parameters));
61
62
            if (!$response->isSuccessful()) {
63
                $this->registerLastError($response);
64
65
                return null;
66
            }
67
68
            $json           = json_decode($response->getContent(), true);
69
            $analytics      = $json['data'];
70
            $allAnalytics[] = $this->castAll($analytics);
71
72
            if (isset($parameters['currentPage'])) {
73
                break;
74
            }
75
76
            $pagination = $json['pagination'];
77
            $pagination['currentPage']++;
78
        } while ($pagination['pagesTotal'] > $pagination['currentPage']);
79
80
        $allAnalytics = call_user_func_array('array_merge', $allAnalytics);
81
82
        return $allAnalytics;
83
    }
84
85
    /**
86
     * @param array $data
87
     * @return AnalyticVideo
88
     * @throws Exception
89
     */
90
    protected function cast(array $data)
91
    {
92
        $analytic             = new AnalyticVideo();
93
        $analytic->videoId    = $data['video']['video_id'];
94
        $analytic->videoTitle = $data['video']['title'];
95
        $analytic->metadata   = $data['video']['metadata'];
96
        $analytic->period     = $data['period'];
97
        // Build Analytic Data
98
        foreach ($data['data'] as $playerSession) {
99
            $analyticData = new AnalyticData();
100
101
            // Build Analytic Session
102
            $analyticData->session->sessionId = $playerSession['session']['session_id'];
103
            $analyticData->session->loadedAt  = new DateTime($playerSession['session']['loaded_at']);
104
            $analyticData->session->endedAt   = new DateTime($playerSession['session']['ended_at']);
105
            if(isset($playerSession['session']['metadatas'])){
106
                $analyticData->session->metadata = $playerSession['session']['metadatas'];
107
            }
108
109
            // Build Analytic Location
110
            $analyticData->location->country = $playerSession['location']['country'];
111
            $analyticData->location->city    = $playerSession['location']['city'];
112
113
            // Build Analytic Referrer
114
            $analyticData->referrer->url         = $playerSession['referrer']['url'];
115
            $analyticData->referrer->medium      = $playerSession['referrer']['medium'];
116
            $analyticData->referrer->source      = $playerSession['referrer']['source'];
117
            $analyticData->referrer->search_term = $playerSession['referrer']['search_term'];
118
119
            // Build Analytic Device
120
            $analyticData->device->type   = $playerSession['device']['type'];
121
            $analyticData->device->vendor = $playerSession['device']['vendor'];
122
            $analyticData->device->model  = $playerSession['device']['model'];
123
124
            // Build Analytic Os
125
            $analyticData->os->name      = $playerSession['os']['name'];
126
            $analyticData->os->shortname = $playerSession['os']['shortname'];
127
            $analyticData->os->version   = $playerSession['os']['version'];
128
129
            // Build Analytic Client
130
            $analyticData->client->type    = $playerSession['client']['type'];
131
            $analyticData->client->name    = $playerSession['client']['name'];
132
            $analyticData->client->version = $playerSession['client']['version'];
133
134
            // Build Analytic Events
135
            $analyticData->events = self::buildAnalyticEventsData($playerSession['events']);
136
137
            $analytic->data[] = $analyticData;
138
        }
139
140
        return $analytic;
141
    }
142
143
    /**
144
     * @param array $events
145
     * @return array
146
     * @throws Exception
147
     */
148
    private static function buildAnalyticEventsData(array $events)
149
    {
150
        $eventsBuilded = array();
151
152
        foreach ($events as $event) {
153
            $analyticEvent            = new AnalyticEvent();
154
            $analyticEvent->type      = $event['type'];
155
            $analyticEvent->emittedAt = new DateTime($event['emitted_at']);
156
            $analyticEvent->at        = isset($event['at']) ? $event['at'] : null;
157
            $analyticEvent->from      = isset($event['from']) ? $event['from'] : null;
158
            $analyticEvent->to        = isset($event['to']) ? $event['to'] : null;
159
160
            $eventsBuilded[] = $analyticEvent;
161
        }
162
163
        return $eventsBuilded;
164
    }
165
166
}
167