Class: DigiwinDsp::Webhooks::Event
- Inherits:
-
Object
- Object
- DigiwinDsp::Webhooks::Event
- Defined in:
- lib/digiwin_dsp/webhooks/event.rb
Overview
Base value-object for an inbound DSP webhook event. Subclasses add action-specific accessors over the ‘request` payload but share the JSON-parse + envelope-extract logic that lives here.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#digi_header ⇒ Object
readonly
Returns the value of attribute digi_header.
-
#raw ⇒ Object
readonly
Returns the value of attribute raw.
-
#request ⇒ Object
readonly
Returns the value of attribute request.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(digi_header:, request:, raw:) ⇒ Event
constructor
A new instance of Event.
Constructor Details
#initialize(digi_header:, request:, raw:) ⇒ Event
Returns a new instance of Event.
33 34 35 36 37 |
# File 'lib/digiwin_dsp/webhooks/event.rb', line 33 def initialize(digi_header:, request:, raw:) @digi_header = digi_header @request = request @raw = raw end |
Instance Attribute Details
#digi_header ⇒ Object (readonly)
Returns the value of attribute digi_header.
11 12 13 |
# File 'lib/digiwin_dsp/webhooks/event.rb', line 11 def digi_header @digi_header end |
#raw ⇒ Object (readonly)
Returns the value of attribute raw.
11 12 13 |
# File 'lib/digiwin_dsp/webhooks/event.rb', line 11 def raw @raw end |
#request ⇒ Object (readonly)
Returns the value of attribute request.
11 12 13 |
# File 'lib/digiwin_dsp/webhooks/event.rb', line 11 def request @request end |
Class Method Details
.extract_request(hash) ⇒ Object
26 27 28 29 30 31 |
# File 'lib/digiwin_dsp/webhooks/event.rb', line 26 def self.extract_request(hash) raise ParseError, "envelope must be a JSON object" unless hash.is_a?(Hash) hash.dig("digi_body", "std_data", "parameter", "request") || raise(ParseError, "envelope missing digi_body.std_data.parameter.request") end |
.parse(raw_body) ⇒ Object
13 14 15 16 17 |
# File 'lib/digiwin_dsp/webhooks/event.rb', line 13 def self.parse(raw_body) hash = parse_json(raw_body) request = extract_request(hash) new(digi_header: hash["digi_header"] || {}, request: request, raw: hash) end |
.parse_json(raw_body) ⇒ Object
19 20 21 22 23 24 |
# File 'lib/digiwin_dsp/webhooks/event.rb', line 19 def self.parse_json(raw_body) # max_nesting mirrors the Client's parser DoS guard. JSON.parse(raw_body, max_nesting: 50) rescue JSON::ParserError => e raise ParseError, "invalid JSON: #{e.}" end |