Class: JsonapiCompliable::Deserializer

Inherits:
Object
  • Object
show all
Defined in:
lib/jsonapi_compliable/deserializer.rb

Instance Method Summary collapse

Constructor Details

#initialize(payload, env) ⇒ Deserializer

Returns a new instance of Deserializer.



2
3
4
5
# File 'lib/jsonapi_compliable/deserializer.rb', line 2

def initialize(payload, env)
  @payload = payload
  @env = env
end

Instance Method Details

#attributes ⇒ Object



15
16
17
18
19
# File 'lib/jsonapi_compliable/deserializer.rb', line 15

def attributes
  @attributes ||= raw_attributes.tap do |hash|
    hash.merge!(id: id) if id
  end
end

#attributes=(attrs) ⇒ Object



21
22
23
# File 'lib/jsonapi_compliable/deserializer.rb', line 21

def attributes=(attrs)
  @attributes = attrs
end

#data ⇒ Object



7
8
9
# File 'lib/jsonapi_compliable/deserializer.rb', line 7

def data
  @payload[:data]
end

#id ⇒ Object



11
12
13
# File 'lib/jsonapi_compliable/deserializer.rb', line 11

def id
  data[:id]
end

#include_directive(memo = {}, relationship_node = nil) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/jsonapi_compliable/deserializer.rb', line 49

def include_directive(memo = {}, relationship_node = nil)
  relationship_node ||= relationships

  relationship_node.each_pair do |name, relationship_payload|
    arrayified = [relationship_payload].flatten
    next if arrayified.all? { |rp| removed?(rp) }

    memo[name] ||= {}
    deep_merge!(memo[name], sub_directives(memo[name], arrayified))
  end

  memo
end

#included ⇒ Object



45
46
47
# File 'lib/jsonapi_compliable/deserializer.rb', line 45

def included
  @payload[:included] || []
end

#meta ⇒ Object



33
34
35
36
37
38
39
# File 'lib/jsonapi_compliable/deserializer.rb', line 33

def meta
  {
    type: data[:type],
    temp_id: data[:'temp-id'],
    method: method
  }
end

#method ⇒ Object



25
26
27
28
29
30
31
# File 'lib/jsonapi_compliable/deserializer.rb', line 25

def method
  case @env['REQUEST_METHOD']
    when 'POST' then :create
    when 'PUT', 'PATCH' then :update
    when 'DELETE' then :destroy
  end
end

#relationships ⇒ Object



41
42
43
# File 'lib/jsonapi_compliable/deserializer.rb', line 41

def relationships
  @relationships ||= process_relationships(raw_relationships)
end