class RailsRunSignUp::Races

Attributes

races[RW]

Public Class Methods

new(session) click to toggle source
# File lib/RailsRunSignUp/races.rb, line 8
def initialize session
  raise RailsRunSignUp::SessionError, "Invalid session (session cannot be nil)" if session.nil?
  
  @races = []
  @access_token = session.access_token
  @api_key = session.api_key
  @api_secret = session.api_secret
end

Public Instance Methods

get_race(opts) click to toggle source

Retrieve all info for a race using race_id

@author Khang Le param int specifies the race to get (mandatory) see runsignup api documentation for extra parameters

# File lib/RailsRunSignUp/races.rb, line 44
def get_race opts
  raise RailsRunSignUp::RaceError, "Missing parameter {race_id}" if opts[:race_id].nil?
  
  response = @access_token.get("/rest/race/#{opts[:race_id]}/?format=json&race_id=#{opts[:race_id]}")
  json_response = JSON.parse(response.body)
  opts[:events] = "T"
  
                    raise RailsRunSignUp::RaceError, "RailsRunSignUp race.get Error: #{json_response['error']['error_code']} - #{json_response['error']['error_msg']}" unless json_response['error'].nil?
  
  parse_race json_response, opts
end
get_races(opts = {}) click to toggle source

get races from runsignup

@author Khang Le param T/F appends affiliate token to end of string, default T param T/F shows events with each race, default F param T/F shows heading with each race, default F param T/F shows links of each race, default F param int specifies which page to return, default 1 param int specifies how many results to return per page, default 10 param specifies how to sort results (name or date, descending or ascending), default name+ASC param search race by name see runsignup api documentation for extra parameters

# File lib/RailsRunSignUp/races.rb, line 29
def get_races opts = {}
  response = @access_token.get("/Rest/races/?format=json&#{opts.map{|k, v| "#{k}=#{v}"}.join('&')}")
  json_response = JSON.parse(response.body)
  
  raise RailsRunSignUp::RaceError, "RunSignUp races.get Error: #{json_response['error']['error_code']} - #{json_response['error']['error_msg']}" unless json_response['error'].nil?

  self.races = parse_json json_response, opts unless json_response.nil?
  self.races
end
parse_json(json_response, opts) click to toggle source
# File lib/RailsRunSignUp/races.rb, line 56
def parse_json json_response, opts
  races = []
  count = 0
  
  return if json_response['races'].nil?
  
  json_response['races'].each do |race|
    _race = parse_race race, opts
    races << _race
    count = count + 1
    break if !opts[:limit].nil? && count >= opts[:limit].to_i
  end
  races
end
parse_race(race, opts) click to toggle source
# File lib/RailsRunSignUp/races.rb, line 71
def parse_race race, opts
  _race = RailsRunSignUp::Model::Race.new(
    :access_token => @access_token,
    :api_key => @api_key,
    :api_secret => @api_secret,
      :id => race['race']['race_id'],
    :name => race['race']['name'],
    :description => race['race']['description'],
    :url => race['race']['url'],
    :next_date => race['race']['next_date'],
    :last_date => race['race']['last_date'],
    :is_registration_open => race['race']['is_registration_open'],
    :is_draft_race => race['race']['is_draft_race'],
    :street => race['race']['address']['street'],
    :city => race['race']['address']['city'],
    :state => race['race']['address']['state'],
    :zip_code => race['race']['address']['zip_code'],
    :country_code => race['race']['address']['country_code']
    )
  
  if !opts[:events].nil? && opts[:events] === "T"
    race['race']['events'].each do |event|
      _event = RailsRunSignUp::Model::Event.new(
        :id => event['event_id'],
        :name => event['name'],
        :details => event['details'],
        :start_time =>  event['start_time'],
        :registration_opens => event['registration_opens'],
        :event_type => event['event_type'],
        :distance => event['distance'],
        :volunteer => event['volunteer'],
        :require_dob => event['require_dob'],
        :require_phone => event['require_phone'],
        :give_away => event['give_away']
      )
    
      event['registration_periods'].each do |period|
        _period = RailsRunSignUp::Model::RegistrationPeriod.new(
          :registration_opens => period['registration_opens'],
          :registration_closes => period['registration_closes'],
          :race_fee => period['race_fee']
        )
        _event.add_registration_period _period
      end
      _race.add_event _event 
    end
  end
  _race
end