Class: JsonAPIObjectMapper::Parser::Document

Inherits:
Object
  • Object
show all
Includes:
Errors
Defined in:
lib/jsonapi-object-mapper/parser/document.rb

Instance Attribute Summary collapse

Attributes included from Errors

#errors

Instance Method Summary collapse

Methods included from Errors

#invalid?, #valid?

Constructor Details

#initialize(document) ⇒ Document

Returns a new instance of Document.



13
14
15
16
17
18
19
20
# File 'lib/jsonapi-object-mapper/parser/document.rb', line 13

def initialize(document)
  parsed_document = (document.is_a?(String) ? ::Oj.load(document) : document)
  @includes       = IncludedResources.load(parsed_document.delete("included"))
  @links          = deserialize_links(parsed_document.delete("links")).freeze
  @document       = parsed_document.freeze
  @errors         = deserialize_errors!.freeze
  freeze
end

Instance Attribute Details

#documentObject (readonly)

Returns the value of attribute document.



11
12
13
# File 'lib/jsonapi-object-mapper/parser/document.rb', line 11

def document
  @document
end

#includesObject (readonly)

Returns the value of attribute includes.



11
12
13
# File 'lib/jsonapi-object-mapper/parser/document.rb', line 11

def includes
  @includes
end

Returns the value of attribute links.



11
12
13
# File 'lib/jsonapi-object-mapper/parser/document.rb', line 11

def links
  @links
end

Instance Method Details

#contains_data_array?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/jsonapi-object-mapper/parser/document.rb', line 26

def contains_data_array?
  document_data.is_a?(Array)
end

#deserialize_errors!Object



30
31
32
33
# File 'lib/jsonapi-object-mapper/parser/document.rb', line 30

def deserialize_errors!
  return [] unless @document.key?("errors")
  Set.new(@document["errors"]) { |error| OpenStruct.new(error) }
end


35
36
37
38
39
# File 'lib/jsonapi-object-mapper/parser/document.rb', line 35

def deserialize_links(links)
  links&.each_with_object(OpenStruct.new) do |(key, value), struct|
    struct[key.to_s.tr("-", "_")] = value
  end
end

#document_dataObject



22
23
24
# File 'lib/jsonapi-object-mapper/parser/document.rb', line 22

def document_data
  @document["data"] || @document
end