Module: EIVO::Concerns::Rendering

Extended by:
ActiveSupport::Concern
Included in:
ApplicationController
Defined in:
app/controllers/eivo/concerns/rendering.rb

Instance Method Summary collapse

Instance Method Details

#render_error(code, status: :bad_request, title: nil, detail: nil, source: nil) ⇒ Object



55
56
57
58
59
60
61
62
63
# File 'app/controllers/eivo/concerns/rendering.rb', line 55

def render_error(code, status: :bad_request, title: nil, detail: nil, source: nil)
  render_errors([{
    code: code,
    title: title,
    detail: detail,
    source: source,
    status: ::Rack::Utils::SYMBOL_TO_STATUS_CODE[status].to_s
  }.compact], status: status)
end

#render_errors(errors, status: :bad_request) ⇒ Object



65
66
67
68
69
70
# File 'app/controllers/eivo/concerns/rendering.rb', line 65

def render_errors(errors, status: :bad_request)
  data = {
    errors: errors
  }
  render json: ::MultiJson.dump(data), status: status
end

#render_forbidden(_exception = nil) ⇒ Object



23
24
25
# File 'app/controllers/eivo/concerns/rendering.rb', line 23

def render_forbidden(_exception = nil)
  render_error 'forbidden', status: :forbidden
end

#render_internal_server_error(_exception) ⇒ Object



31
32
33
# File 'app/controllers/eivo/concerns/rendering.rb', line 31

def render_internal_server_error(_exception)
  render_error 'internal_server_error', status: :internal_server_error
end

#render_model_errors(errors) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'app/controllers/eivo/concerns/rendering.rb', line 39

def render_model_errors(errors)
  json_errors = errors.details.map do |attribute, attribute_errors|
    attribute_errors.map do |error|
      {
        code: error[:error],
        source: {
          parameter: attribute
        },
        status: ::Rack::Utils::SYMBOL_TO_STATUS_CODE[:bad_request].to_s
      }
    end
  end

  render_errors json_errors.flatten
end

#render_not_found(_exception = nil) ⇒ Object



27
28
29
# File 'app/controllers/eivo/concerns/rendering.rb', line 27

def render_not_found(_exception = nil)
  render_error 'not_found', status: :not_found
end

#render_parameter_missing(exception) ⇒ Object



35
36
37
# File 'app/controllers/eivo/concerns/rendering.rb', line 35

def render_parameter_missing(exception)
  render_error 'parameter_missing', source: { parameter: exception.param }
end

#render_success(serializer = nil) ⇒ Object



8
9
10
11
12
13
14
15
16
17
# File 'app/controllers/eivo/concerns/rendering.rb', line 8

def render_success(serializer = nil)
  if serializer
    render json: serializer.serialized_json
  else
    data = {
      data: nil
    }
    render json: ::MultiJson.dump(data)
  end
end

#render_unauthorized(_exception = nil) ⇒ Object



19
20
21
# File 'app/controllers/eivo/concerns/rendering.rb', line 19

def render_unauthorized(_exception = nil)
  render_error 'unauthorized', status: :unauthorized
end