class HttpApiTools::Sideloading::SideloadMap

Attributes

identity_map[RW]
root_key[RW]

Public Class Methods

new(json, root_key) click to toggle source
# File lib/http_api_tools/sideloading/sideload_map.rb, line 9
def initialize(json, root_key)

  @root_key = root_key
  @identity_map = IdentityMap.new

  build_from_json(json)
end

Public Instance Methods

get(type, id) click to toggle source
# File lib/http_api_tools/sideloading/sideload_map.rb, line 17
def get(type, id)
  identity_map.get(type.singularize, id)
end
get_all(type, ids) click to toggle source
# File lib/http_api_tools/sideloading/sideload_map.rb, line 21
def get_all(type, ids)
  ids.map { |id| get(type, id)}.compact
end
inspect() click to toggle source
# File lib/http_api_tools/sideloading/sideload_map.rb, line 25
def inspect
  identity_map.inspect
end

Private Instance Methods

build_from_json(json) click to toggle source
# File lib/http_api_tools/sideloading/sideload_map.rb, line 38
def build_from_json(json)

  json[root_key].each do |json_item|
    put(root_key, json_item['id'], json_item)
  end

  if json['linked']
    json['linked'].each do |type_key, sideloaded_json_item|
      sideloaded_json_item.each { |json_item| put(type_key, json_item['id'], json_item) }
    end
  end

end
put(type, id, object) click to toggle source
# File lib/http_api_tools/sideloading/sideload_map.rb, line 34
def put(type, id, object)
  identity_map.put(type.singularize, id, object)
end