Class: Fal::WebhookRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/fal/webhook_request.rb

Overview

WebhookRequest parses incoming webhook payloads from fal and exposes convenient helpers to inspect success/error and access the response payload. Follows Rails-like naming with predicate helpers.

Defined Under Namespace

Modules: Status

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes) ⇒ WebhookRequest

Initialize from a parsed payload Hash (string keys expected, tolerant of symbol keys).

Parameters:

  • attributes (Hash)


35
36
37
38
# File 'lib/fal/webhook_request.rb', line 35

def initialize(attributes)
  @raw = attributes
  reset_attributes(attributes)
end

Instance Attribute Details

#errorString? (readonly)

Returns Error message when provided.

Returns:

  • (String, nil)

    Error message when provided



23
24
25
# File 'lib/fal/webhook_request.rb', line 23

def error
  @error
end

#gateway_request_idString? (readonly)

Returns The gateway request identifier, when present.

Returns:

  • (String, nil)

    The gateway request identifier, when present



19
20
21
# File 'lib/fal/webhook_request.rb', line 19

def gateway_request_id
  @gateway_request_id
end

#logsArray<Hash>? (readonly)

Returns Log entries, when present.

Returns:

  • (Array<Hash>, nil)

    Log entries, when present



27
28
29
# File 'lib/fal/webhook_request.rb', line 27

def logs
  @logs
end

#metricsHash? (readonly)

Returns Metrics, when present.

Returns:

  • (Hash, nil)

    Metrics, when present



29
30
31
# File 'lib/fal/webhook_request.rb', line 29

def metrics
  @metrics
end

#rawHash (readonly)

Returns The raw parsed payload.

Returns:

  • (Hash)

    The raw parsed payload



31
32
33
# File 'lib/fal/webhook_request.rb', line 31

def raw
  @raw
end

#request_idString? (readonly)

Returns The request identifier.

Returns:

  • (String, nil)

    The request identifier



17
18
19
# File 'lib/fal/webhook_request.rb', line 17

def request_id
  @request_id
end

#responseHash? (readonly)

Returns Model-specific response payload.

Returns:

  • (Hash, nil)

    Model-specific response payload



25
26
27
# File 'lib/fal/webhook_request.rb', line 25

def response
  @response
end

#statusString? (readonly)

Returns Webhook status (OK/ERROR) when provided.

Returns:

  • (String, nil)

    Webhook status (OK/ERROR) when provided



21
22
23
# File 'lib/fal/webhook_request.rb', line 21

def status
  @status
end

Class Method Details

.from_hash(payload) ⇒ Fal::WebhookRequest

Build from a Hash payload.

Parameters:

  • payload (Hash)

Returns:



60
61
62
# File 'lib/fal/webhook_request.rb', line 60

def from_hash(payload)
  new(payload)
end

.from_json(json) ⇒ Fal::WebhookRequest

Build from a JSON string body.

Parameters:

  • json (String)

Returns:



44
45
46
# File 'lib/fal/webhook_request.rb', line 44

def from_json(json)
  new(JSON.parse(json))
end

.from_rack_request(request) ⇒ Fal::WebhookRequest

Build from a Rack::Request.

Parameters:

  • request (#body)

Returns:



51
52
53
54
55
# File 'lib/fal/webhook_request.rb', line 51

def from_rack_request(request)
  body = request.body.read
  request.body.rewind if request.body.respond_to?(:rewind)
  from_json(body)
end

Instance Method Details

#error?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/fal/webhook_request.rb', line 73

def error?
  !success?
end

#error_detailString?

Returns Any nested error detail.

Returns:

  • (String, nil)

    Any nested error detail



84
# File 'lib/fal/webhook_request.rb', line 84

def error_detail = @response&.dig(:detail)

#payloadHash?

Back-compat alias matching older naming (payload vs response).

Returns:

  • (Hash, nil)


79
80
81
# File 'lib/fal/webhook_request.rb', line 79

def payload
  @response
end

#success?Boolean

Returns:

  • (Boolean)


66
67
68
69
70
# File 'lib/fal/webhook_request.rb', line 66

def success?
  @status == Status::OK || (
    @status.nil? && @error.nil?
  )
end