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