@@ -4,12 +4,7 @@ module JSONAPI
44 module Parser
55 class Document
66 TOP_LEVEL_KEYS = %w( data errors meta ) . freeze
7- EXTENDED_TOP_LEVEL_KEYS =
8- ( TOP_LEVEL_KEYS + %w( jsonapi links included ) ) . freeze
9- RESOURCE_KEYS = %w( id type attributes relationships links meta ) . freeze
107 RESOURCE_IDENTIFIER_KEYS = %w( id type ) . freeze
11- EXTENDED_RESOURCE_IDENTIFIER_KEYS =
12- ( RESOURCE_IDENTIFIER_KEYS + %w( meta ) ) . freeze
138 RELATIONSHIP_KEYS = %w( data links meta ) . freeze
149 RELATIONSHIP_LINK_KEYS = %w( self related ) . freeze
1510 JSONAPI_OBJECT_KEYS = %w( version meta ) . freeze
@@ -22,9 +17,6 @@ def self.parse!(document)
2217 ensure! ( document . is_a? ( Hash ) ,
2318 'A JSON object MUST be at the root of every JSON API request ' \
2419 'and response containing data.' )
25- unexpected_keys = document . keys - EXTENDED_TOP_LEVEL_KEYS
26- ensure! ( unexpected_keys . empty? ,
27- "Unexpected members at top level: #{ unexpected_keys } ." )
2820 ensure! ( !( document . keys & TOP_LEVEL_KEYS ) . empty? ,
2921 "A document MUST contain at least one of #{ TOP_LEVEL_KEYS } ." )
3022 ensure! ( !( document . key? ( 'data' ) && document . key? ( 'errors' ) ) ,
@@ -59,9 +51,6 @@ def self.parse_data!(data)
5951 def self . parse_primary_resource! ( res )
6052 ensure! ( res . is_a? ( Hash ) , 'A resource object must be an object.' )
6153 ensure! ( res . key? ( 'type' ) , 'A resource object must have a type.' )
62- unexpected_keys = res . keys - RESOURCE_KEYS
63- ensure! ( unexpected_keys . empty? ,
64- "Unexpected members for primary resource: #{ unexpected_keys } " )
6554 parse_attributes! ( res [ 'attributes' ] ) if res . key? ( 'attributes' )
6655 parse_relationships! ( res [ 'relationships' ] ) if res . key? ( 'relationships' )
6756 parse_links! ( res [ 'links' ] ) if res . key? ( 'links' )
@@ -90,9 +79,6 @@ def self.parse_relationships!(rels)
9079 # @api private
9180 def self . parse_relationship! ( rel )
9281 ensure! ( rel . is_a? ( Hash ) , 'A relationship object must be an object.' )
93- unexpected_keys = rel . keys - RELATIONSHIP_KEYS
94- ensure! ( unexpected_keys . empty? ,
95- "Unexpected members for relationship: #{ unexpected_keys } " )
9682 ensure! ( !rel . keys . empty? ,
9783 'A relationship object MUST contain at least one of ' \
9884 "#{ RELATIONSHIP_KEYS } " )
@@ -119,10 +105,6 @@ def self.parse_relationship_data!(data)
119105 def self . parse_resource_identifier! ( ri )
120106 ensure! ( ri . is_a? ( Hash ) ,
121107 'A resource identifier object must be an object' )
122- unexpected_keys = ri . keys - EXTENDED_RESOURCE_IDENTIFIER_KEYS
123- ensure! ( unexpected_keys . empty? ,
124- 'Unexpected members for resource identifier: ' \
125- "#{ unexpected_keys } ." )
126108 ensure! ( RESOURCE_IDENTIFIER_KEYS & ri . keys == RESOURCE_IDENTIFIER_KEYS ,
127109 'A resource identifier object MUST contain ' \
128110 "#{ RESOURCE_IDENTIFIER_KEYS } members." )
0 commit comments