Skip to content

Commit e05431c

Browse files
richmoljbeauby
authored andcommitted
Remove "unexpected key" validations. (#3)
1 parent 8de476a commit e05431c

File tree

1 file changed

+0
-18
lines changed

1 file changed

+0
-18
lines changed

lib/jsonapi/parser/document.rb

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)