class NikeV2::Activities
Constants
- API_ARGS
- API_URL
Public Class Methods
new(attributes = {})
click to toggle source
Calls superclass method
# File lib/nike_v2/activities.rb, line 28 def initialize(attributes = {}) raise "#{self.class} requires a person." unless attributes.keys.include?(:person) @build_metrics = attributes.delete(:build_metrics) || false api_args = extract_api_args(attributes) set_attributes(attributes) @activities_array = [] #TODO: make it pass blocks activities = fetch_data(api_args) if !activities.nil? && !activities['data'].nil? build_activities(activities.delete('data')) super(activities) end end
Public Instance Methods
fetch_all()
click to toggle source
# File lib/nike_v2/activities.rb, line 51 def fetch_all until (self.paging['next'].nil? || self.paging['next'] == '') do fetch_and_build_activities end self end
fetch_more()
click to toggle source
# File lib/nike_v2/activities.rb, line 44 def fetch_more unless self.paging['next'].nil? || self.paging['next'] == '' fetch_and_build_activities end self end
paging()
click to toggle source
# File lib/nike_v2/activities.rb, line 58 def paging @paging ||= '' end
Private Instance Methods
build_activities(data)
click to toggle source
# File lib/nike_v2/activities.rb, line 69 def build_activities(data) if data data.each do |activity| self << NikeV2::Activity.new({:person => self}.merge(activity)) end end if @build_metrics self.collect(&:load_data) end end
camelize_word(word, first_letter_in_uppercase = false)
click to toggle source
# File lib/nike_v2/activities.rb, line 85 def camelize_word(word, first_letter_in_uppercase = false) if !!first_letter_in_uppercase word.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase } else (word[0].to_s.downcase + camelize_word(word, true)[1..-1]).to_sym end end
extract_api_args(args)
click to toggle source
# File lib/nike_v2/activities.rb, line 81 def extract_api_args(args) args.inject({}){|h,a| h[camelize_word(a.first)] = a.last if API_ARGS.include?(a.first); h} end
fetch_and_build_activities()
click to toggle source
# File lib/nike_v2/activities.rb, line 93 def fetch_and_build_activities url, query = self.paging['next'].match(/^(.*?)\?(.*)$/)[1,2] query = query.split(/&/).inject({}){|h,item| k, v = item.split(/\=/); h[k] = v;h} activities = fetch_data(query) build_activities(activities.delete('data')) @paging = activities.delete('paging') end
sum_of(method_var_name)
click to toggle source
# File lib/nike_v2/activities.rb, line 65 def sum_of(method_var_name) self.collect(&:"#{method_var_name}").inject(:+) || 0.00 end