autometal-piwik 0.4.1 → 0.4.2
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/README.rdoc +2 -0
- data/autometal-piwik.gemspec +7 -7
- data/lib/piwik.rb +1 -1
- data/lib/piwik/base.rb +10 -1
- data/lib/piwik/site.rb +11 -16
- data/lib/piwik/user.rb +5 -8
- data/test/piwik_test.rb +16 -3
- metadata +3 -3
data/README.rdoc
CHANGED
|
@@ -46,6 +46,8 @@ RubyGems and the following gems (installed automatically if necessary):
|
|
|
46
46
|
sudo gem install autometal-piwik --source=http://gemcutter.org
|
|
47
47
|
|
|
48
48
|
== CHANGELOG:
|
|
49
|
+
* 0.4.2
|
|
50
|
+
Final fix for inconsistent API outputs caused by Rails using its own version of XmlSimple.
|
|
49
51
|
* 0.4.1
|
|
50
52
|
Quick fixed api result parsing in site creation. The API's responses are inconsistent, but I am not sure why.
|
|
51
53
|
* 0.4.0
|
data/autometal-piwik.gemspec
CHANGED
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |s|
|
|
4
4
|
s.name = %q{autometal-piwik}
|
|
5
|
-
s.version = "0.4.
|
|
5
|
+
s.version = "0.4.2"
|
|
6
6
|
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
8
8
|
s.authors = ["Achillefs Charmpilas"]
|
|
9
9
|
s.date = %q{2011-01-18}
|
|
10
10
|
s.description = %q{A simple Ruby client for the Piwik API. This gem is based on Rodrigo Tassinari de Oliveira's piwik gem (https://github.com/riopro/piwik). Since it hasn't been updated since 2008, I took the liberty to fork it, and finish it up.}
|
|
11
11
|
s.email = ["ac@humbuckercode.co.uk"]
|
|
12
|
-
s.extra_rdoc_files = ["
|
|
13
|
-
s.files = ["
|
|
14
|
-
s.homepage = %q{http://github.com/
|
|
12
|
+
s.extra_rdoc_files = ["License.txt", "Manifest.txt", "PostInstall.txt", "Todo.txt"]
|
|
13
|
+
s.files = ["License.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "Rakefile", "Todo.txt", "autometal-piwik.gemspec", "lib/piwik.rb", "lib/piwik/base.rb", "lib/piwik/site.rb", "lib/piwik/trackable.rb", "lib/piwik/user.rb", "script/console", "script/destroy", "script/generate", "script/txt2html", "setup.rb", "test/files/config/piwik.yml", "test/piwik_test.rb", "test/test_helper.rb"]
|
|
14
|
+
s.homepage = %q{http://github.com/Achillefs/tree/master}
|
|
15
15
|
s.post_install_message = %q{
|
|
16
16
|
For more information on piwik, see http://piwik.rubyforge.org or
|
|
17
17
|
http://github.com/Achillefs/piwik/
|
|
@@ -30,20 +30,20 @@ http://github.com/Achillefs/piwik/
|
|
|
30
30
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
31
31
|
s.add_runtime_dependency(%q<activesupport>, [">= 2.3.8"])
|
|
32
32
|
s.add_runtime_dependency(%q<xml-simple>, [">= 1.0.11"])
|
|
33
|
-
s.add_runtime_dependency(%q<rest-client>, [">=
|
|
33
|
+
s.add_runtime_dependency(%q<rest-client>, [">= 1.6.1"])
|
|
34
34
|
s.add_development_dependency(%q<rubyforge>, [">= 2.0.4"])
|
|
35
35
|
s.add_development_dependency(%q<hoe>, [">= 2.6.2"])
|
|
36
36
|
else
|
|
37
37
|
s.add_dependency(%q<activesupport>, [">= 2.3.8"])
|
|
38
38
|
s.add_dependency(%q<xml-simple>, [">= 1.0.11"])
|
|
39
|
-
s.add_dependency(%q<rest-client>, [">=
|
|
39
|
+
s.add_dependency(%q<rest-client>, [">= 1.6.1"])
|
|
40
40
|
s.add_dependency(%q<rubyforge>, [">= 2.0.4"])
|
|
41
41
|
s.add_dependency(%q<hoe>, [">= 2.6.2"])
|
|
42
42
|
end
|
|
43
43
|
else
|
|
44
44
|
s.add_dependency(%q<activesupport>, [">= 2.3.8"])
|
|
45
45
|
s.add_dependency(%q<xml-simple>, [">= 1.0.11"])
|
|
46
|
-
s.add_dependency(%q<rest-client>, [">=
|
|
46
|
+
s.add_dependency(%q<rest-client>, [">= 1.6.1"])
|
|
47
47
|
s.add_dependency(%q<rubyforge>, [">= 2.0.4"])
|
|
48
48
|
s.add_dependency(%q<hoe>, [">= 2.6.2"])
|
|
49
49
|
end
|
data/lib/piwik.rb
CHANGED
data/lib/piwik/base.rb
CHANGED
|
@@ -22,7 +22,16 @@ module Piwik
|
|
|
22
22
|
piwik_url:
|
|
23
23
|
auth_token:
|
|
24
24
|
EOF
|
|
25
|
-
|
|
25
|
+
=begin rdoc
|
|
26
|
+
This is required to normalize the API responses when the Rails XmlSimple version is used
|
|
27
|
+
=end
|
|
28
|
+
def self.parse_xml xml
|
|
29
|
+
result = XmlSimple.xml_in(xml, {'ForceArray' => false})
|
|
30
|
+
result = result['result'] if result['result']
|
|
31
|
+
result
|
|
32
|
+
end
|
|
33
|
+
def parse_xml xml; self.class.parse_xml xml; end
|
|
34
|
+
|
|
26
35
|
private
|
|
27
36
|
# Calls the supplied Piwik API method, with the supplied parameters.
|
|
28
37
|
#
|
data/lib/piwik/site.rb
CHANGED
|
@@ -63,13 +63,8 @@ module Piwik
|
|
|
63
63
|
raise ArgumentError, "Name can not be blank" if name.blank?
|
|
64
64
|
raise ArgumentError, "Main URL can not be blank" if main_url.blank?
|
|
65
65
|
xml = call('SitesManager.addSite', :siteName => name, :urls => main_url)
|
|
66
|
-
result =
|
|
67
|
-
|
|
68
|
-
when "Hash"
|
|
69
|
-
@id = result["result"].to_i
|
|
70
|
-
else
|
|
71
|
-
@id = result.to_i
|
|
72
|
-
end
|
|
66
|
+
result = parse_xml(xml)
|
|
67
|
+
@id = result.to_i
|
|
73
68
|
@created_at = Time.current
|
|
74
69
|
id && id > 0 ? true : false
|
|
75
70
|
end
|
|
@@ -82,7 +77,7 @@ module Piwik
|
|
|
82
77
|
raise ArgumentError, "Name can not be blank" if name.blank?
|
|
83
78
|
raise ArgumentError, "Main URL can not be blank" if main_url.blank?
|
|
84
79
|
xml = call('SitesManager.updateSite', :idSite => id, :siteName => name, :urls => main_url)
|
|
85
|
-
result =
|
|
80
|
+
result = parse_xml(xml)
|
|
86
81
|
result['success'] ? true : false
|
|
87
82
|
end
|
|
88
83
|
|
|
@@ -96,7 +91,7 @@ module Piwik
|
|
|
96
91
|
def destroy
|
|
97
92
|
raise UnknownSite, "Site not existent in Piwik yet, call 'save' first" if new?
|
|
98
93
|
xml = call('SitesManager.deleteSite', :idSite => id)
|
|
99
|
-
result =
|
|
94
|
+
result = parse_xml(xml)
|
|
100
95
|
freeze
|
|
101
96
|
result['success'] ? true : false
|
|
102
97
|
end
|
|
@@ -132,7 +127,7 @@ module Piwik
|
|
|
132
127
|
def summary(period=:day, date=Date.today)
|
|
133
128
|
raise UnknownSite, "Site not existent in Piwik yet, call 'save' first" if new?
|
|
134
129
|
xml = call('VisitsSummary.get', :idSite => id, :period => period, :date => date)
|
|
135
|
-
result =
|
|
130
|
+
result = parse_xml(xml)
|
|
136
131
|
{
|
|
137
132
|
:visits => result['nb_visits'].to_i,
|
|
138
133
|
:unique_visitors => result['nb_uniq_visitors'].to_i,
|
|
@@ -153,7 +148,7 @@ module Piwik
|
|
|
153
148
|
def visits(period=:day, date=Date.today)
|
|
154
149
|
raise UnknownSite, "Site not existent in Piwik yet, call 'save' first" if new?
|
|
155
150
|
xml = call('VisitsSummary.getVisits', :idSite => id, :period => period, :date => date)
|
|
156
|
-
result =
|
|
151
|
+
result = parse_xml(xml)
|
|
157
152
|
result.to_i
|
|
158
153
|
end
|
|
159
154
|
|
|
@@ -167,7 +162,7 @@ module Piwik
|
|
|
167
162
|
def unique_visitors(period=:day, date=Date.today)
|
|
168
163
|
raise UnknownSite, "Site not existent in Piwik yet, call 'save' first" if new?
|
|
169
164
|
xml = call('VisitsSummary.getUniqueVisitors', :idSite => id, :period => period, :date => date)
|
|
170
|
-
result =
|
|
165
|
+
result = parse_xml(xml)
|
|
171
166
|
result.to_i
|
|
172
167
|
end
|
|
173
168
|
|
|
@@ -181,7 +176,7 @@ module Piwik
|
|
|
181
176
|
def actions(period=:day, date=Date.today)
|
|
182
177
|
raise UnknownSite, "Site not existent in Piwik yet, call 'save' first" if new?
|
|
183
178
|
xml = call('VisitsSummary.getActions', :idSite => id, :period => period, :date => date)
|
|
184
|
-
result =
|
|
179
|
+
result = parse_xml(xml)
|
|
185
180
|
result.to_i
|
|
186
181
|
end
|
|
187
182
|
alias_method :pageviews, :actions
|
|
@@ -204,7 +199,7 @@ module Piwik
|
|
|
204
199
|
def give_access_to(access, login)
|
|
205
200
|
raise UnknownSite, "Site not existent in Piwik yet, call 'save' first" if new?
|
|
206
201
|
xml = call('UsersManager.setUserAccess', :idSites => id, :access => access.to_s, :userLogin => login.to_s)
|
|
207
|
-
result =
|
|
202
|
+
result = parse_xml(xml)
|
|
208
203
|
result['success'] ? true : false
|
|
209
204
|
end
|
|
210
205
|
|
|
@@ -214,12 +209,12 @@ module Piwik
|
|
|
214
209
|
# Equivalent Piwik API call: SitesManager.getSiteFromId (idSite)
|
|
215
210
|
def self.get_site_attributes_by_id(site_id, piwik_url, auth_token)
|
|
216
211
|
xml = call('SitesManager.getSiteFromId', {:idSite => site_id}, piwik_url, auth_token)
|
|
217
|
-
result =
|
|
212
|
+
result = parse_xml(xml)
|
|
218
213
|
attributes = {
|
|
219
214
|
:id => result['row']['idsite'].to_i,
|
|
220
215
|
:name => result['row']['name'],
|
|
221
216
|
:main_url => result['row']['main_url'],
|
|
222
|
-
:created_at => Time.parse(result['row']['ts_created'])
|
|
217
|
+
:created_at => Time.parse(result['row']['ts_created'])
|
|
223
218
|
}
|
|
224
219
|
attributes
|
|
225
220
|
end
|
data/lib/piwik/user.rb
CHANGED
|
@@ -48,7 +48,7 @@ module Piwik
|
|
|
48
48
|
user_alias = login if user_alias.blank?
|
|
49
49
|
|
|
50
50
|
xml = call('UsersManager.addUser', :userLogin => login, :password => password, :email => email, :alias => user_alias)
|
|
51
|
-
result =
|
|
51
|
+
result = parse_xml(xml)
|
|
52
52
|
@created_at = Time.current
|
|
53
53
|
if result["success"]
|
|
54
54
|
result["success"]["message"] == "ok" ? true : false
|
|
@@ -68,7 +68,7 @@ module Piwik
|
|
|
68
68
|
user_alias = login if user_alias.blank?
|
|
69
69
|
|
|
70
70
|
xml = call('UsersManager.updateUser', :userLogin => login, :password => password, :email => email, :alias => user_alias)
|
|
71
|
-
result =
|
|
71
|
+
result = parse_xml(xml)
|
|
72
72
|
result['success'] ? true : false
|
|
73
73
|
end
|
|
74
74
|
|
|
@@ -78,7 +78,7 @@ module Piwik
|
|
|
78
78
|
def destroy
|
|
79
79
|
raise UnknownUser, "User not existent in Piwik yet, call 'save' first" if new?
|
|
80
80
|
xml = call('UsersManager.deleteUser', :userLogin => login)
|
|
81
|
-
result =
|
|
81
|
+
result = parse_xml(xml)
|
|
82
82
|
freeze
|
|
83
83
|
result['success'] ? true : false
|
|
84
84
|
end
|
|
@@ -119,15 +119,12 @@ module Piwik
|
|
|
119
119
|
# Equivalent Piwik API call: UsersManager.getUser (userLogin)
|
|
120
120
|
def self.get_user_attributes_by_login(user_login, piwik_url, auth_token)
|
|
121
121
|
xml = call('UsersManager.getUser', {:userLogin => user_login}, piwik_url, auth_token)
|
|
122
|
-
result =
|
|
123
|
-
|
|
124
|
-
puts result.inspect
|
|
125
|
-
|
|
122
|
+
result = parse_xml(xml)
|
|
126
123
|
attributes = {
|
|
127
124
|
:login => result['row']['login'],
|
|
128
125
|
:user_alias => result['row']['alias'],
|
|
129
126
|
:email => result['row']['email'],
|
|
130
|
-
:created_at => Time.parse(result['row']['date_registered'])
|
|
127
|
+
:created_at => Time.parse(result['row']['date_registered'])
|
|
131
128
|
}
|
|
132
129
|
attributes
|
|
133
130
|
end
|
data/test/piwik_test.rb
CHANGED
|
@@ -17,12 +17,18 @@ class PiwikTest < Test::Unit::TestCase
|
|
|
17
17
|
assert_equal @domain, @site.main_url
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
def
|
|
20
|
+
def test_can_save_load_update_and_destroy_site
|
|
21
21
|
assert_equal nil, @site.id
|
|
22
22
|
@site.save
|
|
23
23
|
assert_not_equal 0, @site.id
|
|
24
24
|
assert_not_equal nil, @site.id
|
|
25
|
-
|
|
25
|
+
reloaded = Piwik::Site.load(@site.id)
|
|
26
|
+
assert_equal reloaded.id, @site.id
|
|
27
|
+
reloaded.name = "Changed Name"
|
|
28
|
+
reloaded.update
|
|
29
|
+
reloaded = Piwik::Site.load(@site.id)
|
|
30
|
+
assert_equal "Changed Name", reloaded.name
|
|
31
|
+
assert_equal true, reloaded.destroy
|
|
26
32
|
end
|
|
27
33
|
|
|
28
34
|
def test_can_instantiate_user
|
|
@@ -32,8 +38,15 @@ class PiwikTest < Test::Unit::TestCase
|
|
|
32
38
|
assert_equal @user_alias, @user.user_alias
|
|
33
39
|
end
|
|
34
40
|
|
|
35
|
-
def
|
|
41
|
+
def test_can_save_load_update_and_destroy_user
|
|
36
42
|
@user.save
|
|
43
|
+
reloaded = Piwik::User.load(@user.login)
|
|
44
|
+
assert_equal reloaded.login, @user.login
|
|
45
|
+
reloaded.email = "changed@mail.com"
|
|
46
|
+
reloaded.password = "changeme"
|
|
47
|
+
reloaded.update
|
|
48
|
+
reloaded = Piwik::User.load(@user.login)
|
|
49
|
+
assert_equal"changed@mail.com", reloaded.email
|
|
37
50
|
assert_equal true, @user.destroy
|
|
38
51
|
end
|
|
39
52
|
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: autometal-piwik
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 11
|
|
5
5
|
prerelease:
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 4
|
|
9
|
-
-
|
|
10
|
-
version: 0.4.
|
|
9
|
+
- 2
|
|
10
|
+
version: 0.4.2
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Achillefs Charmpilas
|