Skip to content
This repository has been archived by the owner on Apr 22, 2022. It is now read-only.

Commit

Permalink
Rewrite session events listing
Browse files Browse the repository at this point in the history
  • Loading branch information
thomas committed Nov 25, 2019
1 parent 0882193 commit d808f24
Show file tree
Hide file tree
Showing 15 changed files with 256 additions and 406 deletions.
62 changes: 29 additions & 33 deletions README.md
Expand Up @@ -43,7 +43,7 @@ echo $video->assets['iframe'];
<?php
// Create and upload a video resource from online source (third party)
$video = $client->videos->download(
'https://www.exemple.com/path/to/video.mp4',
'https://www.example.com/path/to/video.mp4',
'Course #4 - Part B'
);

Expand Down Expand Up @@ -140,23 +140,28 @@ $client->captions->updateDefault($video->videoId, 'en', true);
//Delete caption by language
$client->captions->delete($video->videoId, 'en');

// Create a live
$live = $client->lives->create('Test live');
// Create a live stream container
$liveStream = $client->lives->create('Test live');
// Get the RTMP stream key
$streamKey = $liveStream->streamKey;

// Get video Analytics Data for the month of July 2018
$videoAnalytics = $client->analyticsVideo->get($video->videoId, '2018-07');
//// Raw statistics

// Get Session Events Analytics for a sessionId
$sessionEventsAnalytics = $client->analyticsSessionEvent->get($videoAnalytics->data->session->sessionId);
// List video player sessions
$videoSessions = $client->analyticsVideo->search($video->videoId);
// List video player sessions for the month of July 2018 with pagination
$videoSessionsJuly2018 = $client->analyticsVideo->search($video->videoId, '2018-07', array(), array('currentPage' => 1, 'pageSize' => 100));

// Search Video Analytics Data between May 2018 and July 2018 and return the first 100 results
$analyticsVideo = $client->analyticsVideo->search(array('period' => '2018-05/2018-07', 'currentPage' => 1, 'pageSize' => 100));
// Get video session events for a sessionId
$videoSessionEvents = $client->analyticsSessionEvents->get($videoSessions[0]->session->sessionId);

// Get live Analytics Data for the month of July 2018
$liveAnalytics = $client->analyticsLive->get($live->liveStreamId, '2018-07');
// List video player sessions
$liveSessions = $client->analyticsLive->search($liveStream->liveStreamId);
// List video player sessions for the month of July 2018 with pagination
$liveSessionsJuly2018 = $client->analyticsLive->search($video->videoId, '2018-07', array(), array('currentPage' => 1, 'pageSize' => 100));

// Search Live Analytics Data between May 2018 and July 2018 and return the first 100 results
$analyticsLive = $client->analyticsLive->search(array('period' => '2018-05/2018-07', 'currentPage' => 1, 'pageSize' => 100));
// Get video session events for a sessionId
$liveSessionEvents = $client->analyticsSessionEvents->get($liveSessions[0]->session->sessionId);

// Generate a token for delegated upload
$token = $client->tokens->generate();
Expand Down Expand Up @@ -319,30 +324,23 @@ $client->lives->uploadThumbnail($source, $liveStreamId);
*********************************
*/

// Get video analytics between period
$client->analyticsVideo->get($videoId, $period, $metadata);

// Search videos analytics between period, filter with tags or metadata
$client->analyticsVideo->search($parameters);
$client->analyticsVideo->search($videoId, $period, $metadata, $parameters);

// Get last video analytics request Error
$client->analyticsVideo->getLastError();

// Get live analytics between period
$client->analyticsLive->get($liveStreamId, $period);

// Search lives analytics between period, filter with tags or metadata
$client->analyticsLive->search($parameters);
// Search live stream analytics between period, filter with tags or metadata
$client->analyticsLive->search($liveStreamId, $period, $parameters);

// Get last live analytics request Error
$client->analyticsLive->getLastError();


// Get sesion events analytics
$client->analyticsSessionEvent->get($sessionId, $parameters);
// Get session events analytics
$client->analyticsSessionEvents->search($sessionId, $parameters);

// Get last sesion events analytics request Error
$client->analyticsSessionEvent->getLastError();
$client->analyticsSessionEvents->getLastError();


