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.

AnalyticsLive::cast()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 38
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 22
c 1
b 0
f 0
dl 0
loc 38
rs 9.568
cc 2
nc 2
nop 1
1
<?php
2
3
4
namespace ApiVideo\Client\Api;
5
6
use ApiVideo\Client\Model\Analytic\PlayerSession;
7
use DateTime;
8
use Exception;
9
10
class AnalyticsLive extends BaseApi
11
{
12
    /**
13
     * @param            $liveStreamId
14
     * @param null       $period
0 ignored issues
show
Documentation Bug introduced by
Are you sure the doc-type for parameter $period is correct as it would always require null to be passed?
Loading history...
15
     * @param array      $parameters
16
     * @return PlayerSession[]|null
17
     */
18
    public function search($liveStreamId, $period = null, array $parameters = array())
19
    {
20
        if (null !== $period) {
0 ignored issues
show
introduced by
The condition null !== $period is always false.
Loading history...
21
            $parameters['period'] = $period;
22
        }
23
24
        $currentPage            = isset($parameters['currentPage']) ? $parameters['currentPage'] : 1;
25
        $parameters['pageSize'] = isset($parameters['pageSize']) ? $parameters['pageSize'] : 100;
26
        $allAnalytics           = array();
27
28
        do {
29
            $parameters['currentPage'] = $currentPage;
30
            $response                  = $this->browser->get("/analytics/live-streams/$liveStreamId?".http_build_query($parameters));
31
32
            if (!$response->isSuccessful()) {
33
                $this->registerLastError($response);
34
35
                return null;
36
            }
37
38
            $json = json_decode($response->getContent(), true);
39
            $analytics = $json['data'];
40
            $allAnalytics[] = $this->castAll($analytics);
41
42
            if (isset($parameters['currentPage'])) {
43
                break;
44
            }
45
46
            $pagination = $json['pagination'];
47
            $pagination['currentPage']++;
48
        } while ($pagination['pagesTotal'] >= $pagination['currentPage']);
49
50
        $allAnalytics = call_user_func_array('array_merge', $allAnalytics);
51
52
        return $allAnalytics;
53
    }
54
55
    /**
56
     * @param array $object
57
     * @return PlayerSession
58
     * @throws Exception
59
     */
60
    protected function cast(array $object)
61
    {
62
        $analyticData = new PlayerSession();
63
64
        // Build Analytic Session
65
        $analyticData->session->sessionId = $object['session']['sessionId'];
66
        $analyticData->session->loadedAt = new DateTime($object['session']['loadedAt']);
67
        $analyticData->session->endedAt = new DateTime($object['session']['endedAt']);
68
        if (isset($object['session']['metadata'])) {
69
            $analyticData->session->metadata = $object['session']['metadata'];
70
        }
71
72
        // Build Analytic Location
73
        $analyticData->location->country = $object['location']['country'];
74
        $analyticData->location->city = $object['location']['city'];
75
76
        // Build Analytic Referrer
77
        $analyticData->referrer->url = $object['referrer']['url'];
78
        $analyticData->referrer->medium = $object['referrer']['medium'];
79
        $analyticData->referrer->source = $object['referrer']['source'];
80
        $analyticData->referrer->searchTerm = $object['referrer']['searchTerm'];
81
82
        // Build Analytic Device
83
        $analyticData->device->type = $object['device']['type'];
84
        $analyticData->device->vendor = $object['device']['vendor'];
85
        $analyticData->device->model = $object['device']['model'];
86
87
        // Build Analytic Os
88
        $analyticData->os->name = $object['os']['name'];
89
        $analyticData->os->shortname = $object['os']['shortname'];
90
        $analyticData->os->version = $object['os']['version'];
91
92
        // Build Analytic Client
93
        $analyticData->client->type = $object['client']['type'];
94
        $analyticData->client->name = $object['client']['name'];
95
        $analyticData->client->version = $object['client']['version'];
96
97
        return $analyticData;
98
    }
99
}
100