autometal-piwik 0.6.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (213) hide show
  1. data/.gitignore +8 -0
  2. data/.travis.yml +10 -0
  3. data/Gemfile +4 -0
  4. data/License.txt +22 -0
  5. data/README.md +80 -76
  6. data/Rakefile +1 -33
  7. data/autometal-piwik.gemspec +19 -54
  8. data/bin/piwik-console +31 -0
  9. data/lib/piwik.rb +17 -5
  10. data/lib/piwik/actions.rb +59 -0
  11. data/lib/piwik/annotations.rb +41 -0
  12. data/lib/piwik/api.rb +21 -0
  13. data/lib/piwik/api_module.rb +97 -0
  14. data/lib/piwik/api_response.rb +6 -0
  15. data/lib/piwik/api_scope.rb +32 -0
  16. data/lib/piwik/base.rb +156 -69
  17. data/lib/piwik/custom_variables.rb +8 -0
  18. data/lib/piwik/data_methods.rb +54 -0
  19. data/lib/piwik/example_api.rb +15 -0
  20. data/lib/piwik/goals.rb +40 -0
  21. data/lib/piwik/image_graph.rb +7 -0
  22. data/lib/piwik/languages_manager.rb +13 -0
  23. data/lib/piwik/live.rb +8 -0
  24. data/lib/piwik/metadata_api.rb +21 -0
  25. data/lib/piwik/mobile_messaging.rb +16 -0
  26. data/lib/piwik/multi_sites.rb +8 -0
  27. data/lib/piwik/pdf_reports.rb +12 -0
  28. data/lib/piwik/provider.rb +7 -0
  29. data/lib/piwik/referers.rb +62 -0
  30. data/lib/piwik/seo.rb +7 -0
  31. data/lib/piwik/site.rb +50 -250
  32. data/lib/piwik/sites_manager.rb +70 -0
  33. data/lib/piwik/transitions.rb +28 -0
  34. data/lib/piwik/typecast.rb +19 -0
  35. data/lib/piwik/user.rb +7 -126
  36. data/lib/piwik/user_country.rb +12 -0
  37. data/lib/piwik/user_settings.rb +16 -0
  38. data/lib/piwik/users_manager.rb +52 -0
  39. data/lib/piwik/version.rb +3 -0
  40. data/lib/piwik/visit_frequency.rb +7 -0
  41. data/lib/piwik/visit_time.rb +9 -0
  42. data/lib/piwik/visitor_interest.rb +10 -0
  43. data/lib/piwik/visits_summary.rb +53 -0
  44. data/lib/string.rb +11 -0
  45. data/spec/actions_spec.rb +19 -0
  46. data/spec/api_spec.rb +12 -0
  47. data/spec/custom_variables_spec.rb +11 -0
  48. data/spec/files/API.get.xml +28 -0
  49. data/spec/files/API.getDefaultMetricTranslations.xml +39 -0
  50. data/spec/files/API.getDefaultMetrics.xml +8 -0
  51. data/spec/files/API.getDefaultMetricsDocumentation.xml +15 -0
  52. data/spec/files/API.getDefaultProcessedMetrics.xml +9 -0
  53. data/spec/files/API.getHeaderLogoUrl.xml +2 -0
  54. data/spec/files/API.getLogoUrl.xml +2 -0
  55. data/spec/files/API.getMetadata.xml +42 -0
  56. data/spec/files/API.getPiwikVersion.xml +2 -0
  57. data/spec/files/API.getProcessedReport.xml +1227 -0
  58. data/spec/files/API.getReportMetadata.xml +1347 -0
  59. data/spec/files/API.getRowEvolution.xml +4 -0
  60. data/spec/files/API.getSegmentsMetadata.xml +365 -0
  61. data/spec/files/API.getSettings.xml +7 -0
  62. data/spec/files/Actions.GetPageUrl.xml +20 -0
  63. data/spec/files/Actions.get.xml +11 -0
  64. data/spec/files/Actions.getDownloads.xml +19 -0
  65. data/spec/files/Actions.getEntryPageTitles.xml +88 -0
  66. data/spec/files/Actions.getEntryPageUrls.xml +93 -0
  67. data/spec/files/Actions.getExitPageTitles.xml +88 -0
  68. data/spec/files/Actions.getExitPageUrls.xml +93 -0
  69. data/spec/files/Actions.getOutlink.xml +12 -0
  70. data/spec/files/Actions.getOutlinks.xml +100 -0
  71. data/spec/files/Actions.getPageTitles.xml +134 -0
  72. data/spec/files/Actions.getPageUrls.xml +129 -0
  73. data/spec/files/Annotations.add.xml +11 -0
  74. data/spec/files/Annotations.getAll.xml +34 -0
  75. data/spec/files/Annotations.getAnnotationCountForDates.xml +12 -0
  76. data/spec/files/CustomVariables.getCustomVariables.xml +32 -0
  77. data/spec/files/ExampleAPI.getAnswerToLife.xml +2 -0
  78. data/spec/files/ExampleAPI.getCompetitionDatatable.xml +12 -0
  79. data/spec/files/ExampleAPI.getDescriptionArray.xml +8 -0
  80. data/spec/files/ExampleAPI.getMoreInformationAnswerToLife.xml +2 -0
  81. data/spec/files/ExampleAPI.getMultiArray.xml +22 -0
  82. data/spec/files/ExampleAPI.getNull.xml +4 -0
  83. data/spec/files/ExampleAPI.getObject.xml +4 -0
  84. data/spec/files/ExampleAPI.getPiwikVersion.xml +2 -0
  85. data/spec/files/ExampleAPI.getSum.xml +2 -0
  86. data/spec/files/Goals.get.xml +7 -0
  87. data/spec/files/Goals.getDaysToConversion.xml +59 -0
  88. data/spec/files/Goals.getGoals.xml +39 -0
  89. data/spec/files/Goals.getVisitsUntilConversion.xml +55 -0
  90. data/spec/files/ImageGraph.get.xml +0 -0
  91. data/spec/files/LanguagesManager.getAvailableLanguageNames.xml +233 -0
  92. data/spec/files/LanguagesManager.getAvailableLanguages.xml +49 -0
  93. data/spec/files/LanguagesManager.isLanguageAvailable.xml +2 -0
  94. data/spec/files/Live.getCounters.xml +8 -0
  95. data/spec/files/Live.getLastVisitsDetails.xml +768 -0
  96. data/spec/files/MultiSites.getAll.xml +2 -0
  97. data/spec/files/MultiSites.getOne.xml +11 -0
  98. data/spec/files/PDFReports.getReports.xml +35 -0
  99. data/spec/files/Provider.getProvider.xml +113 -0
  100. data/spec/files/Referers.getCampaigns.xml +2 -0
  101. data/spec/files/Referers.getKeywords.xml +145 -0
  102. data/spec/files/Referers.getKeywordsForPageUrl.xml +8 -0
  103. data/spec/files/Referers.getNumberOfDistinctCampaigns.xml +2 -0
  104. data/spec/files/Referers.getNumberOfDistinctKeywords.xml +2 -0
  105. data/spec/files/Referers.getNumberOfDistinctSearchEngines.xml +2 -0
  106. data/spec/files/Referers.getNumberOfDistinctWebsites.xml +2 -0
  107. data/spec/files/Referers.getNumberOfDistinctWebsitesUrls.xml +2 -0
  108. data/spec/files/Referers.getRefererType.xml +82 -0
  109. data/spec/files/Referers.getSearchEngines.xml +112 -0
  110. data/spec/files/Referers.getSocials.xml +2 -0
  111. data/spec/files/Referers.getUrlsForSocial.xml +2 -0
  112. data/spec/files/Referers.getWebsites.xml +386 -0
  113. data/spec/files/SEO.getRank.xml +33 -0
  114. data/spec/files/SitesManager.addSite.xml +1 -0
  115. data/spec/files/SitesManager.getAllSites.xml +63 -0
  116. data/spec/files/SitesManager.getAllSitesId.xml +4 -0
  117. data/spec/files/SitesManager.getCurrencyList.xml +165 -0
  118. data/spec/files/SitesManager.getCurrencySymbols.xml +165 -0
  119. data/spec/files/SitesManager.getDefaultCurrency.xml +2 -0
  120. data/spec/files/SitesManager.getDefaultTimezone.xml +2 -0
  121. data/spec/files/SitesManager.getExcludedIpsGlobal.xml +2 -0
  122. data/spec/files/SitesManager.getExcludedQueryParametersGlobal.xml +2 -0
  123. data/spec/files/SitesManager.getJavascriptTag.xml +14 -0
  124. data/spec/files/SitesManager.getSearchCategoryParametersGlobal.xml +2 -0
  125. data/spec/files/SitesManager.getSearchKeywordParametersGlobal.xml +2 -0
  126. data/spec/files/SitesManager.getSiteFromId.xml +18 -0
  127. data/spec/files/SitesManager.getSiteUrlsFromId.xml +4 -0
  128. data/spec/files/SitesManager.getSitesGroups.xml +4 -0
  129. data/spec/files/SitesManager.getSitesIdFromSiteUrl.xml +2 -0
  130. data/spec/files/SitesManager.getSitesIdWithAdminAccess.xml +4 -0
  131. data/spec/files/SitesManager.getSitesIdWithAtLeastViewAccess.xml +4 -0
  132. data/spec/files/SitesManager.getSitesIdWithViewAccess.xml +2 -0
  133. data/spec/files/SitesManager.getSitesIdWithVisits.xml +2 -0
  134. data/spec/files/SitesManager.getSitesWithAdminAccess.xml +63 -0
  135. data/spec/files/SitesManager.getSitesWithAtLeastViewAccess.xml +18 -0
  136. data/spec/files/SitesManager.getSitesWithViewAccess.xml +2 -0
  137. data/spec/files/SitesManager.getTimezonesList.xml +509 -0
  138. data/spec/files/SitesManager.getUniqueSiteTimezones.xml +4 -0
  139. data/spec/files/Transitions.getTranslations.xml +37 -0
  140. data/spec/files/UserCountry.getCity.xml +221 -0
  141. data/spec/files/UserCountry.getContinent.xml +185 -0
  142. data/spec/files/UserCountry.getCountry.xml +154 -0
  143. data/spec/files/UserCountry.getLocationFromIP.xml +17 -0
  144. data/spec/files/UserCountry.getNumberOfDistinctCountries.xml +2 -0
  145. data/spec/files/UserCountry.getRegion.xml +269 -0
  146. data/spec/files/UserSettings.getBrowser.xml +47 -0
  147. data/spec/files/UserSettings.getBrowserType.xml +58 -0
  148. data/spec/files/UserSettings.getBrowserVersion.xml +39 -0
  149. data/spec/files/UserSettings.getConfiguration.xml +43 -0
  150. data/spec/files/UserSettings.getMobileVsDesktop.xml +36 -0
  151. data/spec/files/UserSettings.getOS.xml +27 -0
  152. data/spec/files/UserSettings.getOSFamily.xml +102 -0
  153. data/spec/files/UserSettings.getPlugin.xml +63 -0
  154. data/spec/files/UserSettings.getResolution.xml +33 -0
  155. data/spec/files/UserSettings.getWideScreen.xml +47 -0
  156. data/spec/files/UsersManager.getSitesAccessFromUser.xml +4 -0
  157. data/spec/files/UsersManager.getUser.xml +10 -0
  158. data/spec/files/UsersManager.getUsers.xml +11 -0
  159. data/spec/files/UsersManager.getUsersAccessFromSite.xml +2 -0
  160. data/spec/files/UsersManager.getUsersLogin.xml +4 -0
  161. data/spec/files/UsersManager.getUsersSitesFromAccess.xml +2 -0
  162. data/spec/files/UsersManager.getUsersWithSiteAccess.xml +2 -0
  163. data/spec/files/UsersManager.userExists.xml +2 -0
  164. data/spec/files/VisitFrequency.get.xml +13 -0
  165. data/spec/files/VisitTime.getByDayOfWeek.xml +43 -0
  166. data/spec/files/VisitTime.getVisitInformationPerLocalTime.xml +83 -0
  167. data/spec/files/VisitTime.getVisitInformationPerServerTime.xml +87 -0
  168. data/spec/files/VisitorInterest.getNumberOfVisitsByDaysSinceLast.xml +63 -0
  169. data/spec/files/VisitorInterest.getNumberOfVisitsByVisitCount.xml +73 -0
  170. data/spec/files/VisitorInterest.getNumberOfVisitsPerPage.xml +43 -0
  171. data/spec/files/VisitorInterest.getNumberOfVisitsPerVisitDuration.xml +43 -0
  172. data/spec/files/VisitsSummary.get.xml +13 -0
  173. data/spec/files/VisitsSummary.getActions.xml +2 -0
  174. data/spec/files/VisitsSummary.getBounceCount.xml +2 -0
  175. data/spec/files/VisitsSummary.getMaxActions.xml +2 -0
  176. data/spec/files/VisitsSummary.getSumVisitsLength.xml +2 -0
  177. data/spec/files/VisitsSummary.getSumVisitsLengthPretty.xml +2 -0
  178. data/spec/files/VisitsSummary.getUniqueVisitors.xml +2 -0
  179. data/spec/files/VisitsSummary.getVisits.xml +2 -0
  180. data/spec/files/VisitsSummary.getVisitsConverted.xml +2 -0
  181. data/spec/files/failure.xml +3 -0
  182. data/spec/files/success.xml +3 -0
  183. data/spec/goals_spec.rb +14 -0
  184. data/spec/image_graph_spec.rb +12 -0
  185. data/spec/languages_manager_spec.rb +13 -0
  186. data/spec/live_spec.rb +13 -0
  187. data/spec/mobile_messaging_spec.rb +10 -0
  188. data/spec/multi_sites_spec.rb +11 -0
  189. data/spec/pdf_reports_spec.rb +11 -0
  190. data/spec/provider_spec.rb +12 -0
  191. data/spec/referers_spec.rb +46 -0
  192. data/spec/seo_spec.rb +15 -0
  193. data/spec/site_spec.rb +104 -0
  194. data/spec/sites_manager_spec.rb +30 -0
  195. data/spec/spec_helper.rb +76 -0
  196. data/spec/transitions_spec.rb +13 -0
  197. data/spec/user_country_spec.rb +33 -0
  198. data/spec/user_settings_spec.rb +50 -0
  199. data/spec/user_spec.rb +32 -0
  200. data/spec/users_manager_spec.rb +26 -0
  201. data/spec/visit_frequency_spec.rb +11 -0
  202. data/spec/visit_time_spec.rb +22 -0
  203. data/spec/visitor_interest_spec.rb +30 -0
  204. data/spec/visits_summary_spec.rb +47 -0
  205. metadata +426 -99
  206. data/.document +0 -5
  207. data/LICENSE +0 -7
  208. data/VERSION +0 -1
  209. data/lib/piwik/trackable.rb +0 -80
  210. data/script/console +0 -10
  211. data/test/files/config/example_piwik.yml +0 -4
  212. data/test/piwik_test.rb +0 -128
  213. data/test/test_helper.rb +0 -12
