@@ -11,26 +11,25 @@ def self.included(base)
1111 end
1212
1313 module ClassMethods
14- def deserializable_resource ( key , *args , &block )
15- klass = args . shift unless args . first . is_a? ( Hash )
16- options = args . first || { }
17- if klass . nil?
18- klass = Class . new ( JSONAPI ::Deserializable ::Resource , &block )
19- end
20- use DeserializeResource , key , klass , options
14+ def deserializable_resource ( key , options = { } , &block )
15+ _deserializable ( key , options ,
16+ JSONAPI ::Deserializable ::Resource , &block )
2117 end
2218
23- def deserializable_relationship ( key , *args , &block )
24- klass = args . shift unless args . first . is_a? ( Hash )
25- options = args . first || { }
26- if klass . nil?
27- klass = Class . new ( JSONAPI ::Deserializable ::Relationship , &block )
28- end
29- use DeserializeResource , key , klass , options
19+ def deserializable_relationship ( key , options = { } , &block )
20+ _deserializable ( key , options ,
21+ JSONAPI ::Deserializable ::Relationship , &block )
22+ end
23+
24+ # @api private
25+ def _deserializable ( key , options , fallback , &block )
26+ options = options . dup
27+ klass = options . delete ( :class ) || Class . new ( fallback , &block )
28+ use Deserialization , key , klass , options
3029 end
3130 end
3231
33- class DeserializationMiddleware
32+ class Deserialization
3433 REQUEST_PARAMETERS_KEY =
3534 'action_dispatch.request.request_parameters' . freeze
3635 def initialize ( app , key , klass )
@@ -42,7 +41,6 @@ def initialize(app, key, klass)
4241 def call ( env )
4342 request = Rack ::Request . new ( env )
4443 body = JSON . parse ( request . body . read )
45- parser . parse! ( body )
4644 deserialized_hash = @deserializable_class . call ( body )
4745 ( env [ REQUEST_PARAMETERS_KEY ] ||= { } ) . tap do |request_parameters |
4846 request_parameters [ @deserializable_key ] = deserialized_hash
@@ -51,18 +49,6 @@ def call(env)
5149 @app . call ( env )
5250 end
5351 end
54-
55- class DeserializeResource < DeserializationMiddleware
56- def parser
57- JSONAPI ::Parser ::Resource
58- end
59- end
60-
61- class DeserializeRelationship < DeserializationMiddleware
62- def parser
63- JSONAPI ::Parser ::Relationship
64- end
65- end
6652 end
6753 end
6854end
0 commit comments