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.
- data/.gitignore +8 -0
- data/.travis.yml +10 -0
- data/Gemfile +4 -0
- data/License.txt +22 -0
- data/README.md +80 -76
- data/Rakefile +1 -33
- data/autometal-piwik.gemspec +19 -54
- data/bin/piwik-console +31 -0
- data/lib/piwik.rb +17 -5
- data/lib/piwik/actions.rb +59 -0
- data/lib/piwik/annotations.rb +41 -0
- data/lib/piwik/api.rb +21 -0
- data/lib/piwik/api_module.rb +97 -0
- data/lib/piwik/api_response.rb +6 -0
- data/lib/piwik/api_scope.rb +32 -0
- data/lib/piwik/base.rb +156 -69
- data/lib/piwik/custom_variables.rb +8 -0
- data/lib/piwik/data_methods.rb +54 -0
- data/lib/piwik/example_api.rb +15 -0
- data/lib/piwik/goals.rb +40 -0
- data/lib/piwik/image_graph.rb +7 -0
- data/lib/piwik/languages_manager.rb +13 -0
- data/lib/piwik/live.rb +8 -0
- data/lib/piwik/metadata_api.rb +21 -0
- data/lib/piwik/mobile_messaging.rb +16 -0
- data/lib/piwik/multi_sites.rb +8 -0
- data/lib/piwik/pdf_reports.rb +12 -0
- data/lib/piwik/provider.rb +7 -0
- data/lib/piwik/referers.rb +62 -0
- data/lib/piwik/seo.rb +7 -0
- data/lib/piwik/site.rb +50 -250
- data/lib/piwik/sites_manager.rb +70 -0
- data/lib/piwik/transitions.rb +28 -0
- data/lib/piwik/typecast.rb +19 -0
- data/lib/piwik/user.rb +7 -126
- data/lib/piwik/user_country.rb +12 -0
- data/lib/piwik/user_settings.rb +16 -0
- data/lib/piwik/users_manager.rb +52 -0
- data/lib/piwik/version.rb +3 -0
- data/lib/piwik/visit_frequency.rb +7 -0
- data/lib/piwik/visit_time.rb +9 -0
- data/lib/piwik/visitor_interest.rb +10 -0
- data/lib/piwik/visits_summary.rb +53 -0
- data/lib/string.rb +11 -0
- data/spec/actions_spec.rb +19 -0
- data/spec/api_spec.rb +12 -0
- data/spec/custom_variables_spec.rb +11 -0
- data/spec/files/API.get.xml +28 -0
- data/spec/files/API.getDefaultMetricTranslations.xml +39 -0
- data/spec/files/API.getDefaultMetrics.xml +8 -0
- data/spec/files/API.getDefaultMetricsDocumentation.xml +15 -0
- data/spec/files/API.getDefaultProcessedMetrics.xml +9 -0
- data/spec/files/API.getHeaderLogoUrl.xml +2 -0
- data/spec/files/API.getLogoUrl.xml +2 -0
- data/spec/files/API.getMetadata.xml +42 -0
- data/spec/files/API.getPiwikVersion.xml +2 -0
- data/spec/files/API.getProcessedReport.xml +1227 -0
- data/spec/files/API.getReportMetadata.xml +1347 -0
- data/spec/files/API.getRowEvolution.xml +4 -0
- data/spec/files/API.getSegmentsMetadata.xml +365 -0
- data/spec/files/API.getSettings.xml +7 -0
- data/spec/files/Actions.GetPageUrl.xml +20 -0
- data/spec/files/Actions.get.xml +11 -0
- data/spec/files/Actions.getDownloads.xml +19 -0
- data/spec/files/Actions.getEntryPageTitles.xml +88 -0
- data/spec/files/Actions.getEntryPageUrls.xml +93 -0
- data/spec/files/Actions.getExitPageTitles.xml +88 -0
- data/spec/files/Actions.getExitPageUrls.xml +93 -0
- data/spec/files/Actions.getOutlink.xml +12 -0
- data/spec/files/Actions.getOutlinks.xml +100 -0
- data/spec/files/Actions.getPageTitles.xml +134 -0
- data/spec/files/Actions.getPageUrls.xml +129 -0
- data/spec/files/Annotations.add.xml +11 -0
- data/spec/files/Annotations.getAll.xml +34 -0
- data/spec/files/Annotations.getAnnotationCountForDates.xml +12 -0
- data/spec/files/CustomVariables.getCustomVariables.xml +32 -0
- data/spec/files/ExampleAPI.getAnswerToLife.xml +2 -0
- data/spec/files/ExampleAPI.getCompetitionDatatable.xml +12 -0
- data/spec/files/ExampleAPI.getDescriptionArray.xml +8 -0
- data/spec/files/ExampleAPI.getMoreInformationAnswerToLife.xml +2 -0
- data/spec/files/ExampleAPI.getMultiArray.xml +22 -0
- data/spec/files/ExampleAPI.getNull.xml +4 -0
- data/spec/files/ExampleAPI.getObject.xml +4 -0
- data/spec/files/ExampleAPI.getPiwikVersion.xml +2 -0
- data/spec/files/ExampleAPI.getSum.xml +2 -0
- data/spec/files/Goals.get.xml +7 -0
- data/spec/files/Goals.getDaysToConversion.xml +59 -0
- data/spec/files/Goals.getGoals.xml +39 -0
- data/spec/files/Goals.getVisitsUntilConversion.xml +55 -0
- data/spec/files/ImageGraph.get.xml +0 -0
- data/spec/files/LanguagesManager.getAvailableLanguageNames.xml +233 -0
- data/spec/files/LanguagesManager.getAvailableLanguages.xml +49 -0
- data/spec/files/LanguagesManager.isLanguageAvailable.xml +2 -0
- data/spec/files/Live.getCounters.xml +8 -0
- data/spec/files/Live.getLastVisitsDetails.xml +768 -0
- data/spec/files/MultiSites.getAll.xml +2 -0
- data/spec/files/MultiSites.getOne.xml +11 -0
- data/spec/files/PDFReports.getReports.xml +35 -0
- data/spec/files/Provider.getProvider.xml +113 -0
- data/spec/files/Referers.getCampaigns.xml +2 -0
- data/spec/files/Referers.getKeywords.xml +145 -0
- data/spec/files/Referers.getKeywordsForPageUrl.xml +8 -0
- data/spec/files/Referers.getNumberOfDistinctCampaigns.xml +2 -0
- data/spec/files/Referers.getNumberOfDistinctKeywords.xml +2 -0
- data/spec/files/Referers.getNumberOfDistinctSearchEngines.xml +2 -0
- data/spec/files/Referers.getNumberOfDistinctWebsites.xml +2 -0
- data/spec/files/Referers.getNumberOfDistinctWebsitesUrls.xml +2 -0
- data/spec/files/Referers.getRefererType.xml +82 -0
- data/spec/files/Referers.getSearchEngines.xml +112 -0
- data/spec/files/Referers.getSocials.xml +2 -0
- data/spec/files/Referers.getUrlsForSocial.xml +2 -0
- data/spec/files/Referers.getWebsites.xml +386 -0
- data/spec/files/SEO.getRank.xml +33 -0
- data/spec/files/SitesManager.addSite.xml +1 -0
- data/spec/files/SitesManager.getAllSites.xml +63 -0
- data/spec/files/SitesManager.getAllSitesId.xml +4 -0
- data/spec/files/SitesManager.getCurrencyList.xml +165 -0
- data/spec/files/SitesManager.getCurrencySymbols.xml +165 -0
- data/spec/files/SitesManager.getDefaultCurrency.xml +2 -0
- data/spec/files/SitesManager.getDefaultTimezone.xml +2 -0
- data/spec/files/SitesManager.getExcludedIpsGlobal.xml +2 -0
- data/spec/files/SitesManager.getExcludedQueryParametersGlobal.xml +2 -0
- data/spec/files/SitesManager.getJavascriptTag.xml +14 -0
- data/spec/files/SitesManager.getSearchCategoryParametersGlobal.xml +2 -0
- data/spec/files/SitesManager.getSearchKeywordParametersGlobal.xml +2 -0
- data/spec/files/SitesManager.getSiteFromId.xml +18 -0
- data/spec/files/SitesManager.getSiteUrlsFromId.xml +4 -0
- data/spec/files/SitesManager.getSitesGroups.xml +4 -0
- data/spec/files/SitesManager.getSitesIdFromSiteUrl.xml +2 -0
- data/spec/files/SitesManager.getSitesIdWithAdminAccess.xml +4 -0
- data/spec/files/SitesManager.getSitesIdWithAtLeastViewAccess.xml +4 -0
- data/spec/files/SitesManager.getSitesIdWithViewAccess.xml +2 -0
- data/spec/files/SitesManager.getSitesIdWithVisits.xml +2 -0
- data/spec/files/SitesManager.getSitesWithAdminAccess.xml +63 -0
- data/spec/files/SitesManager.getSitesWithAtLeastViewAccess.xml +18 -0
- data/spec/files/SitesManager.getSitesWithViewAccess.xml +2 -0
- data/spec/files/SitesManager.getTimezonesList.xml +509 -0
- data/spec/files/SitesManager.getUniqueSiteTimezones.xml +4 -0
- data/spec/files/Transitions.getTranslations.xml +37 -0
- data/spec/files/UserCountry.getCity.xml +221 -0
- data/spec/files/UserCountry.getContinent.xml +185 -0
- data/spec/files/UserCountry.getCountry.xml +154 -0
- data/spec/files/UserCountry.getLocationFromIP.xml +17 -0
- data/spec/files/UserCountry.getNumberOfDistinctCountries.xml +2 -0
- data/spec/files/UserCountry.getRegion.xml +269 -0
- data/spec/files/UserSettings.getBrowser.xml +47 -0
- data/spec/files/UserSettings.getBrowserType.xml +58 -0
- data/spec/files/UserSettings.getBrowserVersion.xml +39 -0
- data/spec/files/UserSettings.getConfiguration.xml +43 -0
- data/spec/files/UserSettings.getMobileVsDesktop.xml +36 -0
- data/spec/files/UserSettings.getOS.xml +27 -0
- data/spec/files/UserSettings.getOSFamily.xml +102 -0
- data/spec/files/UserSettings.getPlugin.xml +63 -0
- data/spec/files/UserSettings.getResolution.xml +33 -0
- data/spec/files/UserSettings.getWideScreen.xml +47 -0
- data/spec/files/UsersManager.getSitesAccessFromUser.xml +4 -0
- data/spec/files/UsersManager.getUser.xml +10 -0
- data/spec/files/UsersManager.getUsers.xml +11 -0
- data/spec/files/UsersManager.getUsersAccessFromSite.xml +2 -0
- data/spec/files/UsersManager.getUsersLogin.xml +4 -0
- data/spec/files/UsersManager.getUsersSitesFromAccess.xml +2 -0
- data/spec/files/UsersManager.getUsersWithSiteAccess.xml +2 -0
- data/spec/files/UsersManager.userExists.xml +2 -0
- data/spec/files/VisitFrequency.get.xml +13 -0
- data/spec/files/VisitTime.getByDayOfWeek.xml +43 -0
- data/spec/files/VisitTime.getVisitInformationPerLocalTime.xml +83 -0
- data/spec/files/VisitTime.getVisitInformationPerServerTime.xml +87 -0
- data/spec/files/VisitorInterest.getNumberOfVisitsByDaysSinceLast.xml +63 -0
- data/spec/files/VisitorInterest.getNumberOfVisitsByVisitCount.xml +73 -0
- data/spec/files/VisitorInterest.getNumberOfVisitsPerPage.xml +43 -0
- data/spec/files/VisitorInterest.getNumberOfVisitsPerVisitDuration.xml +43 -0
- data/spec/files/VisitsSummary.get.xml +13 -0
- data/spec/files/VisitsSummary.getActions.xml +2 -0
- data/spec/files/VisitsSummary.getBounceCount.xml +2 -0
- data/spec/files/VisitsSummary.getMaxActions.xml +2 -0
- data/spec/files/VisitsSummary.getSumVisitsLength.xml +2 -0
- data/spec/files/VisitsSummary.getSumVisitsLengthPretty.xml +2 -0
- data/spec/files/VisitsSummary.getUniqueVisitors.xml +2 -0
- data/spec/files/VisitsSummary.getVisits.xml +2 -0
- data/spec/files/VisitsSummary.getVisitsConverted.xml +2 -0
- data/spec/files/failure.xml +3 -0
- data/spec/files/success.xml +3 -0
- data/spec/goals_spec.rb +14 -0
- data/spec/image_graph_spec.rb +12 -0
- data/spec/languages_manager_spec.rb +13 -0
- data/spec/live_spec.rb +13 -0
- data/spec/mobile_messaging_spec.rb +10 -0
- data/spec/multi_sites_spec.rb +11 -0
- data/spec/pdf_reports_spec.rb +11 -0
- data/spec/provider_spec.rb +12 -0
- data/spec/referers_spec.rb +46 -0
- data/spec/seo_spec.rb +15 -0
- data/spec/site_spec.rb +104 -0
- data/spec/sites_manager_spec.rb +30 -0
- data/spec/spec_helper.rb +76 -0
- data/spec/transitions_spec.rb +13 -0
- data/spec/user_country_spec.rb +33 -0
- data/spec/user_settings_spec.rb +50 -0
- data/spec/user_spec.rb +32 -0
- data/spec/users_manager_spec.rb +26 -0
- data/spec/visit_frequency_spec.rb +11 -0
- data/spec/visit_time_spec.rb +22 -0
- data/spec/visitor_interest_spec.rb +30 -0
- data/spec/visits_summary_spec.rb +47 -0
- metadata +426 -99
- data/.document +0 -5
- data/LICENSE +0 -7
- data/VERSION +0 -1
- data/lib/piwik/trackable.rb +0 -80
- data/script/console +0 -10
- data/test/files/config/example_piwik.yml +0 -4
- data/test/piwik_test.rb +0 -128
- data/test/test_helper.rb +0 -12
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/License.txt
ADDED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
##
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
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
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
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
|
-
|
41
|
-
* Piwik API reference (http://dev.piwik.org/trac/wiki/API/Reference)
|
28
|
+
$ gem install autometal-piwik
|
42
29
|
|
43
|
-
##
|
30
|
+
## Usage
|
31
|
+
### Use the binary
|
32
|
+
Open an extended irb session to a Piwik installation:
|
44
33
|
|
45
|
-
|
34
|
+
$ piwik-console -u http://demo.piwik.org -t anonymous
|
35
|
+
:001 > Piwik::Site.load 7
|
36
|
+
=> #<Piwik::Site[snip]>
|
46
37
|
|
47
|
-
|
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
|
-
|
41
|
+
Piwik::PIWIK_URL = 'http://demo.piwik.org'
|
42
|
+
Piwik::PIWIK_TOKEN = 'anonymous'
|
50
43
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
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
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
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
|
-
|
89
|
-
|
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
|
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"
|
data/autometal-piwik.gemspec
CHANGED
@@ -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
|
8
|
-
s.version
|
9
|
-
|
10
|
-
s.
|
11
|
-
s.
|
12
|
-
s.
|
13
|
-
s.
|
14
|
-
s.
|
15
|
-
s.
|
16
|
-
|
17
|
-
|
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
|
-
|
39
|
-
s.
|
40
|
-
|
41
|
-
|
42
|
-
|
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
|
-
|
data/bin/piwik-console
ADDED
@@ -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}"
|
data/lib/piwik.rb
CHANGED
@@ -1,6 +1,18 @@
|
|
1
|
-
$:.unshift(File.dirname(__FILE__)) unless
|
1
|
+
$:.unshift(File.dirname(__FILE__)) unless
|
2
|
+
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
2
3
|
|
3
|
-
require '
|
4
|
-
require '
|
5
|
-
|
6
|
-
|
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
|