```
Expand Down Expand Up @@ -418,7 +416,7 @@ $client->analyticsSessionEvent->getLastError();
| **-** | videoId | Video identifier | :heavy_check_mark: | **-** |
| **-** | language (string) | Language identifier | :heavy_check_mark: | 2 letters (ex: en, fr) |

### Lives
### Live streams

| **Function** | **Parameters** | **Description** | **Required** | **Allowed Values** |
| :---------------------------------: | :-------------------: | :------------------------: | :--------------------: | :--------------------- |
Expand All @@ -441,26 +439,24 @@ $client->analyticsSessionEvent->getLastError();
| **Function** | **Parameters** | **Description** | **Required** | **Allowed Values/Format** |
| :---------------------------------: | :-------------------: | :------------------------: | :--------------------: | :--------------------- |
| **get** | **-** | **-** | **-** | **-** |
| **search** | parameters(array) | Search parameters | :x: | <ul><li>Pagination/Filters:</li><li>currentPage(int)</li><li>pageSize(int)</li><li>sortBy(string)</li><li>sortOrder(string)</li><li>tags(string&#124;array(string))</li><li>metadata(array(string))</li><li>Period:</li><li>For a day : 2018-01-01</li><li>For a week: 2018-W01</li><li>For a month: 2018-01</li><li>For a year: 2018</li><li>Date range: 2018-01-01/2018-01-15</li><li>Week range: 2018-W01/2018-W03</li><li>Month range: 2018-01/2018-03</li><li>Year range: 2018/2020</li></ul> |
| **-** | videoId(string) | Video identifier | :heavy_check_mark: | **-** |
| **-** | period (string) | Period research | :x: | <ul><li>For a day : 2018-01-01</li><li>For a week: 2018-W01</li><li>For a month: 2018-01</li><li>For a year: 2018</li><li>Date range: 2018-01-01/2018-01-15</li><li>Week range: 2018-W01/2018-W03</li><li>Month range: 2018-01/2018-03</li><li>Year range: 2018/2020</li></ul> |
| **-** | metadata (array) | Metadata research | :x: | **-** |
| **search** | parameters(array) | Search parameters | :x: | <ul><li>Pagination/Filters:</li><li>currentPage(int)</li><li>pageSize(int)</li><li>sortBy(string)</li><li>sortOrder(string)</li><li>tags(string&#124;array(string))</li><li>metadata(array(string))</li><li>Period:</li><li>For a day : 2018-01-01</li><li>For a week: 2018-W01</li><li>For a month: 2018-01</li><li>For a year: 2018</li><li>Date range: 2018-01-01/2018-01-15</li><li>Week range: 2018-W01/2018-W03</li><li>Month range: 2018-01/2018-03</li><li>Year range: 2018/2020</li></ul> |

### AnalyticsLive
| **Function** | **Parameters** | **Description** | **Required** | **Allowed Values/Format** |
| :---------------------------------: | :-------------------: | :------------------------: | :--------------------: | :--------------------- |
| **get** | **-** | **-** | **-** | **-** |
| **search** | parameters(array) | Search parameters | :x: | <ul><li>Pagination/Filters:</li><li>currentPage(int)</li><li>pageSize(int)</li><li>sortBy(string)</li><li>sortOrder(string)</li><li>Period:</li><li>For a day : 2018-01-01</li><li>For a week: 2018-W01</li><li>For a month: 2018-01</li><li>For a year: 2018</li><li>Date range: 2018-01-01/2018-01-15</li><li>Week range: 2018-W01/2018-W03</li><li>Month range: 2018-01/2018-03</li><li>Year range: 2018/2020</li></ul> |
| **-** | liveStreamId(string) | Live identifier | :heavy_check_mark: | **-** |
| **-** | period (string) | Period research | :x: | <ul><li>For a day : 2018-01-01</li><li>For a week: 2018-W01</li><li>For a month: 2018-01</li><li>For a year: 2018</li><li>Date range: 2018-01-01/2018-01-15</li><li>Week range: 2018-W01/2018-W03</li><li>Month range: 2018-01/2018-03</li><li>Year range: 2018/2020</li></ul> |
| **search** | parameters(array) | Search parameters | :x: | <ul><li>Pagination/Filters:</li><li>currentPage(int)</li><li>pageSize(int)</li><li>sortBy(string)</li><li>sortOrder(string)</li><li>Period:</li><li>For a day : 2018-01-01</li><li>For a week: 2018-W01</li><li>For a month: 2018-01</li><li>For a year: 2018</li><li>Date range: 2018-01-01/2018-01-15</li><li>Week range: 2018-W01/2018-W03</li><li>Month range: 2018-01/2018-03</li><li>Year range: 2018/2020</li></ul> |
### AnalyticsSessionEvent
### AnalyticsSessionEvents
| **Function** | **Parameters** | **Description** | **Required** | **Allowed Values/Format** |
| :---------------------------------: | :-------------------: | :------------------------: | :--------------------: | :--------------------- |
| **get** | **-** | **-** | **-** | **-** |
| **search** | **-** | **-** | **-** | **-** |
| **-** | sessionId(string) | Session identifier | :heavy_check_mark: | **-** |
| **-** | parameters(array) | Search parameters | :x: | <ul><li>currentPage(int)</li><li>pageSize(int)</li></ul> |
Expand Down
125 changes: 50 additions & 75 deletions src/Api/AnalyticsLive.php
Expand Up @@ -3,50 +3,32 @@

namespace ApiVideo\Client\Api;

use ApiVideo\Client\Model\Analytic\AnalyticData;
use ApiVideo\Client\Model\Analytic\AnalyticEvent;
use ApiVideo\Client\Model\Analytic\AnalyticLive;
use ApiVideo\Client\Model\Analytic\PlayerSession;
use DateTime;
use Exception;
use InvalidArgumentException;

class AnalyticsLive extends BaseApi
{
/**
* @param $liveStreamId
* @param string|null $period
* @return AnalyticLive|null
* @param $liveStreamId
* @param null $period
* @param array $parameters
* @return PlayerSession[]|null
*/
public function get($liveStreamId, $period = null)
public function search($liveStreamId, $period = null, array $parameters = array())
{
$parameters = '';
if (null !== $period) {
$parameters = "?period=$period";
$parameters['period'] = $period;
}

$response = $this->browser->get("/analytics/live-streams/$liveStreamId".$parameters);
if (!$response->isSuccessful()) {
$this->registerLastError($response);

return null;
}

return $this->unmarshal($response);
}

/**
* @param array $parameters
* @return AnalyticLive[]|null
*/
public function search(array $parameters = array())
{
$params = $parameters;
$currentPage = isset($parameters['currentPage']) ? $parameters['currentPage'] : 1;
$params['pageSize'] = isset($parameters['pageSize']) ? $parameters['pageSize'] : 100;
$allAnalytics = array();
$currentPage = isset($parameters['currentPage']) ? $parameters['currentPage'] : 1;
$parameters['pageSize'] = isset($parameters['pageSize']) ? $parameters['pageSize'] : 100;
$allAnalytics = array();

do {
$params['currentPage'] = $currentPage;
$response = $this->browser->get('/analytics/live-streams?'.http_build_query($parameters));
$parameters['currentPage'] = $currentPage;
$response = $this->browser->get("/analytics/live-streams/$liveStreamId?".http_build_query($parameters));

if (!$response->isSuccessful()) {
$this->registerLastError($response);
Expand All @@ -72,54 +54,47 @@ public function search(array $parameters = array())
}

/**
* @param array $data
* @return AnalyticLive
* @param array $object
* @return PlayerSession
* @throws Exception
*/
protected function cast(array $data)
protected function cast(array $object)
{
$analytic = new AnalyticLive();
$analytic->liveStreamId = $data['live']['liveStreamId'];
$analytic->name = $data['live']['name'];
$analytic->period = $data['period'];
// Build Analytic Data
foreach ($data['data'] as $playerSession) {
$analyticData = new AnalyticData();

// Build Analytic Session
$analyticData->session->sessionId = $playerSession['session']['sessionId'];
$analyticData->session->loadedAt = new DateTime($playerSession['session']['loadedAt']);
$analyticData->session->endedAt = new DateTime($playerSession['session']['endedAt']);

// Build Analytic Location
$analyticData->location->country = $playerSession['location']['country'];
$analyticData->location->city = $playerSession['location']['city'];

// Build Analytic Referrer
$analyticData->referrer->url = $playerSession['referrer']['url'];
$analyticData->referrer->medium = $playerSession['referrer']['medium'];
$analyticData->referrer->source = $playerSession['referrer']['source'];
$analyticData->referrer->searchTerm = $playerSession['referrer']['searchTerm'];

// Build Analytic Device
$analyticData->device->type = $playerSession['device']['type'];
$analyticData->device->vendor = $playerSession['device']['vendor'];
$analyticData->device->model = $playerSession['device']['model'];

// Build Analytic Os
$analyticData->os->name = $playerSession['os']['name'];
$analyticData->os->shortname = $playerSession['os']['shortname'];
$analyticData->os->version = $playerSession['os']['version'];

// Build Analytic Client
$analyticData->client->type = $playerSession['client']['type'];
$analyticData->client->name = $playerSession['client']['name'];
$analyticData->client->version = $playerSession['client']['version'];

$analytic->data[] = $analyticData;
$analyticData = new PlayerSession();

// Build Analytic Session
$analyticData->session->sessionId = $object['session']['sessionId'];
$analyticData->session->loadedAt = new DateTime($object['session']['loadedAt']);
$analyticData->session->endedAt = new DateTime($object['session']['endedAt']);
if (isset($object['session']['metadata'])) {
$analyticData->session->metadata = $object['session']['metadata'];
}

return $analytic;
}
// Build Analytic Location
$analyticData->location->country = $object['location']['country'];
$analyticData->location->city = $object['location']['city'];

// Build Analytic Referrer
$analyticData->referrer->url = $object['referrer']['url'];
$analyticData->referrer->medium = $object['referrer']['medium'];
$analyticData->referrer->source = $object['referrer']['source'];
$analyticData->referrer->searchTerm = $object['referrer']['searchTerm'];

// Build Analytic Device
$analyticData->device->type = $object['device']['type'];
$analyticData->device->vendor = $object['device']['vendor'];
$analyticData->device->model = $object['device']['model'];

// Build Analytic Os
$analyticData->os->name = $object['os']['name'];
$analyticData->os->shortname = $object['os']['shortname'];
$analyticData->os->version = $object['os']['version'];

// Build Analytic Client
$analyticData->client->type = $object['client']['type'];
$analyticData->client->name = $object['client']['name'];
$analyticData->client->version = $object['client']['version'];

return $analyticData;
}
}

0 comments on commit d808f24

Please sign in to comment.