Class: Kward::Hooks::Decision
- Inherits:
-
Object
- Object
- Kward::Hooks::Decision
- Defined in:
- lib/kward/hooks/decision.rb
Overview
Normalized result returned by lifecycle hooks.
Constant Summary collapse
- VALID_DECISIONS =
%w[allow deny ask modify warn retry defer].freeze
Instance Attribute Summary collapse
-
#decision ⇒ Object
readonly
Returns the value of attribute decision.
-
#message ⇒ Object
readonly
Returns the value of attribute message.
-
#metadata ⇒ Object
readonly
Returns the value of attribute metadata.
-
#payload ⇒ Object
readonly
Returns the value of attribute payload.
Class Method Summary collapse
- .allow(message = nil, metadata: nil) ⇒ Object
- .ask(message = nil, metadata: nil) ⇒ Object
- .defer(message = nil, payload: nil, metadata: nil) ⇒ Object
- .deny(message = nil, metadata: nil) ⇒ Object
- .modify(payload = nil, message: nil, metadata: nil, **payload_keywords) ⇒ Object
- .normalize(value) ⇒ Object
- .retry(message = nil, payload: nil, metadata: nil) ⇒ Object
- .warn(message = nil, metadata: nil) ⇒ Object
Instance Method Summary collapse
- #allow? ⇒ Boolean
- #ask? ⇒ Boolean
- #blocking? ⇒ Boolean
- #deny? ⇒ Boolean
-
#initialize(decision:, message: nil, payload: nil, metadata: nil) ⇒ Decision
constructor
A new instance of Decision.
- #modify? ⇒ Boolean
- #to_h ⇒ Object
- #warning? ⇒ Boolean
Constructor Details
#initialize(decision:, message: nil, payload: nil, metadata: nil) ⇒ Decision
Returns a new instance of Decision.
10 11 12 13 14 15 16 17 |
# File 'lib/kward/hooks/decision.rb', line 10 def initialize(decision:, message: nil, payload: nil, metadata: nil) @decision = decision.to_s raise ArgumentError, "Unknown hook decision: #{@decision}" unless VALID_DECISIONS.include?(@decision) @message = &.to_s @payload = payload || {} @metadata = || {} end |
Instance Attribute Details
#decision ⇒ Object (readonly)
Returns the value of attribute decision.
8 9 10 |
# File 'lib/kward/hooks/decision.rb', line 8 def decision @decision end |
#message ⇒ Object (readonly)
Returns the value of attribute message.
8 9 10 |
# File 'lib/kward/hooks/decision.rb', line 8 def @message end |
#metadata ⇒ Object (readonly)
Returns the value of attribute metadata.
8 9 10 |
# File 'lib/kward/hooks/decision.rb', line 8 def @metadata end |
#payload ⇒ Object (readonly)
Returns the value of attribute payload.
8 9 10 |
# File 'lib/kward/hooks/decision.rb', line 8 def payload @payload end |
Class Method Details
.allow(message = nil, metadata: nil) ⇒ Object
19 20 21 |
# File 'lib/kward/hooks/decision.rb', line 19 def self.allow( = nil, metadata: nil) new(decision: "allow", message: , metadata: ) end |
.ask(message = nil, metadata: nil) ⇒ Object
27 28 29 |
# File 'lib/kward/hooks/decision.rb', line 27 def self.ask( = nil, metadata: nil) new(decision: "ask", message: , metadata: ) end |
.defer(message = nil, payload: nil, metadata: nil) ⇒ Object
44 45 46 |
# File 'lib/kward/hooks/decision.rb', line 44 def self.defer( = nil, payload: nil, metadata: nil) new(decision: "defer", message: , payload: payload, metadata: ) end |
.deny(message = nil, metadata: nil) ⇒ Object
23 24 25 |
# File 'lib/kward/hooks/decision.rb', line 23 def self.deny( = nil, metadata: nil) new(decision: "deny", message: , metadata: ) end |
.modify(payload = nil, message: nil, metadata: nil, **payload_keywords) ⇒ Object
31 32 33 34 |
# File 'lib/kward/hooks/decision.rb', line 31 def self.modify(payload = nil, message: nil, metadata: nil, **payload_keywords) payload = payload_keywords unless payload_keywords.empty? new(decision: "modify", message: , payload: payload || {}, metadata: ) end |
.normalize(value) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/kward/hooks/decision.rb', line 48 def self.normalize(value) case value when nil allow when Decision value when String, Symbol new(decision: value) when Hash new( decision: value[:decision] || value["decision"] || "allow", message: value[:message] || value["message"], payload: value[:payload] || value["payload"], metadata: value[:metadata] || value["metadata"] ) else raise ArgumentError, "Invalid hook decision: #{value.inspect}" end end |
.retry(message = nil, payload: nil, metadata: nil) ⇒ Object
40 41 42 |
# File 'lib/kward/hooks/decision.rb', line 40 def self.retry( = nil, payload: nil, metadata: nil) new(decision: "retry", message: , payload: payload, metadata: ) end |
.warn(message = nil, metadata: nil) ⇒ Object
36 37 38 |
# File 'lib/kward/hooks/decision.rb', line 36 def self.warn( = nil, metadata: nil) new(decision: "warn", message: , metadata: ) end |
Instance Method Details
#allow? ⇒ Boolean
68 69 70 |
# File 'lib/kward/hooks/decision.rb', line 68 def allow? decision == "allow" end |
#ask? ⇒ Boolean
76 77 78 |
# File 'lib/kward/hooks/decision.rb', line 76 def ask? decision == "ask" end |
#blocking? ⇒ Boolean
88 89 90 |
# File 'lib/kward/hooks/decision.rb', line 88 def blocking? deny? || ask? end |
#deny? ⇒ Boolean
72 73 74 |
# File 'lib/kward/hooks/decision.rb', line 72 def deny? decision == "deny" end |
#modify? ⇒ Boolean
80 81 82 |
# File 'lib/kward/hooks/decision.rb', line 80 def modify? decision == "modify" end |
#to_h ⇒ Object
92 93 94 95 96 97 98 99 |
# File 'lib/kward/hooks/decision.rb', line 92 def to_h { decision: decision, message: , payload: payload, metadata: } end |
#warning? ⇒ Boolean
84 85 86 |
# File 'lib/kward/hooks/decision.rb', line 84 def warning? decision == "warn" end |