@@ -0,0 +1,8 @@
1
+ pkg/*
2
+ nbproject
3
+ *.tmproj
4
+ .rvmrc
5
+ .rspec
6
+ .elscripto
7
+ Gemfile.lock
8
+ .DS_Store
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+ rvm:
3
+ - "1.8.7"
4
+ - "1.9.2"
5
+ - "1.9.3"
6
+ - jruby-18mode
7
+ - jruby-19mode
8
+ - rbx-18mode
9
+ - rbx-19mode
10
+ script: bundle exec rspec spec
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in autometal-piwik.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Achilles Charmpilas
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,89 +1,93 @@
1
- # autometal-piwik
2
- * https://github.com/Achillefs/autometal-piwik
3
- * http://humbuckercode.co.uk/licks/gems/piwik
1
+ # Autometal-Piwik [![Build Status](https://travis-ci.org/Achillefs/autometal-piwik.png?branch=master)](https://travis-ci.org/Achillefs/autometal-piwik)
4
2
 
5
- ## DESCRIPTION:
6
- 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.
3
+ Version 1.0.0 is a ground-up rewrite of the [autometal-piwik gem](https://github.com/Achillefs/autometal-piwik/tree/v0.6.1). It completely covers the Piwik API and should be easily extendable by users. We made no assumptions on how you wanna use your data, so we closely mirrored Piwik's API structure even if it looks kinda weird to a modern rubyist.
7
4
 
8
- ## FEATURES/PROBLEMS:
5
+ We will also implement an extended `Piwik::Site` wrapper class that will give you ruby-friendly access to a lot of the data in a way we think is sane, but it will be up to you which interface you want to use.
9
6
 
10
- * Object-oriented interface to the Piwik API;
11
- * For now, only a small subset of the API is implemented (only basic actions)
7
+ **Please note that this release is not backward compatible. People using an older version of this gem should stick with version 0.6.1**
12
8
 
13
- ## SYNOPSIS:
14
- Piwik is an open source web analytics software, written in PHP. It provides an
15
- extensive REST-like API, and this gem aims to be a simple Ruby wrapper to access
16
- this API in a Ruby-friendly way. For example:
17
-
18
- require 'rubygems'
19
- require 'piwik'
20
- Piwik.auth_token = "i need to configure simple-piwik with my auth_token here"
21
- Piwik.piwik_url = "http://piwik.mypiwikdomain.org"
22
- site = Piwik::Site.load(1)
23
- => #<Piwik::Site:0xb74bf994 @name="Example.com", @config={:auth_token=>"some_auth_key", :piwik_url=>"http://your.piwi.install"}, @id=1, @main_url="http://www.example.com", @created_at=Tue Jul 15 18:55:40 -0300 2008>
24
- site.pageviews(:month, Date.today)
25
- => 3002378
26
- user = Piwik::User.load(1, 'http://piwik.mypiwikdomain.org', 'my_auth_key')
27
- => #<Piwik::User:0xb66bf544 @login="Example.com", @config={:auth_token=>"some_auth_key", :piwik_url=>"http://your.piwi.install"}, @id=1, @main_url="http://www.example.com", @created_at=Tue Jul 15 18:55:40 -0300 2008>
28
-
29
- Configuring with initializer config/initializers/simple-piwik.rb :
9
+ ## Features
10
+ * Simple ruby-friendly api
11
+ * Full API implementation
12
+ * `piwik-terminal` binary, allowing shell access.
13
+ * Works on MRI Jruby and RBX 1.8.* and 1.9.*
14
+ * Tested
30
15
 
31
- if Rails.env.production?
32
- Piwik.piwik_url # "http://piwik.mypiwikdomain.org"
33
- Piwik.auth_token # "2ad590308b1efa590a9a43ad86d3ac1s"
34
- elsif Rails.env.development?
35
- #this is currently set to the same as production
36
- Piwik.piwik_url # "http://piwik.mypiwikdomain.org"
37
- Piwik.auth_token # "2ad590308b1efa590a9a43ad86d3ac1s"
38
- end
16
+ ## Installation
17
+
18
+ Add this line to your application's Gemfile:
19
+
20
+ gem 'autometal-piwik', :require => 'piwik'
21
+
22
+ And then execute:
23
+
24
+ $ bundle
25
+
26
+ Or install it yourself as:
39
27
 
40
- * Piwik website (http://piwik.org)
41
- * Piwik API reference (http://dev.piwik.org/trac/wiki/API/Reference)
28
+ $ gem install autometal-piwik
42
29
 
43
- ## REQUIREMENTS:
30
+ ## Usage
31
+ ### Use the binary
32
+ Open an extended irb session to a Piwik installation:
44
33
 
45
- activesupport, rest-client, json
34
+ $ piwik-console -u http://demo.piwik.org -t anonymous
35
+ :001 > Piwik::Site.load 7
36
+ => #<Piwik::Site[snip]>
46
37
 
47
- ## INSTALL:
38
+ ### Initialize it
39
+ Unless you are using the binary, or if you are using the binary without credentials, you need to specify a url and a security token.
48
40
 
49
- gem install simple-piwik
41
+ Piwik::PIWIK_URL = 'http://demo.piwik.org'
42
+ Piwik::PIWIK_TOKEN = 'anonymous'
50
43
 
51
- ## CHANGELOG:
52
- * 0.6.2
53
- New methods (pulled from [yehezkielbs' fork](https://github.com/Achillefs/autometal-piwik/pull/6))
54
- * `Site#bounce_count`
55
- * `Site#sum_visits_length`
56
- * `Site#website_referrers`
44
+ This can take place in your script or a rails initializer or whatever.
45
+
46
+ ### Use the wrapper class
47
+ Fastest way to get to know the client is by using the Piwik::Site wrapper class:
57
48
 
58
- Plus a couple of fixes by chaddjohnson
59
- * 0.6.0
60
- Merged a few updates from [Mihael's fork](https://github.com/Achillefs/autometal-piwik/pull/5)
61
- Gem now works with Rails 3.x, and the credentials specification strategy changed slightly
62
-
63
- * 0.4.2
64
- Final fix for inconsistent API outputs caused by Rails using its own version of XmlSimple.
65
-
66
- * 0.4.1
67
- Quick fixed api result parsing in site creation. The API's responses are inconsistent, but I am not sure why.
68
-
69
- * 0.4.0
70
- Added Piwik::Trackable controller mixing, pretty much swiped off of halfdan's piwik analytics project (https://github.com/halfdan/piwik_analytics/). The version included in this plugin is not suitable for application tracking, and is instead geared towards tracking multiple websites stored as ActiveRecord models
71
-
72
- * 0.3.0
73
- UsersManager CRUD implementation, with tests
74
-
75
- * 0.2.3
76
- Started adding some tests
77
-
78
- * 0.2.0
79
- Reworked plugin to also look for a rails config file called piwik.yml, and not just the .piwik user prefs file.
80
-
81
- * 0.0.2 2008-07-22 (riopro)
82
- Added specs for existing API methods
83
- Created RubyForge project at http://rubyforge.org/projects/piwik/
84
-
85
- * 0.0.1 2008-07-21 (riopro)
86
- Initial release
49
+ site = Piwik::Site.load(7)
50
+ => #<Piwik::Site[snip]>
51
+
52
+ site.annotations.all
53
+ => #<Piwik::Annotations[snip]>
54
+ site.annotations.add(:date => 'today', :starred => 1)
55
+ => Piwik::ApiError: Please specify a value for 'note'.
56
+ site.annotations.add(:note => 'meep', :date => 'today', :starred => 1)
57
+ => #<Piwik::Annotations[snip]>
58
+
59
+ summary = site.actions.summary
60
+ => #<Piwik::Actions[snip]>
61
+ summary.nb_pageviews
62
+ => 236
63
+ summary.nb_uniq_pageviews
64
+ => 170
65
+
66
+ Not all methods are implemented on the wrapper class, although if you find yourself adding methods, please submit a pull request.
67
+ You can have a look at [site_spec.rb](https://github.com/Achillefs/autometal-piwik/blob/master/spec/site_spec.rb) for an up-to-date list of available methods.
68
+
69
+ ### Use the 'native' API
70
+ This client also allows you to interact with the API the way its designers wanted it. Any method in the [api reference](http://piwik.org/docs/analytics-api/reference/) is made available almost verbatim:
71
+
72
+ # http://piwik.org/docs/analytics-api/reference/#Actions
73
+ # Actions.getPageUrls (idSite, period, date, segment = '', expanded = '', idSubtable = '')
74
+ require 'rubygems'
75
+ require 'piwiker'
76
+ Piwik::PIWIK_URL = 'http://demo.piwik.org'
77
+ Piwik::PIWIK_TOKEN = 'anonymous'
78
+ Piwik::Actions.getPageUrls(:idSite => 7, :period => :day, :date => 'yesterday')
79
+ => #<Piwik::Actions::PageUrls @data=[snip]>
80
+
81
+ That last call is exactly the same as calling `site.actions.page_urls(:period => :day, :date => 'yesterday')`
82
+
83
+ It is probably apparent, but the second way gives you full access to everything, all you need is the API reference and you're off. If you are simply after displaying the basic analytics values for a site, the wrapper is probably the way to go.
84
+
85
+ For more information on Piwik and it’s API, see the [Piwik website](piwik.org) and the [Piwik API reference](http://piwik.org/docs/analytics-api/reference/).
86
+
87
+ ## Contributing
87
88
 
88
- ## LICENSE:
89
- The MIT License
89
+ 1. Fork it
90
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
91
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
92
+ 4. Push to the branch (`git push origin my-new-feature`)
93
+ 5. Create new Pull Request
data/Rakefile CHANGED
@@ -1,33 +1 @@
1
- require 'rubygems'
2
- require 'rake'
3
-
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "autometal-piwik"
8
- gem.summary = %Q{A ruby client for the Piwik API.}
9
- gem.description = %Q{Provides simple access to the Piwik API.}
10
- gem.email = "ac@humbuckercode.co.uk"
11
- gem.homepage = "https://github.com/Achillefs/autometal-piwik"
12
- gem.authors = ['Achillefs Charmpilas', 'mihael']
13
- gem.add_dependency "activesupport", ">= 3.0.9"
14
- gem.add_dependency "rest-client", ">= 1.6.1"
15
- gem.add_dependency "json", ">= 1.4.6"
16
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
- end
18
- rescue LoadError
19
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
20
- end
21
-
22
- require 'rake/testtask'
23
- Rake::TestTask.new(:test) do |test|
24
- test.libs << 'lib' << 'test'
25
- test.pattern = 'test/**/*_test.rb'
26
- test.verbose = true
27
- end
28
-
29
- task :test => :check_dependencies
30
-
31
- task :default => :test
32
-
33
-
1
+ require "bundler/gem_tasks"
@@ -1,59 +1,24 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
1
  # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'piwik/version'
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{autometal-piwik}
8
- s.version = "0.6.2"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Achillefs Charmpilas", "mihael"]
12
- s.date = %q{2013-01-05}
13
- s.description = %q{Provides simple access to the Piwik API.}
14
- s.email = %q{ac@humbuckercode.co.uk}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.md"
18
- ]
19
- s.files = [
20
- ".document",
21
- "LICENSE",
22
- "README.md",
23
- "Rakefile",
24
- "VERSION",
25
- "autometal-piwik.gemspec",
26
- "lib/piwik.rb",
27
- "lib/piwik/base.rb",
28
- "lib/piwik/site.rb",
29
- "lib/piwik/trackable.rb",
30
- "lib/piwik/user.rb",
31
- "script/console",
32
- "test/files/config/example_piwik.yml",
33
- "test/piwik_test.rb",
34
- "test/test_helper.rb"
35
- ]
36
- s.homepage = %q{https://github.com/Achillefs/autometal-piwik}
7
+ s.name = "autometal-piwik"
8
+ s.version = Piwik::VERSION
9
+ s.authors = ["Achilles Charmpilas"]
10
+ s.email = ["ac@humbuckercode.co.uk"]
11
+ s.description = %q{A complete Ruby client for the Piwik API}
12
+ s.summary = %q{A complete Ruby client for the Piwik API}
13
+ s.homepage = "http://humbuckercode.co.uk/licks/gems/piwik/"
14
+ s.license = 'MIT'
15
+ s.files = `git ls-files`.split($/)
16
+ s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
37
18
  s.require_paths = ["lib"]
38
- s.rubygems_version = %q{1.6.1}
39
- s.summary = %q{A ruby client for the Piwik API.}
40
-
41
- if s.respond_to? :specification_version then
42
- s.specification_version = 3
43
-
44
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
45
- s.add_runtime_dependency(%q<activesupport>, [">= 3.0.9"])
46
- s.add_runtime_dependency(%q<rest-client>, [">= 1.6.1"])
47
- s.add_runtime_dependency(%q<json>, [">= 1.4.6"])
48
- else
49
- s.add_dependency(%q<activesupport>, [">= 3.0.9"])
50
- s.add_dependency(%q<rest-client>, [">= 1.6.1"])
51
- s.add_dependency(%q<json>, [">= 1.4.6"])
52
- end
53
- else
54
- s.add_dependency(%q<activesupport>, [">= 3.0.9"])
55
- s.add_dependency(%q<rest-client>, [">= 1.6.1"])
56
- s.add_dependency(%q<json>, [">= 1.4.6"])
57
- end
19
+
20
+ s.add_dependency('xml-simple')
21
+ s.add_dependency('rest-client')
22
+ s.add_dependency('activesupport')
23
+ s.add_development_dependency('rspec')
58
24
  end
59
-
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+ # Example usage: ./script/terminal -u http://demo.piwik.org -t anonymous
3
+ require 'optparse'
4
+ options = {}
5
+ OptionParser.new do |opts|
6
+ opts.on("-u", "--url [URL]", "Piwik URL") do |url|
7
+ options[:piwik_url] = url
8
+ end
9
+
10
+ opts.on("-t", "--token [TOKEN]", "Piwik Auth Token") do |token|
11
+ options[:token_auth] = token
12
+ end
13
+
14
+ end.parse!
15
+
16
+ unless options.empty?
17
+ code = %{
18
+ IRB.conf[:AT_EXIT].push proc { exec("rm -f .piwik.rc.rb") }
19
+ Piwik::PIWIK_URL = '#{options[:piwik_url]}'
20
+ Piwik::PIWIK_TOKEN = '#{options[:token_auth]}'
21
+ }
22
+
23
+ File.open('./.piwik.rc.rb','w') { |f| f.puts(code) }
24
+
25
+ end
26
+
27
+ libs = '-rubygems'
28
+ libs = ' -r irb/completion'
29
+ libs << ' -r piwik'
30
+ libs << ' -r ./.piwik.rc.rb' if File.exists?('./.piwik.rc.rb')
31
+ exec "irb #{libs}"
@@ -1,6 +1,18 @@
1
- $:.unshift(File.dirname(__FILE__)) unless $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
2
3
 
3
- require 'piwik/base.rb'
4
- require 'piwik/site.rb'
5
- require 'piwik/user.rb'
6
- require 'piwik/trackable.rb'
4
+ require 'active_support/core_ext'
5
+ require 'string'
6
+
7
+ %W{
8
+ typecast api_scope base data_methods api_module api_response version
9
+ seo referers transitions user_country visit_time visitor_interest visits_summary
10
+ user_settings annotations sites_manager users_manager
11
+ actions live pdf_reports image_graph
12
+ provider visit_frequency multi_sites mobile_messaging
13
+ custom_variables languages_manager goals example_api api
14
+ site user
15
+ }.each { |r| require "piwik/#{r}" }
16
+
17
+ module Piwik
18
+ end
@@ -0,0 +1,59 @@
1
+ module Piwik
2
+ class Actions < ApiModule
3
+ available_methods %W{
4
+ get
5
+ getPageUrls
6
+ getPageUrlsFollowingSiteSearch
7
+ getPageTitlesFollowingSiteSearch
8
+ getEntryPageUrls
9
+ getExitPageUrls
10
+ getPageUrl
11
+ getPageTitles
12
+ getEntryPageTitles
13
+ getExitPageTitles
14
+ getPageTitle
15
+ getDownloads
16
+ getDownload
17
+ getOutlinks
18
+ getOutlink
19
+ getSiteSearchKeywords
20
+ addPagesPerSearchColumn
21
+ getSiteSearchNoResultKeywords
22
+ getSiteSearchCategories
23
+ }
24
+
25
+ scoped_methods do
26
+ def summary params = {}
27
+ get(defaults.merge(params))
28
+ end
29
+
30
+ def urls params = {}
31
+ getPageUrls(defaults.merge(params))
32
+ end
33
+
34
+ def url(page_url, params = {})
35
+ getPageUrl(defaults.merge(params).merge(:pageUrl => page_url))
36
+ end
37
+
38
+ def entry_urls params = {}
39
+ getEntryPageUrls(defaults.merge(params))
40
+ end
41
+
42
+ def exit_urls params = {}
43
+ getExitPageUrls(defaults.merge(params))
44
+ end
45
+
46
+ def downloads params = {}
47
+ getDownloads(defaults.merge(params))
48
+ end
49
+
50
+ def outlinks params = {}
51
+ getOutlinks(defaults.merge(params))
52
+ end
53
+
54
+ def outlink(outlink_url, params = {})
55
+ getOutlink(defaults.merge(params).merge(:outlinkUrl => outlink_url))
56
+ end
57
+ end
58
+ end
59
+ end