Sha256: 4561079f6b1624db5d7d42030b5895233c6d2d24ee00d26b53ae9d1e3d7ef34b

Contents?: true

Size: 1.96 KB

Versions: 6

Compression:

Stored size: 1.96 KB

Contents

require 'multi_json'
require 'nokogiri'
require 'rest_client'
require 'sports_data_api/request'
require 'sports_data_api/version'
require 'time'

module SportsDataApi
  class << self
    def key(sport)
      @key ||= {}
      @key[sport] ||= ''
      @key[sport]
    end

    def set_key(sport, new_key)
      @key ||= {}
      @key[sport] = new_key
    end

    def access_level(sport)
      @access_level ||= {}
      @access_level[sport] ||= 't'
      @access_level[sport]
    end

    def set_access_level(sport, new_level)
      @access_level ||= {}
      @access_level[sport] = new_level
    end

    def generic_request(url, sport)
      begin
        RestClient.get(url, params: { api_key: SportsDataApi.key(sport) })
      rescue RestClient::RequestTimeout
        raise Error, 'The API did not respond in a reasonable amount of time'
      rescue RestClient::Exception => e
        raise Error, exception_message(e)
      end
    end

    private

    def exception_message(e)
      if e.response.headers.key? :x_server_error
        JSON.parse(e.response.headers[:x_server_error])['message']
      elsif e.response.headers.key? :x_mashery_error_code
        e.response.headers[:x_mashery_error_code]
      else
        'The server did not specify a message'
      end
    end
  end

  LIBRARY_PATH = File.join(File.dirname(__FILE__), 'sports_data_api')

  autoload :Error,       File.join(LIBRARY_PATH, 'error')
  autoload :Golf,        File.join(LIBRARY_PATH, 'golf')
  autoload :JsonData,    File.join(LIBRARY_PATH, 'json_data')
  autoload :MergedStats, File.join(LIBRARY_PATH, 'merged_stats')
  autoload :Mlb,         File.join(LIBRARY_PATH, 'mlb')
  autoload :Nba,         File.join(LIBRARY_PATH, 'nba')
  autoload :Ncaafb,      File.join(LIBRARY_PATH, 'ncaafb')
  autoload :Ncaamb,      File.join(LIBRARY_PATH, 'ncaamb')
  autoload :Nfl,         File.join(LIBRARY_PATH, 'nfl')
  autoload :Nhl,         File.join(LIBRARY_PATH, 'nhl')
  autoload :Stats,       File.join(LIBRARY_PATH, 'stats')
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
sports_data_api-0.15.3 lib/sports_data_api.rb
sports_data_api-0.15.2 lib/sports_data_api.rb
sports_data_api-0.15.1 lib/sports_data_api.rb
sports_data_api-0.15.0 lib/sports_data_api.rb
sports_data_api-0.14.1 lib/sports_data_api.rb
sports_data_api-0.14.0 lib/sports_data_api.rb