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
@@ -0,0 +1,70 @@
|
|
1
|
+
module Piwik
|
2
|
+
class SitesManager < ApiModule
|
3
|
+
available_methods %W{
|
4
|
+
getJavascriptTag
|
5
|
+
getSitesFromGroup
|
6
|
+
getSitesGroups
|
7
|
+
getSiteFromId
|
8
|
+
getSiteUrlsFromId
|
9
|
+
getAllSites
|
10
|
+
getAllSitesId
|
11
|
+
getSitesIdWithVisits
|
12
|
+
getSitesWithAdminAccess
|
13
|
+
getSitesWithViewAccess
|
14
|
+
getSitesWithAtLeastViewAccess
|
15
|
+
getSitesIdWithAdminAccess
|
16
|
+
getSitesIdWithViewAccess
|
17
|
+
getSitesIdWithAtLeastViewAccess
|
18
|
+
getSitesIdFromSiteUrl
|
19
|
+
addSite
|
20
|
+
deleteSite
|
21
|
+
addSiteAliasUrls
|
22
|
+
getIpsForRange
|
23
|
+
setGlobalExcludedIps
|
24
|
+
setGlobalSearchParameters
|
25
|
+
getSearchKeywordParametersGlobal
|
26
|
+
getSearchCategoryParametersGlobal
|
27
|
+
getExcludedQueryParametersGlobal
|
28
|
+
getExcludedUserAgentsGlobal
|
29
|
+
setGlobalExcludedUserAgents
|
30
|
+
isSiteSpecificUserAgentExcludeEnabled
|
31
|
+
setSiteSpecificUserAgentExcludeEnabled
|
32
|
+
setGlobalExcludedQueryParameters
|
33
|
+
getExcludedIpsGlobal
|
34
|
+
getDefaultCurrency
|
35
|
+
setDefaultCurrency
|
36
|
+
getDefaultTimezone
|
37
|
+
setDefaultTimezone
|
38
|
+
updateSite
|
39
|
+
getCurrencyList
|
40
|
+
getCurrencySymbols
|
41
|
+
getTimezonesList
|
42
|
+
getUniqueSiteTimezones
|
43
|
+
getPatternMatchSites
|
44
|
+
}
|
45
|
+
|
46
|
+
def self.get params
|
47
|
+
resp = self.get_site_from_id(params)
|
48
|
+
# Hack. The Piwik API get really weird sometimes
|
49
|
+
raise Piwik::UnknownSite if resp.value == '0'
|
50
|
+
Piwik::Site.new resp
|
51
|
+
end
|
52
|
+
|
53
|
+
# monkeypatching, as the Piwik API is inconsistent.
|
54
|
+
# not all add methods return the same response type. Boo.
|
55
|
+
def self.add params
|
56
|
+
obj = Piwik::Site.new(params)
|
57
|
+
resp = self.api_call('addSite',params)
|
58
|
+
obj.attributes.idSite = resp
|
59
|
+
obj
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.save params
|
63
|
+
self.api_call('updateSite',params)
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.delete params
|
67
|
+
self.api_call('deleteSite',params)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Piwik
|
2
|
+
class Transitions < ApiModule
|
3
|
+
available_methods %W{
|
4
|
+
getTransitionsForPageTitle
|
5
|
+
getTransitionsForPageUrl
|
6
|
+
getTransitionsForAction
|
7
|
+
getTranslations
|
8
|
+
}
|
9
|
+
|
10
|
+
scoped_methods do
|
11
|
+
def for_title title, params = {}
|
12
|
+
getTransitionsForPageTitle(defaults.merge(params).merge(:pageTitle => title))
|
13
|
+
end
|
14
|
+
|
15
|
+
def for_url url, params = {}
|
16
|
+
getTransitionsForPageUrl(defaults.merge(params).merge(:pageUrl => url))
|
17
|
+
end
|
18
|
+
|
19
|
+
def for_action name, type, params = {}
|
20
|
+
getTransitionsForAction(defaults.merge(params).merge(:actionName => name, :actionType => type, :parts => 'all', :returnNormalizedUrls => ''))
|
21
|
+
end
|
22
|
+
|
23
|
+
def translations
|
24
|
+
getTranslations
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Piwik
|
2
|
+
# used to do basic typecasting to API response values
|
3
|
+
module Typecast
|
4
|
+
def self.included(base)
|
5
|
+
base.send(:include, InstanceMethods)
|
6
|
+
end
|
7
|
+
|
8
|
+
module InstanceMethods
|
9
|
+
private
|
10
|
+
def typecast(thing)
|
11
|
+
if thing.is_a?(String) and thing =~ /^[0-9]+$/
|
12
|
+
thing.to_i
|
13
|
+
else
|
14
|
+
thing
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/piwik/user.rb
CHANGED
@@ -1,132 +1,13 @@
|
|
1
1
|
module Piwik
|
2
|
-
class User <
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
# Initializes a new <tt>Piwik::User</tt> object, with the supplied attributes.
|
7
|
-
#
|
8
|
-
# You can pass the URL for your Piwik install and an authorization token as
|
9
|
-
# the second and third parameters. If you don't, than it will try to find
|
10
|
-
# them in a <tt>'~/.piwik'</tt> or <tt>RAILS_ROOT/config/piwik.yml</tt>
|
11
|
-
# (and create the file with an empty template if it doesn't exists).
|
12
|
-
#
|
13
|
-
# Valid (and required) attributes are:
|
14
|
-
# * <tt>:login</tt> - the user login
|
15
|
-
# * <tt>:password</tt> - the user password
|
16
|
-
# * <tt>:email</tt> - the user email
|
17
|
-
# * <tt>:alias</tt> - the user alias
|
18
|
-
def initialize(attributes={}, piwik_url=nil, auth_token=nil)
|
19
|
-
raise ArgumentError, "expected an attributes Hash, got #{attributes.inspect}" unless attributes.is_a?(Hash)
|
20
|
-
@config = if piwik_url.nil? || auth_token.nil?
|
21
|
-
self.class.load_config
|
22
|
-
else
|
23
|
-
{:piwik_url => piwik_url, :auth_token => auth_token}
|
2
|
+
class User < Base
|
3
|
+
class << self
|
4
|
+
def collection
|
5
|
+
Piwik::UsersManager
|
24
6
|
end
|
25
|
-
load_attributes(attributes)
|
26
|
-
end
|
27
|
-
|
28
|
-
# Returns <tt>true</tt> if the current site does not exists in the Piwik yet.
|
29
|
-
def new?
|
30
|
-
created_at.nil? or created_at.blank?
|
31
|
-
end
|
32
|
-
|
33
|
-
# Saves the current user in Piwik.
|
34
|
-
#
|
35
|
-
# Calls <tt>create</tt> it it's a new user, <tt>update</tt> otherwise.
|
36
|
-
def save
|
37
|
-
new? ? create : update
|
38
|
-
end
|
39
|
-
|
40
|
-
# Saves the current new user in Piwik.
|
41
|
-
#
|
42
|
-
# Equivalent Piwik API call: UsersManager.addUser (userLogin, password, email, alias)
|
43
|
-
def create
|
44
|
-
raise ArgumentError, "User already exists in Piwik, call 'update' instead" unless new?
|
45
|
-
raise ArgumentError, "Login can not be blank" if login.blank?
|
46
|
-
raise ArgumentError, "Password can not be blank" if password.blank?
|
47
|
-
raise ArgumentError, "Email can not be blank" if email.blank?
|
48
|
-
user_alias = login if user_alias.blank?
|
49
|
-
|
50
|
-
result = call('UsersManager.addUser', :userLogin => login, :password => password, :email => email, :alias => user_alias)
|
51
|
-
@created_at = Time.current
|
52
|
-
#puts "\n create #{result} \n"
|
53
|
-
|
54
|
-
if result["result"]
|
55
|
-
result['message'] == 'ok' ? true : false
|
56
|
-
else
|
57
|
-
false
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
# Saves the current user in Piwik, updating it's data.
|
62
|
-
#
|
63
|
-
# Equivalent Piwik API call: UsersManager.updateUser (userLogin, password, email, alias)
|
64
|
-
def update
|
65
|
-
raise UnknownUser, "User not existent in Piwik yet, call 'save' first" if new?
|
66
|
-
raise ArgumentError, "Login can not be blank" if login.blank?
|
67
|
-
raise ArgumentError, "Password can not be blank" if password.blank?
|
68
|
-
raise ArgumentError, "Email can not be blank" if email.blank?
|
69
|
-
user_alias = login if user_alias.blank?
|
70
7
|
|
71
|
-
|
72
|
-
|
73
|
-
end
|
74
|
-
|
75
|
-
# Deletes the current user from Piwik.
|
76
|
-
#
|
77
|
-
# Equivalent Piwik API call: UsersManager.deleteUser (userLogin)
|
78
|
-
def destroy
|
79
|
-
raise UnknownUser, "User not existent in Piwik yet, call 'save' first" if new?
|
80
|
-
result = call('UsersManager.deleteUser', :userLogin => login)
|
81
|
-
freeze
|
82
|
-
result['result'] == 'success' ? true : false
|
83
|
-
end
|
84
|
-
|
85
|
-
# Returns an instance of <tt>Piwik::User</tt> representing the user identified by
|
86
|
-
# the supplied <tt>userLogin</tt>. Raises a <tt>Piwik::ApiError</tt> if the user doesn't
|
87
|
-
# exists or if the user associated with the supplied auth_token does not
|
88
|
-
# have 'admin' access.
|
89
|
-
#
|
90
|
-
# You can pass the URL for your Piwik install and an authorization token as
|
91
|
-
# the second and third parameters. If you don't, than it will try to find
|
92
|
-
# them in a <tt>'~/.piwik'</tt> or <tt>RAILS_ROOT/config/piwik.yml</tt>
|
93
|
-
# (and create the file with an empty template if it doesn't exists).
|
94
|
-
def self.load(user_login, piwik_url=nil, auth_token=nil)
|
95
|
-
raise ArgumentError, "expected a user Login" if user_login.nil?
|
96
|
-
@config = if piwik_url.nil? || auth_token.nil?
|
97
|
-
load_config
|
98
|
-
else
|
99
|
-
{:piwik_url => piwik_url, :auth_token => auth_token}
|
8
|
+
def id_attr
|
9
|
+
:userLogin
|
100
10
|
end
|
101
|
-
attributes = get_user_attributes_by_login(user_login, @config[:piwik_url], @config[:auth_token])
|
102
|
-
new(attributes, @config[:piwik_url], @config[:auth_token])
|
103
|
-
end
|
104
|
-
|
105
|
-
private
|
106
|
-
# Loads the attributes in the instance variables.
|
107
|
-
def load_attributes(attributes)
|
108
|
-
@login = attributes[:login]
|
109
|
-
@password = attributes[:password]
|
110
|
-
@email = attributes[:email]
|
111
|
-
@user_alias = attributes[:user_alias]
|
112
|
-
@created_at = attributes[:created_at]
|
113
|
-
end
|
114
|
-
|
115
|
-
# Returns a hash with the attributes of the supplied user, identified
|
116
|
-
# by it's Login in <tt>user_login</tt>.
|
117
|
-
#
|
118
|
-
# Equivalent Piwik API call: UsersManager.getUser (userLogin)
|
119
|
-
def self.get_user_attributes_by_login(user_login, piwik_url, auth_token)
|
120
|
-
result = call('UsersManager.getUser', {:userLogin => user_login}, piwik_url, auth_token)
|
121
|
-
#puts "\n get_user_attributes_by_login #{result} \n"
|
122
|
-
attributes = {
|
123
|
-
:login => result[0]['login'],
|
124
|
-
:user_alias => result[0]['alias'],
|
125
|
-
:email => result[0]['email'],
|
126
|
-
:password => result[0]['password'],
|
127
|
-
:created_at => Time.parse(result[0]['date_registered'])
|
128
|
-
}
|
129
|
-
attributes
|
130
11
|
end
|
131
12
|
end
|
132
|
-
end
|
13
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Piwik
|
2
|
+
class UsersManager < ApiModule
|
3
|
+
available_methods %W{
|
4
|
+
setUserPreference
|
5
|
+
getUserPreference
|
6
|
+
getUsers
|
7
|
+
getUsersLogin
|
8
|
+
getUsersSitesFromAccess
|
9
|
+
getUsersAccessFromSite
|
10
|
+
getUsersWithSiteAccess
|
11
|
+
getSitesAccessFromUser
|
12
|
+
getUser
|
13
|
+
getUserByEmail
|
14
|
+
addUser
|
15
|
+
updateUser
|
16
|
+
deleteUser
|
17
|
+
userExists
|
18
|
+
userEmailExists
|
19
|
+
setUserAccess
|
20
|
+
getTokenAuth
|
21
|
+
}
|
22
|
+
|
23
|
+
def self.get params
|
24
|
+
resp = self.get_user(params)
|
25
|
+
raise Piwik::UnknownUser if resp.blank?
|
26
|
+
Piwik::User.new resp
|
27
|
+
end
|
28
|
+
|
29
|
+
# monkeypatching, as the Piwik API is inconsistent.
|
30
|
+
# not all add methods return the same response type. Boo.
|
31
|
+
def self.add params
|
32
|
+
obj = Piwik::User.new(params)
|
33
|
+
resp = self.api_call('addUser',params)
|
34
|
+
obj
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.save params
|
38
|
+
self.api_call('updateUser',params)
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.delete params
|
42
|
+
self.api_call('deleteDelete',params)
|
43
|
+
end
|
44
|
+
|
45
|
+
# TODO: this one is not working.
|
46
|
+
# I assume there are other metacoded methods that might throw errors,
|
47
|
+
# so a bit or hunting down is in ortder sometime
|
48
|
+
def self.user_exists(params)
|
49
|
+
Piwik::UsersManager::UserExists.new(:value => self.api_call('userExists',params))
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Piwik
|
2
|
+
class VisitsSummary < ApiModule
|
3
|
+
available_methods %W{
|
4
|
+
get
|
5
|
+
getVisits
|
6
|
+
getUniqueVisitors
|
7
|
+
getActions
|
8
|
+
getMaxActions
|
9
|
+
getBounceCount
|
10
|
+
getVisitsConverted
|
11
|
+
getSumVisitsLength
|
12
|
+
getSumVisitsLengthPretty
|
13
|
+
}
|
14
|
+
|
15
|
+
scoped_methods do
|
16
|
+
def converted params = {}
|
17
|
+
getVisitsConverted(defaults.merge(params)).value
|
18
|
+
end
|
19
|
+
|
20
|
+
def summary params = {}
|
21
|
+
get(defaults.merge(params))
|
22
|
+
end
|
23
|
+
|
24
|
+
def count params = {}
|
25
|
+
getVisits(defaults.merge(params)).value
|
26
|
+
end
|
27
|
+
|
28
|
+
def uniques params = {}
|
29
|
+
getUniqueVisitors(defaults.merge(params)).value
|
30
|
+
end
|
31
|
+
|
32
|
+
def actions params = {}
|
33
|
+
getActions(defaults.merge(params)).value
|
34
|
+
end
|
35
|
+
|
36
|
+
def max_actions params = {}
|
37
|
+
getMaxActions(defaults.merge(params)).value
|
38
|
+
end
|
39
|
+
|
40
|
+
def bounces params = {}
|
41
|
+
getBounceCount(defaults.merge(params)).value
|
42
|
+
end
|
43
|
+
|
44
|
+
def length params = {}
|
45
|
+
getSumVisitsLength(defaults.merge(params)).value
|
46
|
+
end
|
47
|
+
|
48
|
+
def pretty_length params = {}
|
49
|
+
getSumVisitsLengthPretty(defaults.merge(params)).value
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|