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