Module: LinkedRails::Controller::Rendering

Defined in:
lib/linked_rails/controller/rendering.rb

Instance Method Summary collapse

Instance Method Details

#_render_with_renderer_json(record, options) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/linked_rails/controller/rendering.rb', line 6

def _render_with_renderer_json(record, options)
  self.content_type = Mime[:json]

  return record if record.is_a?(String)
  return record.to_json if record.is_a?(Hash)

  serializer_opts = RDF::Serializers::Renderers.transform_opts(
    options,
    serializer_params
  )

  serializer = RDF::Serializers.serializer_for(record)&.new(record, serializer_opts)
  return record.to_json unless serializer

  Oj.dump(serializer.serializable_hash, mode: :compat)
end

#resource_body(resource) ⇒ Object



23
24
25
# File 'lib/linked_rails/controller/rendering.rb', line 23

def resource_body(resource)
  resource_serializer(resource).send(:render_emp_json)
end

#resource_hash(resource) ⇒ Object



27
28
29
# File 'lib/linked_rails/controller/rendering.rb', line 27

def resource_hash(resource)
  resource_serializer(resource).send(:emp_json_hash)
end

#resource_serializer(resource) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/linked_rails/controller/rendering.rb', line 31

def resource_serializer(resource)
  return if resource.nil?

  serializer_options = RDF::Serializers::Renderers.transform_opts(
    {include: resource&.try(:preview_includes)},
    serializer_params
  )
  RDF::Serializers
    .serializer_for(resource)
    &.new(resource, serializer_options)
end

#serializer_paramsObject



43
44
45
# File 'lib/linked_rails/controller/rendering.rb', line 43

def serializer_params
  {}
end