Class: CubanLinx::Payload
- Inherits:
-
Object
- Object
- CubanLinx::Payload
show all
- Defined in:
- lib/cuban_linx/payload.rb
Constant Summary
collapse
- InvalidStatusError =
Class.new(StandardError)
- VALID_STATUSES =
%i[ok no_op error].freeze
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(status, messages = {}, errors = {}) ⇒ Payload
Returns a new instance of Payload.
8
9
10
11
12
|
# File 'lib/cuban_linx/payload.rb', line 8
def initialize(status, messages = {}, errors = {})
@status = determine_and_validate(status)
@messages = messages.merge({ warnings: Set.new }, &merge_block)
@errors = errors
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, &block) ⇒ Object
60
61
62
63
64
|
# File 'lib/cuban_linx/payload.rb', line 60
def method_missing(method_name, *, &block)
super unless respond_to_missing?(method_name)
messages.fetch(method_name)
end
|
Instance Attribute Details
#errors ⇒ Object
Returns the value of attribute errors.
70
71
72
|
# File 'lib/cuban_linx/payload.rb', line 70
def errors
@errors
end
|
#messages ⇒ Object
Returns the value of attribute messages.
70
71
72
|
# File 'lib/cuban_linx/payload.rb', line 70
def messages
@messages
end
|
#status ⇒ Object
Returns the value of attribute status.
70
71
72
|
# File 'lib/cuban_linx/payload.rb', line 70
def status
@status
end
|
Instance Method Details
#add(new_messages) ⇒ Object
38
39
40
|
# File 'lib/cuban_linx/payload.rb', line 38
def add(new_messages)
messages.merge(new_messages, &merge_block)
end
|
#add_errors(error_messages) ⇒ Object
42
43
44
|
# File 'lib/cuban_linx/payload.rb', line 42
def add_errors(error_messages)
errors.merge(error_messages, &merge_block)
end
|
#add_warning(message) ⇒ Object
46
47
48
|
# File 'lib/cuban_linx/payload.rb', line 46
def add_warning(message)
add(warnings: message)
end
|
#as_result ⇒ Object
34
35
36
|
# File 'lib/cuban_linx/payload.rb', line 34
def as_result
[status, { messages: messages, errors: errors }]
end
|
#delete(key) ⇒ Object
54
55
56
57
58
|
# File 'lib/cuban_linx/payload.rb', line 54
def delete(key)
raise KeyError unless messages.key?(key)
messages.delete(key)
end
|
#error? ⇒ Boolean
26
27
28
|
# File 'lib/cuban_linx/payload.rb', line 26
def error?
status == :error
end
|
#fetch(*args, &block) ⇒ Object
14
15
16
17
18
19
20
|
# File 'lib/cuban_linx/payload.rb', line 14
def fetch(*args, &block)
if block_given?
messages.fetch(*args, &block)
else
messages.fetch(*args)
end
end
|
#ok? ⇒ Boolean
22
23
24
|
# File 'lib/cuban_linx/payload.rb', line 22
def ok?
status == :ok
end
|
#respond_to_missing?(method_name, include_private = false) ⇒ Boolean
66
67
68
|
# File 'lib/cuban_linx/payload.rb', line 66
def respond_to_missing?(method_name, include_private = false)
messages.key?(method_name) || super
end
|
#tuple ⇒ Object
30
31
32
|
# File 'lib/cuban_linx/payload.rb', line 30
def tuple
[status, messages, errors]
end
|
#warnings ⇒ Object
50
51
52
|
# File 'lib/cuban_linx/payload.rb', line 50
def warnings
messages.fetch(:warnings)
end
|