Skip to content

Commit

Permalink
adding services that can load GA data #56
Browse files Browse the repository at this point in the history
  • Loading branch information
abidulrmdn committed Mar 9, 2017
1 parent d7d67cb commit ed97dcd
Show file tree
Hide file tree
Showing 6 changed files with 714 additions and 3 deletions.
4 changes: 4 additions & 0 deletions y2bsearch/app/Http/Controllers/Controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
use App\Src\EsService\EsService;
use App\Src\SearchService\SearchProcessor;
use App\Src\SubtitleAnalyzer\SubtitleAnalyzer;
use ClassPreloader\Config;
use Exception;
use Google_Client;
use Google_Service_Analytics;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
Expand Down
130 changes: 130 additions & 0 deletions y2bsearch/app/Src/GA/GoogleAnalyticsService.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
<?php

namespace App\Src\GA;


class GoogleAnalyticsService
{

/**
*
*/
public function main()
{
dd('asd', config('services.ga'));
$analytics = $this->initializeAnalytics();
$profile = $this->getFirstProfileId($analytics);
$results = $this->getResults($analytics, $profile);
$this->printResults($results);
}

/**
* @return Google_Service_Analytics
*/
public function initializeAnalytics()
{
// Creates and returns the Analytics Reporting service object.

// Use the developers console and download your service account
// credentials in JSON format. Place them in this directory or
// change the key file location if necessary.
$config = config('services.ga');

// Create and configure a new client object.
$client = new Google_Client();
$client->setApplicationName("SearchYuotubes");
$client->setAuthConfig($config);
$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
$analytics = new Google_Service_Analytics($client);

return $analytics;
}

/**
* @param $analytics
*
* @return mixed
* @throws Exception
*/
public function getFirstProfileId($analytics)
{
// Get the user's first view (profile) ID.

// Get the list of accounts for the authorized user.
$accounts = $analytics->management_accounts->listManagementAccounts();

if (count($accounts->getItems()) > 0) {
$items = $accounts->getItems();
$firstAccountId = $items[0]->getId();

// Get the list of properties for the authorized user.
$properties = $analytics->management_webproperties
->listManagementWebproperties($firstAccountId);

if (count($properties->getItems()) > 0) {
$items = $properties->getItems();
$firstPropertyId = $items[0]->getId();

// Get the list of views (profiles) for the authorized user.
$profiles = $analytics->management_profiles
->listManagementProfiles($firstAccountId, $firstPropertyId);

if (count($profiles->getItems()) > 0) {
$items = $profiles->getItems();

// Return the first view (profile) ID.
return $items[0]->getId();

} else {
throw new Exception('No views (profiles) found for this user.');
}
} else {
throw new Exception('No properties found for this user.');
}
} else {
throw new Exception('No accounts found for this user.');
}
}

/**
* @param $analytics
* @param $profileId
*
* @return mixed
*/
public function getResults($analytics, $profileId)
{
// Calls the Core Reporting API and queries for the number of sessions
// for the last seven days.
return $analytics->data_ga->get(
'ga:' . $profileId,
'7daysAgo',
'today',
'ga:sessions'
);
}

/**
* @param $results
*/
public function printResults($results)
{
// Parses the response from the Core Reporting API and prints
// the profile name and total sessions.
if (count($results->getRows()) > 0) {

// Get the profile name.
$profileName = $results->getProfileInfo()->getProfileName();

// Get the entry for the first entry in the first row.
$rows = $results->getRows();
$sessions = $rows[0][0];

// Print the results.
print "First view (profile) found: $profileName\n";
print "Total sessions: $sessions\n";
} else {
print "No results found.\n";
}
}
}
3 changes: 2 additions & 1 deletion y2bsearch/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
"require": {
"php": ">=5.5.9",
"laravel/framework": "5.2.*",
"elasticsearch/elasticsearch": "~5.0"
"elasticsearch/elasticsearch": "~5.0",
"google/apiclient": "^2.0"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
Expand Down
Loading

0 comments on commit ed97dcd

Please sign in to comment.