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.
@@ -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
@@ -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.0"
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 = ["History.txt", "License.txt", "Manifest.txt", "PostInstall.txt", "Todo.txt"]
13
- s.files = ["History.txt", "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/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/riopro/Achillefs/tree/master}
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>, [">= 0.5.1"])
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>, [">= 0.5.1"])
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>, [">= 0.5.1"])
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
@@ -6,5 +6,5 @@ require 'piwik/site.rb'
6
6
  require 'piwik/user.rb'
7
7
  require 'piwik/trackable.rb'
8
8
  module Piwik
9
- VERSION = "0.4.1"
9
+ VERSION = "0.4.2"
10
10
  end
@@ -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
  #
@@ -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 = XmlSimple.xml_in(xml, {'ForceArray' => false})
67
- case result.class.to_s
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 = XmlSimple.xml_in(xml, {'ForceArray' => false})
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 = XmlSimple.xml_in(xml, {'ForceArray' => false})
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 = XmlSimple.xml_in(xml, {'ForceArray' => false})
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 = XmlSimple.xml_in(xml, {'ForceArray' => false})
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 = XmlSimple.xml_in(xml, {'ForceArray' => false})
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 = XmlSimple.xml_in(xml, {'ForceArray' => false})
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 = XmlSimple.xml_in(xml, {'ForceArray' => false})
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 = XmlSimple.xml_in(xml, {'ForceArray' => false})
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
@@ -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 = XmlSimple.xml_in(xml, {'ForceArray' => false})
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 = XmlSimple.xml_in(xml, {'ForceArray' => false})
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 = XmlSimple.xml_in(xml, {'ForceArray' => false})
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 = XmlSimple.xml_in(xml, {'ForceArray' => false})
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
@@ -17,12 +17,18 @@ class PiwikTest < Test::Unit::TestCase
17
17
  assert_equal @domain, @site.main_url
18
18
  end
19
19
 
20
- def test_can_save_and_destroy_site
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
- assert_equal true, @site.destroy
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 test_can_save_and_destroy_user
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: 13
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 1
10
- version: 0.4.1
9
+ - 2
10
+ version: 0.4.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Achillefs Charmpilas