Module: ActAsJsonapi::StatusCodeResponse

Defined in:
lib/act_as_jsonapi/status_code_response.rb

Constant Summary collapse

SYMBOL_TO_STATUS_CODE =
Rack::Utils::SYMBOL_TO_STATUS_CODE
STATUS_CODE_TO_SYMBOL =
SYMBOL_TO_STATUS_CODE.invert

Class Method Summary collapse

Class Method Details

.serializable(error_status, detail, detail_meta) ⇒ Object



6
7
8
9
10
11
12
# File 'lib/act_as_jsonapi/status_code_response.rb', line 6

def self.serializable(error_status, detail, detail_meta)
  if error_status.kind_of? Integer
    serializable_from_int(error_status, detail, detail_meta)
  else
    serializable_from_sym(error_status, detail, detail_meta)
  end
end

.serializable_from_int(code, detail, detail_meta) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/act_as_jsonapi/status_code_response.rb', line 14

def self.serializable_from_int(code, detail, detail_meta)
  code_i = code.to_i
  error_sym = STATUS_CODE_TO_SYMBOL[code_i]

  return {} unless error_sym

  serializable error_sym, detail, detail_meta
end

.serializable_from_sym(error_sym, detail, detail_meta) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/act_as_jsonapi/status_code_response.rb', line 23

def self.serializable_from_sym(error_sym, detail, detail_meta)
  status_code = SYMBOL_TO_STATUS_CODE[error_sym]

  return {} unless status_code
  error_name = error_sym.to_s

  {
    id: SecureRandom.uuid,
    title: error_name.gsub(/_/, ' '),
    detail: detail,
    code: status_code.to_s,
    status: status_code.to_s,
    meta: {
      error: detail_meta
    }
  }
end