Skip to content

Commit

Permalink
Refactoring the Tracking manager
Browse files Browse the repository at this point in the history
  • Loading branch information
arcanedev-maroc committed Dec 6, 2016
1 parent 4c135bd commit fb58fa9
Showing 1 changed file with 110 additions and 74 deletions.
184 changes: 110 additions & 74 deletions src/TrackingManager.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?php namespace Arcanedev\LaravelTracker;

use Arcanedev\LaravelTracker\Contracts\TrackingManager as TrackingManagerContract;
use Illuminate\Contracts\Foundation\Application;

/**
* Class TrackingManager
Expand All @@ -14,35 +15,8 @@ class TrackingManager implements TrackingManagerContract
| Properties
| ------------------------------------------------------------------------------------------------
*/
/** @var Contracts\Trackers\CookieTracker */
private $cookieTracker;

/** @var Contracts\Trackers\DeviceTracker */
private $deviceTracker;

/** @var Contracts\Trackers\GeoIpTracker */
private $geoIpTracker;

/** @var Contracts\Trackers\LanguageTracker */
private $languageTracker;

/** @var Contracts\Trackers\PathTracker */
private $pathTracker;

/** @var Contracts\Trackers\QueryTracker */
private $queryTracker;

/** @var Contracts\Trackers\RefererTracker */
private $refererTracker;

/** @var Contracts\Trackers\SessionTracker */
private $sessionTracker;

/** @var Contracts\Trackers\UserAgentTracker */
private $userAgentTracker;

/** @var Contracts\Trackers\UserTracker */
private $userTracker;
/** @var \Illuminate\Contracts\Foundation\Application */
private $app;

