rakwik 0.3.0 → 0.4.0
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.
- checksums.yaml +15 -0
- data/.travis.yml +1 -9
- data/Gemfile +1 -0
- data/lib/rakwik/tracker.rb +7 -1
- data/lib/rakwik/version.rb +1 -1
- data/spec/lib/rakwik/tracker_spec.rb +66 -18
- data/spec/spec_helper.rb +6 -0
- metadata +5 -19
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NmM3N2Y0ZmVlNzliYjc5NDJiZGI1MzJhMzI5MTU5MDg4N2QyZjQ1Nw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
Nzg1ZjBkZWZhMWVlODVjYjBmNDk5MGEyY2ExMjkxOTBmZDhlOWE1ZQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YmI1MDhiYzk4ZjNjYmQ0OGJkZjJiMmRlNjlmY2RiZWVjOGIxZWYwNTZkMzky
|
10
|
+
MGVkMDY0OWU1ZDEwMzhkYTdlYWY2YjRlMTdkMDRmMjMzYzQ0NDY3NTU0MTg5
|
11
|
+
ZDBlM2RhM2E2MzVhODgyM2FlNGI5ODBjOGUzZjljMmZjODExMjE=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
OTRjZDllMjIxNjgyODViMDRlNDg1YzYyY2ExOGJiMTE4YjUyOTJhZGM5NzI4
|
14
|
+
MDEwZTlkMmU1NWJlODY1YmY4YTZmOGU1MWFlYzNhZDljMTJmYjdkNzEyYjgw
|
15
|
+
MjgwMjgyMDg0ZGQ5NjcxOTQ0NGYxMTE3ZWNmNTcyOGZhM2U1NTI=
|
data/.travis.yml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
3
|
- "1.8.7"
|
4
|
-
- "1.9.2"
|
5
4
|
- "1.9.3"
|
6
|
-
-
|
7
|
-
- jruby-19mode # JRuby in 1.9 mode
|
8
|
-
- rbx-18mode
|
9
|
-
- rbx-19mode
|
5
|
+
- "2.0.0"
|
10
6
|
# uncomment this line if your project needs to run something other than `rake`:
|
11
7
|
# script: bundle exec rspec spec
|
12
|
-
matrix:
|
13
|
-
allow_failures:
|
14
|
-
- rvm: jruby-18mode
|
15
|
-
- rvm: jruby-19mode
|
data/Gemfile
CHANGED
data/lib/rakwik/tracker.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'em-http'
|
2
|
+
require 'digest/md5'
|
2
3
|
|
3
4
|
module Rakwik
|
4
5
|
class Tracker
|
@@ -67,12 +68,17 @@ module Rakwik
|
|
67
68
|
'rand' => rand(1000000),
|
68
69
|
'apiv' => 1,
|
69
70
|
'gt_ms' => request.env['rakwik.duration'],
|
70
|
-
'ua' => request.user_agent
|
71
|
+
'ua' => request.user_agent,
|
72
|
+
'lang' => header['Accept-Language']
|
71
73
|
}
|
72
74
|
data['action_name'] = request.env['rakwik.action_name'] unless request.env['rakwik.action_name'].nil?
|
73
75
|
data['urlref'] = request.referer unless request.referer.nil?
|
74
76
|
data['gt_ms'] = request.env['rakwik.duration']
|
75
77
|
|
78
|
+
if w = request.env['warden']
|
79
|
+
data['_id'] = Digest::MD5.hexdigest w.user
|
80
|
+
end
|
81
|
+
|
76
82
|
if not_found? && @options[:track_404] === true
|
77
83
|
data['action_name'] = "404/URL = #{data['url'].gsub(/\//, '%2f')}/From = #{data['urlref'].gsub(/\//, '%2f')}"
|
78
84
|
end
|
data/lib/rakwik/version.rb
CHANGED
@@ -11,29 +11,77 @@ describe Rakwik::Tracker do
|
|
11
11
|
}
|
12
12
|
}
|
13
13
|
|
14
|
-
def app
|
15
|
-
Rakwik::Tracker.new(
|
16
|
-
lambda { |env| [200, {"Content-Type"=>"text/plain"}, ["Hello. The time is #{Time.now}"]] },
|
17
|
-
tracker_data
|
18
|
-
)
|
19
|
-
end
|
20
|
-
|
21
14
|
before(:each) do
|
22
|
-
stub_request(:post, tracker_data[:piwik_url]).
|
15
|
+
stub_request(:post, tracker_data[:piwik_url]).
|
16
|
+
to_return(:status => 200, :body => lambda{|req| req.body})
|
23
17
|
end
|
24
18
|
|
25
|
-
|
26
|
-
|
27
|
-
|
19
|
+
context "for anonymous requests" do
|
20
|
+
let(:app) {
|
21
|
+
Rakwik::Tracker.new(
|
22
|
+
lambda { |env| [200, {"Content-Type"=>"text/plain"}, ["Hello."]] },
|
23
|
+
tracker_data
|
24
|
+
)
|
25
|
+
}
|
26
|
+
|
27
|
+
it "tracks requests asynchronously" do
|
28
|
+
header "User-Agent", "SomeAgent"
|
29
|
+
header "Referer", "http://example.org/referring_page"
|
30
|
+
header "Accept-Language", "en"
|
31
|
+
|
32
|
+
# Trigger a request to our inner app that should be tracked
|
33
|
+
get '/'
|
34
|
+
|
35
|
+
# wait a little while to let EventMachine send the request
|
36
|
+
sleep 0.01
|
28
37
|
|
29
|
-
|
30
|
-
|
38
|
+
# What now?
|
39
|
+
posted_data = nil
|
40
|
+
WebMock.should have_requested(:post, tracker_data[:piwik_url]).with{|req|
|
41
|
+
posted_data = URI::decode_www_form(req.body).
|
42
|
+
inject(Hash.new){ |h, raw| h[raw[0]] = raw[1]; h }
|
43
|
+
}
|
44
|
+
posted_data.should include(
|
45
|
+
"token_auth"=>"foobar",
|
46
|
+
"idsite"=>"1",
|
47
|
+
"rec"=>"1",
|
48
|
+
"url" => "http://example.org/",
|
49
|
+
"cip" => "127.0.0.1",
|
50
|
+
"apiv"=>"1",
|
51
|
+
"ua"=>"SomeAgent",
|
52
|
+
"lang"=>"en",
|
53
|
+
"urlref"=>"http://example.org/referring_page"
|
54
|
+
)
|
55
|
+
posted_data["rand"].should_not be_nil
|
56
|
+
posted_data["gt_ms"].should_not be_nil
|
57
|
+
end
|
58
|
+
end
|
31
59
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
60
|
+
context "for Warden authenticated requests" do
|
61
|
+
let(:app) {
|
62
|
+
Warden::Manager.new Rakwik::Tracker.new(
|
63
|
+
lambda { |env| [200, {"Content-Type"=>"text/plain"}, ["Hello."]] },
|
64
|
+
tracker_data
|
65
|
+
)
|
37
66
|
}
|
67
|
+
|
68
|
+
it "recognizes login data" do
|
69
|
+
login_as 'test'
|
70
|
+
get '/'
|
71
|
+
|
72
|
+
# wait a little while to let EventMachine send the request
|
73
|
+
sleep 0.01
|
74
|
+
|
75
|
+
# What now?
|
76
|
+
posted_data = nil
|
77
|
+
WebMock.should have_requested(:post, tracker_data[:piwik_url]).with{|req|
|
78
|
+
posted_data = URI::decode_www_form(req.body).
|
79
|
+
inject(Hash.new){ |h, raw| h[raw[0]] = raw[1]; h }
|
80
|
+
}
|
81
|
+
|
82
|
+
posted_data["_id"].should_not be_nil
|
83
|
+
posted_data["_id"].should match(/[0-9a-f]{16}/)
|
84
|
+
end
|
38
85
|
end
|
86
|
+
|
39
87
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -2,6 +2,7 @@ require 'bundler/setup'
|
|
2
2
|
require 'rspec'
|
3
3
|
require 'rack/test'
|
4
4
|
require 'webmock/rspec'
|
5
|
+
require 'warden'
|
5
6
|
require 'rakwik'
|
6
7
|
|
7
8
|
if RUBY_VERSION.match /^1\.8/
|
@@ -12,4 +13,9 @@ WebMock.disable_net_connect!
|
|
12
13
|
|
13
14
|
RSpec.configure do |config|
|
14
15
|
config.include Rack::Test::Methods
|
16
|
+
config.include Warden::Test::Helpers
|
17
|
+
|
18
|
+
config.after do
|
19
|
+
Warden.test_reset!
|
20
|
+
end
|
15
21
|
end
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rakwik
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Christian Aust
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-12-08 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rack
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ! '>='
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ! '>='
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: em-http-request
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ! '>='
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ! '>='
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,7 +41,6 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ! '>='
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ! '>='
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -90,33 +83,26 @@ files:
|
|
90
83
|
homepage: https://github.com/datenimperator/rakwik
|
91
84
|
licenses:
|
92
85
|
- MIT
|
86
|
+
metadata: {}
|
93
87
|
post_install_message:
|
94
88
|
rdoc_options: []
|
95
89
|
require_paths:
|
96
90
|
- lib
|
97
91
|
required_ruby_version: !ruby/object:Gem::Requirement
|
98
|
-
none: false
|
99
92
|
requirements:
|
100
93
|
- - ! '>='
|
101
94
|
- !ruby/object:Gem::Version
|
102
95
|
version: '0'
|
103
|
-
segments:
|
104
|
-
- 0
|
105
|
-
hash: 1989987192526098628
|
106
96
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
|
-
none: false
|
108
97
|
requirements:
|
109
98
|
- - ! '>='
|
110
99
|
- !ruby/object:Gem::Version
|
111
100
|
version: '0'
|
112
|
-
segments:
|
113
|
-
- 0
|
114
|
-
hash: 1989987192526098628
|
115
101
|
requirements: []
|
116
102
|
rubyforge_project:
|
117
|
-
rubygems_version: 1.
|
103
|
+
rubygems_version: 2.1.10
|
118
104
|
signing_key:
|
119
|
-
specification_version:
|
105
|
+
specification_version: 4
|
120
106
|
summary: Rack-based server-side asynchronous Piwik tracker integration.
|
121
107
|
test_files:
|
122
108
|
- spec/lib/compat.rb
|