class Edmunds::Api::Request
Attributes
allowed_parameters[W]
default_parameters[W]
path[R]
raw_parameters[W]
required_parameters[W]
Public Class Methods
new(path)
click to toggle source
# File lib/edmunds/api/request.rb, line 9 def initialize(path) @path = path end
Public Instance Methods
get()
click to toggle source
# File lib/edmunds/api/request.rb, line 17 def get Faraday.get(@path, parameters) end
parameters()
click to toggle source
# File lib/edmunds/api/request.rb, line 13 def parameters sanitized_parameters end
Private Instance Methods
api_key()
click to toggle source
# File lib/edmunds/api/request.rb, line 71 def api_key { api_key: ENV['EDMUNDS_API_KEY'] } end
check_required(params)
click to toggle source
# File lib/edmunds/api/request.rb, line 43 def check_required(params) @required_parameters.each do |param| raise "missing required parameter #{param}" if params[param].blank? end params end
check_values(params)
click to toggle source
# File lib/edmunds/api/request.rb, line 50 def check_values(params) params.each do |param, value| raise "bad parameter value #{value} for param #{param}" unless valid_param?(param, value) end params end
sanitized_parameters()
click to toggle source
# File lib/edmunds/api/request.rb, line 23 def sanitized_parameters @allowed_parameters = @allowed_parameters.with_indifferent_access params = @raw_parameters.with_indifferent_access # merge in default parameters params.reverse_merge! @default_parameters # throw away unknown parameters params.slice! *@allowed_parameters.keys # confirm required parameters are present check_required(params) # confirm parameter values are allowed check_values(params) # merge or override api_key params.merge! api_key end
valid_param?(param, value)
click to toggle source
# File lib/edmunds/api/request.rb, line 57 def valid_param?(param, value) constraint = @allowed_parameters[param] if constraint == :anything true elsif constraint.respond_to?(:cover?) constraint.cover?(value) elsif constraint.respond_to?(:match) !! constraint.match(value) else constraint.include?(value) end end