Class: FunWithJsonApi::PreDeserializer

Inherits:
Object
  • Object
show all
Defined in:
lib/fun_with_json_api/pre_deserializer.rb

Overview

Converts a json_api document into a rails compatible hash. Acts as an adaptor for ActiveModuleSerializer deserializer classes

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(document, deserializer) ⇒ PreDeserializer

Returns a new instance of PreDeserializer.



15
16
17
18
# File 'lib/fun_with_json_api/pre_deserializer.rb', line 15

def initialize(document, deserializer)
  @document = document.to_h.deep_dup.deep_stringify_keys
  @deserializer = deserializer
end

Instance Attribute Details

#deserializerObject (readonly)

Returns the value of attribute deserializer.



13
14
15
# File 'lib/fun_with_json_api/pre_deserializer.rb', line 13

def deserializer
  @deserializer
end

#documentObject (readonly)

Returns the value of attribute document.



12
13
14
# File 'lib/fun_with_json_api/pre_deserializer.rb', line 12

def document
  @document
end

Class Method Details

.parse(document, deserializer) ⇒ Object



8
9
10
# File 'lib/fun_with_json_api/pre_deserializer.rb', line 8

def self.parse(document, deserializer)
  new(document, deserializer).parse
end

Instance Method Details

#parseObject



20
21
22
23
24
25
26
27
# File 'lib/fun_with_json_api/pre_deserializer.rb', line 20

def parse
  ams_deserializer_class.parse(document, ams_deserializer_config) do |invalid_document, reason|
    exception_message = "Invalid payload (#{reason}): #{invalid_document}"
    exception = convert_reason_into_exceptions(exception_message, reason).first ||
                Exceptions::InvalidDocument.new(exception_message)
    raise exception
  end
end