Class: JsonApiClient::Mapper

Inherits:
Object
  • Object
show all
Defined in:
lib/json_api_client/mapper.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(primary_resource, primary_resource_methods = nil) ⇒ Mapper

Returns a new instance of Mapper.



8
9
10
11
12
13
# File 'lib/json_api_client/mapper.rb', line 8

def initialize(primary_resource, primary_resource_methods = nil)
  @classes = {}
  @class_ids = {} # Keeps track of current class ids
  @primary_resource = primary_resource
  @primary_resource_methods = primary_resource_methods
end

Instance Attribute Details

#primary_resourceObject (readonly)

Returns the value of attribute primary_resource.



6
7
8
# File 'lib/json_api_client/mapper.rb', line 6

def primary_resource
  @primary_resource
end

#primary_resource_methodsObject (readonly)

Returns the value of attribute primary_resource_methods.



6
7
8
# File 'lib/json_api_client/mapper.rb', line 6

def primary_resource_methods
  @primary_resource_methods
end

Instance Method Details

#call(data, resource_type = primary_resource) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/json_api_client/mapper.rb', line 15

def call(data, resource_type = primary_resource)
  data.fetch(resource_type).map do |resource|
    except_links = resource.reject { |k, _| k == "links" }

    apply_linked_resources(resource, data, except_links)

    build_resource(resource_type, except_links, &primary_resource_methods)
  end
end