33module JSONAPI
44 module Rails
55 class SuccessRenderer
6- def self . render ( resources , options )
6+ def initialize ( renderer = JSONAPI ::Serializable ::SuccessRenderer . new )
7+ @renderer = renderer
8+
9+ freeze
10+ end
11+
12+ def render ( resources , options )
713 opts = options . dup
814 # TODO(beauby): Move this to a global configuration.
915 default_exposures = {
@@ -12,29 +18,20 @@ def self.render(resources, options)
1218 opts [ :expose ] = default_exposures . merge! ( opts [ :expose ] || { } )
1319 opts [ :jsonapi ] = opts . delete ( :jsonapi_object )
1420
15- JSONAPI :: Serializable :: Renderer . render ( resources , opts )
21+ @renderer . render ( resources , opts )
1622 end
1723 end
1824
19- class ErrorRenderer
20- def self . render ( errors , options )
21- # TODO(beauby): SerializableError inference on AR validation errors.
22- JSONAPI ::Serializable ::ErrorRenderer . render ( errors , options )
23- end
24- end
25+ class ErrorsRenderer
26+ def initialize ( renderer = JSONAPI ::Serializable ::ErrorsRenderer . new )
27+ @renderer = renderer
2528
26- module_function
29+ freeze
30+ end
2731
28- # @api private
29- def rails_renderer ( renderer )
30- proc do |json , options |
31- # Renderer proc is evaluated in the controller context, so it
32- # has access to the request object.
33- reverse_mapping = request . env [ ActionController ::REVERSE_MAPPING_KEY ]
34- options = options . merge ( _reverse_mapping : reverse_mapping )
35- json = renderer . render ( json , options ) . to_json unless json . is_a? ( String )
36- self . content_type ||= Mime [ :jsonapi ]
37- self . response_body = json
32+ def render ( errors , options )
33+ # TODO(beauby): SerializableError inference on AR validation errors.
34+ @renderer . render ( errors , options )
3835 end
3936 end
4037 end
0 commit comments