/* ------------------------------------------------------------------------------------------------
| Constructor
Expand All @@ -51,53 +25,115 @@ class TrackingManager implements TrackingManagerContract
/**
* TrackingManager constructor.
*
* @param \Arcanedev\LaravelTracker\Contracts\Trackers\CookieTracker $cookieTracker
* @param \Arcanedev\LaravelTracker\Contracts\Trackers\DeviceTracker $deviceTracker
* @param \Arcanedev\LaravelTracker\Contracts\Trackers\GeoIpTracker $geoIpTracker
* @param \Arcanedev\LaravelTracker\Contracts\Trackers\LanguageTracker $languageTracker
* @param \Arcanedev\LaravelTracker\Contracts\Trackers\PathTracker $pathTracker
* @param \Arcanedev\LaravelTracker\Contracts\Trackers\QueryTracker $queryTracker
* @param \Arcanedev\LaravelTracker\Contracts\Trackers\RefererTracker $refererTracker
* @param \Arcanedev\LaravelTracker\Contracts\Trackers\SessionTracker $sessionTracker
* @param \Arcanedev\LaravelTracker\Contracts\Trackers\UserAgentTracker $userAgentTracker
* @param \Arcanedev\LaravelTracker\Contracts\Trackers\UserTracker $userTracker
*/
public function __construct(
Contracts\Trackers\CookieTracker $cookieTracker,
Contracts\Trackers\DeviceTracker $deviceTracker,
Contracts\Trackers\GeoIpTracker $geoIpTracker,
Contracts\Trackers\LanguageTracker $languageTracker,
Contracts\Trackers\PathTracker $pathTracker,
Contracts\Trackers\QueryTracker $queryTracker,
Contracts\Trackers\RefererTracker $refererTracker,
Contracts\Trackers\SessionTracker $sessionTracker,
Contracts\Trackers\UserAgentTracker $userAgentTracker,
Contracts\Trackers\UserTracker $userTracker
) {
$this->cookieTracker = $cookieTracker;
$this->deviceTracker = $deviceTracker;
$this->geoIpTracker = $geoIpTracker;
$this->languageTracker = $languageTracker;
$this->pathTracker = $pathTracker;
$this->queryTracker = $queryTracker;
$this->refererTracker = $refererTracker;
$this->sessionTracker = $sessionTracker;
$this->userAgentTracker = $userAgentTracker;
$this->userTracker = $userTracker;
* @param \Illuminate\Contracts\Foundation\Application $app
*/
public function __construct(Application $app)
{
$this->app = $app;
}

/* ------------------------------------------------------------------------------------------------
| Getters & Setters
| ------------------------------------------------------------------------------------------------
*/
/**
* Get the cookie tracker.
*
* @return \Arcanedev\LaravelTracker\Contracts\Trackers\CookieTracker
*/
private function getCookieTracker()
{
return $this->app->make(Contracts\Trackers\CookieTracker::class);
}

/**
* Get the device tracker.
*
* @return \Arcanedev\LaravelTracker\Contracts\Trackers\DeviceTracker
*/
private function getDeviceTracker()
{
return $this->app->make(Contracts\Trackers\DeviceTracker::class);
}

/**
* Get the geoip tracker.
*
* @return \Arcanedev\LaravelTracker\Contracts\Trackers\GeoIpTracker
*/
private function getGeoIpTracker()
{
return $this->app->make(Contracts\Trackers\GeoIpTracker::class);
}

/**
* Get the language tracker.
*
* @return \Arcanedev\LaravelTracker\Contracts\Trackers\LanguageTracker
*/
private function getLanguageTracker()
{
return $this->app->make(Contracts\Trackers\LanguageTracker::class);
}

/**
* Get the path tracker.
*
* @return \Arcanedev\LaravelTracker\Contracts\Trackers\PathTracker
*/
private function getPathTracker()
{
return $this->app->make(Contracts\Trackers\PathTracker::class);
}

/**
* Get the query tracker.
*
* @return \Arcanedev\LaravelTracker\Contracts\Trackers\QueryTracker
*/
private function getQueryTracker()
{
return $this->app->make(Contracts\Trackers\QueryTracker::class);
}

/**
* Get the referer tracker.
*
* @return \Arcanedev\LaravelTracker\Contracts\Trackers\RefererTracker
*/
private function getRefererTracker()
{
return $this->app->make(Contracts\Trackers\RefererTracker::class);
}

/**
* Get the session tracker.
*
* @return \Arcanedev\LaravelTracker\Contracts\Trackers\SessionTracker
*/
private function getSessionTracker()
{
return $this->app->make(Contracts\Trackers\SessionTracker::class);
}

/**
* Get the user agent tracker.
*
* @return Contracts\Trackers\UserAgentTracker
* @return \Arcanedev\LaravelTracker\Contracts\Trackers\UserAgentTracker
*/
public function getUserAgentTracker()
{
return $this->userAgentTracker;
return $this->app->make(Contracts\Trackers\UserAgentTracker::class);
}

/**
* Get the user tracker.
*
* @return \Arcanedev\LaravelTracker\Contracts\Trackers\UserTracker
*/
private function getUserTracker()
{
return $this->app->make(Contracts\Trackers\UserTracker::class);
}

/* ------------------------------------------------------------------------------------------------
Expand All @@ -113,7 +149,7 @@ public function getUserAgentTracker()
*/
public function trackPath($path)
{
return $this->pathTracker->track($path);
return $this->getPathTracker()->track($path);
}

/**
Expand All @@ -125,7 +161,7 @@ public function trackPath($path)
*/
public function trackQuery(array $queries)
{
return $this->queryTracker->track($queries);
return $this->getQueryTracker()->track($queries);
}

/**
Expand All @@ -135,7 +171,7 @@ public function trackQuery(array $queries)
*/
public function trackUser()
{
return $this->userTracker->track();
return $this->getUserTracker()->track();
}

/**
Expand All @@ -145,7 +181,7 @@ public function trackUser()
*/
public function trackDevice()
{
return $this->deviceTracker->track();
return $this->getDeviceTracker()->track();
}

/**
Expand All @@ -157,7 +193,7 @@ public function trackDevice()
*/
public function trackGeoIp($ipAddress)
{
return $this->geoIpTracker->track($ipAddress);
return $this->getGeoIpTracker()->track($ipAddress);
}

/**
Expand All @@ -180,7 +216,7 @@ public function trackUserAgent()
*/
public function trackReferer($refererUrl, $pageUrl)
{
return $this->refererTracker->track($refererUrl, $pageUrl);
return $this->getRefererTracker()->track($refererUrl, $pageUrl);
}

/**
Expand All @@ -192,7 +228,7 @@ public function trackReferer($refererUrl, $pageUrl)
*/
public function trackCookie($cookie)
{
return $this->cookieTracker->track($cookie);
return $this->getCookieTracker()->track($cookie);
}

/**
Expand All @@ -202,7 +238,7 @@ public function trackCookie($cookie)
*/
public function trackLanguage()
{
return $this->languageTracker->track();
return $this->getLanguageTracker()->track();
}

/**
Expand All @@ -214,7 +250,7 @@ public function trackLanguage()
*/
public function trackSession(array $data)
{
return $this->sessionTracker->track($data);
return $this->getSessionTracker()->track($data);
}

/**
Expand All @@ -227,6 +263,6 @@ public function trackSession(array $data)
*/
public function checkSessionData(array $data, array $currentData)
{
return $this->sessionTracker->checkData($data, $currentData);
return $this->getSessionTracker()->checkData($data, $currentData);
}
}

0 comments on commit fb58fa9

Please sign in to comment.