class PokeApi::NamedApiResource

Base class with shared methods for all Named API Resources

Attributes

id[R]
name[R]
url[R]

Public Instance Methods

get() click to toggle source
# File lib/poke_api/named_api_resource.rb, line 8
def get
  return if id

  data = Fetcher.call_uri(url)
  assign_data(data)
  self
end

Private Instance Methods

assign_data(data) click to toggle source
# File lib/poke_api/named_api_resource.rb, line 18
def assign_data(data)
  return unless data

  data.each_key do |key|
    data_chunk = data[key]
    if (klass = endpoint_assignment(key: key, custom_endpoint_object: custom_endpoint_object))
      assign_object(klass, data_chunk, key)
    else
      instance_variable_set("@#{key}", data_chunk)
    end
  end
end
assign_object(klass, data, key) click to toggle source
# File lib/poke_api/named_api_resource.rb, line 31
def assign_object(klass, data, key)
  return unless data

  assignment = if data.is_a? Array
                 assign_list(klass: klass, data: data)
               else
                 klass.new(data)
               end
  instance_variable_set("@#{key}", assignment)
end