Completed
Push — master ( 4c135b...fb58fa )
by ARCANEDEV
10:56
created

TrackingManager::trackGeoIp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php namespace Arcanedev\LaravelTracker;
2
3
use Arcanedev\LaravelTracker\Contracts\TrackingManager as TrackingManagerContract;
4
use Illuminate\Contracts\Foundation\Application;
5
6
/**
7
 * Class     TrackingManager
8
 *
9
 * @package  Arcanedev\LaravelTracker
10
 * @author   ARCANEDEV <[email protected]>
11
 */
12
class TrackingManager implements TrackingManagerContract
13
{
14
    /* ------------------------------------------------------------------------------------------------
15
     |  Properties
16
     | ------------------------------------------------------------------------------------------------
17
     */
18
    /** @var \Illuminate\Contracts\Foundation\Application  */
19
    private $app;
20
21
    /* ------------------------------------------------------------------------------------------------
22
     |  Constructor
23
     | ------------------------------------------------------------------------------------------------
24
     */
25
    /**
26
     * TrackingManager constructor.
27
     *
28
     * @param \Illuminate\Contracts\Foundation\Application $app
29
     */
30 24
    public function __construct(Application $app)
31
    {
32 24
        $this->app = $app;
33 24
    }
34
35
    /* ------------------------------------------------------------------------------------------------
36
     |  Getters & Setters
37
     | ------------------------------------------------------------------------------------------------
38
     */
39
    /**
40
     * Get the cookie tracker.
41
     *
42
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\CookieTracker
43
     */
44 6
    private function getCookieTracker()
45
    {
46 6
        return $this->app->make(Contracts\Trackers\CookieTracker::class);
47 3
    }
48
49
    /**
50
     * Get the device tracker.
51
     *
52
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\DeviceTracker
53
     */
54 6
    private function getDeviceTracker()
55
    {
56 6
        return $this->app->make(Contracts\Trackers\DeviceTracker::class);
57
    }
58
59
    /**
60
     * Get the geoip tracker.
61
     *
62
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\GeoIpTracker
63
     */
64 6
    private function getGeoIpTracker()
65
    {
66 6
        return $this->app->make(Contracts\Trackers\GeoIpTracker::class);
67
    }
68
69
    /**
70
     * Get the language tracker.
71
     *
72
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\LanguageTracker
73
     */
74 6
    private function getLanguageTracker()
75
    {
76 6
        return $this->app->make(Contracts\Trackers\LanguageTracker::class);
77
    }
78
79
    /**
80
     * Get the path tracker.
81
     *
82
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\PathTracker
83
     */
84 6
    private function getPathTracker()
85
    {
86 6
        return $this->app->make(Contracts\Trackers\PathTracker::class);
87
    }
88
89
    /**
90
     * Get the query tracker.
91
     *
92
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\QueryTracker
93
     */
94 6
    private function getQueryTracker()
95
    {
96 6
        return $this->app->make(Contracts\Trackers\QueryTracker::class);
97
    }
98
99
    /**
100
     * Get the referer tracker.
101
     *
102
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\RefererTracker
103
     */
104 6
    private function getRefererTracker()
105
    {
106 6
        return $this->app->make(Contracts\Trackers\RefererTracker::class);
107
    }
108
109
    /**
110
     * Get the session tracker.
111
     *
112
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\SessionTracker
113
     */
114 6
    private function getSessionTracker()
115
    {
116 6
        return $this->app->make(Contracts\Trackers\SessionTracker::class);
117
    }
118
119
    /**
120
     * Get the user agent tracker.
121
     *
122
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\UserAgentTracker
123
     */
124 6
    public function getUserAgentTracker()
125
    {
126 6
        return $this->app->make(Contracts\Trackers\UserAgentTracker::class);
127
    }
128
129
    /**
130
     * Get the user tracker.
131
     *
132
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\UserTracker
133
     */
134 6
    private function getUserTracker()
135
    {
136 6
        return $this->app->make(Contracts\Trackers\UserTracker::class);
137
    }
138
139
    /* ------------------------------------------------------------------------------------------------
140
     |  Main Functions
141
     | ------------------------------------------------------------------------------------------------
142
     */
143
    /**
144
     * Track the path.
145
     *
146
     * @param  string  $path
147
     *
148
     * @return int
149
     */
150 6
    public function trackPath($path)
151
    {
152 6
        return $this->getPathTracker()->track($path);
153
    }
154
155
    /**
156
     * Track the query.
157
     *
158
     * @param  array  $queries
159
     *
160
     * @return int|null
161
     */
162 6
    public function trackQuery(array $queries)
163
    {
164 6
        return $this->getQueryTracker()->track($queries);
165
    }
166
167
    /**
168
     * Track the user.
169
     *
170
     * @return int|null
171
     */
172 6
    public function trackUser()
173
    {
174 6
        return $this->getUserTracker()->track();
175
    }
176
177
    /**
178
     * Track the device.
179
     *
180
     * @return int
181
     */
182 6
    public function trackDevice()
183
    {
184 6
        return $this->getDeviceTracker()->track();
185
    }
186
187
    /**
188
     * Track the ip address.
189
     *
190
     * @param  string  $ipAddress
191
     *
192
     * @return int|null
193
     */
194 6
    public function trackGeoIp($ipAddress)
195
    {
196 6
        return $this->getGeoIpTracker()->track($ipAddress);
197
    }
198
199
    /**
200
     * Track the user agent.
201
     *
202
     * @return int
203
     */
204 6
    public function trackUserAgent()
205
    {
206 6
        return $this->getUserAgentTracker()->track();
207
    }
208
209
    /**
210
     * Track the referer.
211
     *
212
     * @param  string  $refererUrl
213
     * @param  string  $pageUrl
214
     *
215
     * @return int|null
216
     */
217 6
    public function trackReferer($refererUrl, $pageUrl)
218
    {
219 6
        return $this->getRefererTracker()->track($refererUrl, $pageUrl);
220
    }
221
222
    /**
223
     * Track the cookie.
224
     *
225
     * @param  mixed  $cookie
226
     *
227
     * @return int|null
228
     */
229 6
    public function trackCookie($cookie)
230
    {
231 6
        return $this->getCookieTracker()->track($cookie);
232
    }
233
234
    /**
235
     * Track the language.
236
     *
237
     * @return int
238
     */
239 6
    public function trackLanguage()
240
    {
241 6
        return $this->getLanguageTracker()->track();
242
    }
243
244
    /**
245
     * Track the session.
246
     *
247
     * @param  array  $data
248
     *
249
     * @return int
250
     */
251 6
    public function trackSession(array $data)
252
    {
253 6
        return $this->getSessionTracker()->track($data);
254
    }
255
256
    /**
257
     * Check the session data.
258
     *
259
     * @param  array  $data
260
     * @param  array  $currentData
261
     *
262
     * @return array
263
     */
264 6
    public function checkSessionData(array $data, array $currentData)
265
    {
266 6
        return $this->getSessionTracker()->checkData($data, $currentData);
267
    }
268
}
269