piwik-tracker 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/piwik_tracker/middleware.rb +32 -0
- data/lib/piwik_tracker/piwik.rb +18 -12
- data/lib/piwik_tracker/version.rb +2 -2
- metadata +15 -4
@@ -0,0 +1,32 @@
|
|
1
|
+
module PiwikTracker
|
2
|
+
# rack middleware to extract piwik site id and visitor id from request
|
3
|
+
# cookies
|
4
|
+
class Middleware
|
5
|
+
|
6
|
+
def initialize(app)
|
7
|
+
@app = app
|
8
|
+
end
|
9
|
+
|
10
|
+
def call(env)
|
11
|
+
site_id, visitor_id = parse_cookie env
|
12
|
+
env['piwik'] = {
|
13
|
+
:site_id => site_id,
|
14
|
+
:visitor_id => visitor_id
|
15
|
+
}
|
16
|
+
@app.call(env)
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def parse_cookie(env)
|
22
|
+
request = Rack::Request.new env
|
23
|
+
request.cookies.each_pair do |name, value|
|
24
|
+
if name =~ /^_pk_id\.(\d+)\.\w+$/
|
25
|
+
return [$1.to_i, value.split('.').first]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
[nil, nil]
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
data/lib/piwik_tracker/piwik.rb
CHANGED
@@ -18,31 +18,37 @@ module PiwikTracker
|
|
18
18
|
USER_AGENT = "piwik-tracker/#{PiwikTracker::VERSION}"
|
19
19
|
|
20
20
|
attr_accessor :debug
|
21
|
-
|
21
|
+
attr_writer :logger
|
22
|
+
|
22
23
|
# base_uri - the location of your Piwik installation, i.e. 'http://yoursite.com/piwik'.
|
23
24
|
# site_id - Id of the site to be tracked
|
24
25
|
def initialize(base_uri, site_id)
|
25
26
|
@base_uri = base_uri
|
26
27
|
@site_id = site_id
|
27
28
|
end
|
28
|
-
|
29
|
+
|
29
30
|
# sends a tracking request
|
30
31
|
def track(params)
|
31
32
|
send_request params.merge( 'idsite' => @site_id,
|
32
33
|
'rec' => 1,
|
33
34
|
'rand' => rand(MAX_INT) )
|
34
35
|
end
|
35
|
-
|
36
|
+
|
37
|
+
|
36
38
|
protected
|
37
|
-
|
39
|
+
|
40
|
+
def logger
|
41
|
+
@logger ||= (require 'logger'; Logger.new($stdout))
|
42
|
+
end
|
43
|
+
|
38
44
|
def send_request(params)
|
39
45
|
headers = { 'Accept-Language' => params.delete(:browser_language) }
|
40
46
|
headers['User-Agent'] = params.delete(:user_agent) if params.key?(:user_agent)
|
41
47
|
url = "piwik.php?#{hash_to_querystring(params)}"
|
42
|
-
|
48
|
+
logger.debug "Piwik request:\n#{url}\n#{headers.inspect}"
|
43
49
|
http.get url, headers
|
44
50
|
end
|
45
|
-
|
51
|
+
|
46
52
|
def http
|
47
53
|
@http ||= connect
|
48
54
|
end
|
@@ -53,7 +59,7 @@ module PiwikTracker
|
|
53
59
|
query_string << "#{URI.encode(key.to_s)}=#{URI.encode(hash[key].to_s)}"
|
54
60
|
end
|
55
61
|
end
|
56
|
-
|
62
|
+
|
57
63
|
def connect
|
58
64
|
Patron::Session.new.tap do |session|
|
59
65
|
session.timeout = HTTP_TIMEOUT
|
@@ -64,15 +70,15 @@ module PiwikTracker
|
|
64
70
|
|
65
71
|
|
66
72
|
public
|
67
|
-
|
73
|
+
|
68
74
|
class Request
|
69
|
-
|
75
|
+
|
70
76
|
# Piwik API version
|
71
77
|
VERSION = 1
|
72
|
-
|
78
|
+
|
73
79
|
# length of Piwik visitor ids
|
74
80
|
VISITOR_ID_LENGTH = 16
|
75
|
-
|
81
|
+
|
76
82
|
def initialize(piwik, auth_token = nil)
|
77
83
|
@piwik = piwik
|
78
84
|
@custom_variables = []
|
@@ -202,4 +208,4 @@ module PiwikTracker
|
|
202
208
|
end
|
203
209
|
end
|
204
210
|
|
205
|
-
end
|
211
|
+
end
|
@@ -1,3 +1,3 @@
|
|
1
1
|
module PiwikTracker
|
2
|
-
VERSION = "0.1.
|
3
|
-
end
|
2
|
+
VERSION = "0.1.1"
|
3
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: piwik-tracker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- "Jens Kr\xC3\xA4mer"
|
@@ -10,10 +10,20 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-06-
|
13
|
+
date: 2011-06-14 00:00:00 +02:00
|
14
14
|
default_executable:
|
15
|
-
dependencies:
|
16
|
-
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: patron
|
18
|
+
prerelease: false
|
19
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: "0"
|
25
|
+
type: :runtime
|
26
|
+
version_requirements: *id001
|
17
27
|
description: ""
|
18
28
|
email:
|
19
29
|
- jk@jkraemer.net
|
@@ -24,6 +34,7 @@ extensions: []
|
|
24
34
|
extra_rdoc_files: []
|
25
35
|
|
26
36
|
files:
|
37
|
+
- lib/piwik_tracker/middleware.rb
|
27
38
|
- lib/piwik_tracker/piwik.rb
|
28
39
|
- lib/piwik_tracker/version.rb
|
29
40
|
- lib/piwik_tracker.rb
|