Class: JsonapiCompliable::Deserializer
- Inherits:
-
Object
- Object
- JsonapiCompliable::Deserializer
- Defined in:
- lib/jsonapi_compliable/deserializer.rb
Instance Method Summary collapse
- #attributes ⇒ Object
- #attributes=(attrs) ⇒ Object
- #data ⇒ Object
- #id ⇒ Object
- #include_directive(memo = {}, relationship_node = nil) ⇒ Object
- #included ⇒ Object
-
#initialize(payload, env) ⇒ Deserializer
constructor
A new instance of Deserializer.
- #meta ⇒ Object
- #method ⇒ Object
- #relationships ⇒ Object
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 { 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 |