Class: Agave::JsonApiDeserializer

Inherits:
Object
  • Object
show all
Defined in:
lib/agave/json_api_deserializer.rb

Instance Method Summary collapse

Instance Method Details

#deserialize(data) ⇒ Object



4
5
6
7
8
9
10
11
12
# File 'lib/agave/json_api_deserializer.rb', line 4

def deserialize(data)
  data = data[:data]

  if data.is_a? Array
    data.map { |resource| deserialize_resource(resource) }
  else
    deserialize_resource(data)
  end
end

#deserialize_resource(data) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/agave/json_api_deserializer.rb', line 14

def deserialize_resource(data)
  result = { id: data[:id] }

  if data[:attributes]
    result.merge!(data[:attributes])
  end

  relationships = data.delete(:relationships)

  if relationships
    relationships.each do |key, handle|
      handle_data = handle['data']
      value = if handle_data.is_a? Array
                handle_data.map { |ref| ref['id'] }
              elsif handle_data.is_a? Hash
                handle_data[:id]
              end
      result[key] = value
    end
  end

  result.with_indifferent_access
end