Class: Axel::Payload::Errors

Inherits:
Base
  • Object
show all
Defined in:
app/models/axel/payload/errors.rb

Constant Summary collapse

SUCCESS_CODES =
[200, 201, 202, 204]

Instance Attribute Summary

Attributes inherited from Base

#attributes

Instance Method Summary collapse

Methods inherited from Base

#[], #[]=, attribute, attribute_defaults, #drop!, #drop?, #reset!, root_node, #to_json, #to_xml

Constructor Details

#initialize(params = {}) ⇒ Errors

Returns a new instance of Errors.



9
10
11
12
# File 'app/models/axel/payload/errors.rb', line 9

def initialize(params = {})
  super
  @suppress_response_codes = !!@attributes[:suppress_response_codes]
end

Instance Method Details

#<<(message) ⇒ Object



34
35
36
# File 'app/models/axel/payload/errors.rb', line 34

def <<(message)
  @attributes[:messages] << message
end

#displayObject



38
39
40
# File 'app/models/axel/payload/errors.rb', line 38

def display
  drop? ? {} : { status: status_code, messages: messages }
end

#display?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'app/models/axel/payload/errors.rb', line 42

def display?
  !SUCCESS_CODES.include?(status_code.to_i) || messages.present?
end

#exceptionObject



14
15
16
# File 'app/models/axel/payload/errors.rb', line 14

def exception
  RemoteError.new(self) unless success?
end

#header_statusObject



30
31
32
# File 'app/models/axel/payload/errors.rb', line 30

def header_status
  suppress_response_codes? ? 200 : status_code
end

#messages=(messages) ⇒ Object



22
23
24
# File 'app/models/axel/payload/errors.rb', line 22

def messages=(messages)
  @attributes[:messages] = [messages].flatten.compact
end

#new_error(status, *messages) ⇒ Object



46
47
48
49
# File 'app/models/axel/payload/errors.rb', line 46

def new_error(status, *messages)
  self.status = status if status
  self.messages = self.messages + messages
end

#status=(status) ⇒ Object



26
27
28
# File 'app/models/axel/payload/errors.rb', line 26

def status=(status)
  @attributes[:status] = status
end

#status_codeObject



51
52
53
# File 'app/models/axel/payload/errors.rb', line 51

def status_code
  status ? Rack::Utils.status_code(status) : 200
end

#success?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'app/models/axel/payload/errors.rb', line 18

def success?
  SUCCESS_CODES.include?(status_code.to_i) && messages.empty?
end