class NikePlus::Client

Attributes

authorization_response[R]
screenname[R]
user[R]

Public Class Methods

new( options={} ) click to toggle source

Initializes a new NikePlus::Client object.

Configuration options are:

  • email - Nike+ account email address.

  • password - Nike+ account password.

  • debug- Debug flag, set to true for debugging output.

Example:

nike = NikePlus::Client.new( :email => 'test@nikeplus.com', :password => 'mypassword' )
# File lib/nike_plus/client.rb, line 19
def initialize( options={} )
  @email = options[:email]
  @password = options[:password]
  @debug = options[:debug] 
  
  @agent = Mechanize.new

  url = 'https://secure-nikeplus.nike.com/nsl/services/user/login?app=b31990e7-8583-4251-808f-9dc67b40f5d2&format=json&contentType=plaintext'
  @authorization_response = post(url, { :email => @email, :password => @password })

  if @authorization_response.serviceResponse.header.success == 'true'
    @user = @authorization_response.serviceResponse.body.User
    @screenname = @user.screenName
  else
    raise @authorization_response.serviceResponse.header.errorCodes.first.message
  end
end

Public Instance Methods

activities() click to toggle source

Return an array of NikePlus::ActivitySummary objects. To retrieve full details on the activity use the activity method.

Example:

activities = nike.activities # => [NikePlus::ActivitySummary, NikePlus::ActivitySummary]
activity = nike.activity( activities[0].activityId ) # => NikePlus::Activity
# File lib/nike_plus/client.rb, line 42
def activities
  url = "http://nikeplus.nike.com/plus/activity/running/#{ @screenname }/lifetime/activities?indexStart=0&indexEnd=9999"
  data = get(url)
  activity_list = data.activities.any? ? data.activities.collect { |a| NikePlus::ActivitySummary.new( a.activity ) } : []
end
activity( id ) click to toggle source

Return full details on a specific activity.

Params:

Example:

nike.activity( 123456 ) # => NikePlus::Activity
# File lib/nike_plus/client.rb, line 55
def activity( id )
  url = "http://nikeplus.nike.com/plus/running/ajax/#{ id }"
  data = get(url)
  activity = NikePlus::Activity.new( data.activity ) if data.activity
end
activity_ids() click to toggle source

Return an array of activity ids.

Example:

nike.activity_ids # => [100, 101, 102, 103]
# File lib/nike_plus/client.rb, line 65
def activity_ids
  self.activities.collect(&:activityId)
end

Private Instance Methods

get( path ) click to toggle source
# File lib/nike_plus/client.rb, line 71
def get( path )
  response = @agent.get( path )
  parse( response )
end
parse( response ) click to toggle source
# File lib/nike_plus/client.rb, line 81
def parse( response )
  hash = Hashie::Mash.new()
  begin
    json = JSON.parse( response.body )
    hash = Hashie::Mash.new( json )
  rescue
    warn "[ERROR] #{ $! }" if @debug
  end
  hash
end
post( path, params ) click to toggle source
# File lib/nike_plus/client.rb, line 76
def post( path, params )
  response = @agent.post( path, params )
  parse( response )
end