Class: Piwik::ApiModule
- Includes:
- DataMethods
- Defined in:
- lib/piwik/api_module.rb
Direct Known Subclasses
API, Actions, Annotations, CustomVariables, ExampleApi, Goals, ImageGraph, LanguagesManager, Live, MobileMessaging, MultiSites, PdfReports, Provider, Referrers, SEO, ScheduledReports, SitesManager, Transitions, UserCountry, UserSettings, UsersManager, VisitFrequency, VisitTime, VisitorInterest, VisitsSummary
Instance Attribute Summary
Attributes inherited from Base
Class Method Summary collapse
- .api_call_to_const(string, full = false) ⇒ Object
- .available_methods(method_array) ⇒ Object
-
.defaults ⇒ Object
returns default API params, used all over the place, especially in
scoped_methods
. -
.method_missing(method, *args, &block) ⇒ Object
Catch incoming method calls and try to format them and send them over to the api.
-
.scoped_methods(&block) ⇒ Object
allows the addition of scoped methods.
Methods included from DataMethods
Methods inherited from Base
call, #call, collection, #collection, #config, #created_at, #delete, #id, #id_attr, #initialize, load, load_config_from_file, #method_missing, #new?, parse_xml, #parse_xml, #save
Methods included from ApiScope
Methods included from Typecast
Constructor Details
This class inherits a constructor from Piwik::Base
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Piwik::Base
Class Method Details
.api_call_to_const(string, full = false) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/piwik/api_module.rb', line 44 def self.api_call_to_const string, full = false # We can get rid of the get prefix string = case string when /[A-Z]{1}[a-z]*\.[get|add|delete|save]$/,'get','add','delete','save' string.camelize else string.gsub(/get|save|add|delete/, '') end string = string.split('.').map {|s| s.camelize }.join('::') full ? "Piwik::#{string}" : string end |
.available_methods(method_array) ⇒ Object
34 35 36 37 38 39 40 41 42 |
# File 'lib/piwik/api_module.rb', line 34 def self.available_methods method_array @available_methods = method_array @available_methods.each do |method| class_eval %{ class #{self.api_call_to_const(method)} < Piwik::ApiResponse end }, __FILE__, __LINE__ end end |
.defaults ⇒ Object
returns default API params, used all over the place, especially in scoped_methods
6 7 8 |
# File 'lib/piwik/api_module.rb', line 6 def self.defaults {:period => :day, :date => Date.today, @obj.id_attr => @obj.id} end |
.method_missing(method, *args, &block) ⇒ Object
Catch incoming method calls and try to format them and send them over to the api
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/piwik/api_module.rb', line 11 def self.method_missing(method, *args, &block) formatted_method = method.to_s.camelize(:lower) formatted_method = formatted_method.gsub(/ip$/i,'IP').gsub(/os/i,'OS') # Lame # connect to API if this is a valid-looking method in the current class context if @available_methods.include?(formatted_method) handle_api_call(formatted_method, args.first) else super end end |
.scoped_methods(&block) ⇒ Object
allows the addition of scoped methods. It’s basically a class << self wrapper mostly added to make ApiModule code more self-explanatory the @obj instance variable is set in the api_scope call. This is not very clean or anything, and I am still researching a better way to do it, but the Piwik::Site API is certainly much better to work with due to this
27 28 29 30 31 32 |
# File 'lib/piwik/api_module.rb', line 27 def self.scoped_methods &block if block_given? extension = Module.new(&Proc.new) self.extend(extension) end end |