class Sports::Butler::Api

Attributes

api_name[RW]
errors[RW]
headers[RW]
parsed_response[RW]
query[RW]
response[RW]
response_code[RW]
sport[RW]
success[RW]
uri[RW]
url[RW]

Public Class Methods

get(url:, sport: nil, api_name: nil, filters: {}, headers: {}) click to toggle source
# File lib/sports/butler/api.rb, line 70
def get(url:, sport: nil, api_name: nil, filters: {}, headers: {})

  if sport && api_name
    if Configuration.invalid_config?(sport, api_name)
      return Sports::Butler::ApiBase.invalid_config_result
    end

    headers  = Configuration.http_party_headers(sport, api_name)
    url      = Configuration.http_party_url_suffix(url, sport, api_name)
  end

  query   = filters || {}

  HTTParty.get "#{url}",
               headers: headers,
               query: query,
               format: :json
end
new(sport, api_name) click to toggle source
# File lib/sports/butler/api.rb, line 12
def initialize(sport, api_name)
  @sport    = sport
  @api_name = api_name

  @response = nil
  @success  = false
  @errors   = []

  @response_code = nil
end

Public Instance Methods

error_message(error) click to toggle source
# File lib/sports/butler/api.rb, line 55
def error_message(error)
  { message: error }.with_indifferent_access
end
get(path:, filters: {}) click to toggle source
# File lib/sports/butler/api.rb, line 23
def get(path:, filters: {})
  if Configuration.invalid_config?(sport, api_name)
    @response = Sports::Butler::ApiBase.invalid_config_result
    @response_code = 400
    return false
  end

  @response           = process_http_party(path, filters)
  @response_code      = response.code
  @success            = true if response_code == 200
  @parsed_response    = process_response(response)
  @uri                = response.request.last_uri&.to_s

  true
end
http_party_get() click to toggle source
# File lib/sports/butler/api.rb, line 59
def http_party_get
  HTTParty.get(
    "#{url}",
    headers: headers,
    query: query,
    format: :json
  )
end
process_http_party(path, filters) click to toggle source
# File lib/sports/butler/api.rb, line 39
def process_http_party(path, filters)
  @headers  = Configuration.http_party_headers(sport, api_name)
  @url      = Configuration.http_party_url(path, sport, api_name)
  @query    = filters || {}

  http_party_get
end
process_response(response) click to toggle source
# File lib/sports/butler/api.rb, line 47
def process_response(response)
  if response.parsed_response.is_a?(Hash) && response.dig('message')
    error_message(response['message'])
  else
    response.parsed_response
  end
end