Class: Sendly::Webhook

Inherits:
Object
  • Object
show all
Defined in:
lib/sendly/types.rb

Overview

Represents a configured webhook endpoint

Direct Known Subclasses

WebhookCreatedResponse

Constant Summary collapse

CIRCUIT_STATES =

Circuit state constants

%w[closed open half_open].freeze
MODES =

Webhook mode constants

%w[all test live].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ Webhook

Returns a new instance of Webhook.



252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
# File 'lib/sendly/types.rb', line 252

def initialize(data)
  @id = data["id"]
  @url = data["url"]
  @events = data["events"] || []
  @description = data["description"]
  @mode = data["mode"] || "all"
  # Handle both snake_case API response and camelCase
  @is_active = data["is_active"] || data["isActive"] || false
  @failure_count = data["failure_count"] || data["failureCount"] || 0
  @last_failure_at = parse_time(data["last_failure_at"] || data["lastFailureAt"])
  @circuit_state = data["circuit_state"] || data["circuitState"] || "closed"
  @circuit_opened_at = parse_time(data["circuit_opened_at"] || data["circuitOpenedAt"])
  @api_version = data["api_version"] || data["apiVersion"] || "2024-01"
  @metadata = data["metadata"] || {}
  @created_at = parse_time(data["created_at"] || data["createdAt"])
  @updated_at = parse_time(data["updated_at"] || data["updatedAt"])
  @total_deliveries = data["total_deliveries"] || data["totalDeliveries"] || 0
  @successful_deliveries = data["successful_deliveries"] || data["successfulDeliveries"] || 0
  @success_rate = data["success_rate"] || data["successRate"] || 0
  @last_delivery_at = parse_time(data["last_delivery_at"] || data["lastDeliveryAt"])
end

Instance Attribute Details

#api_versionObject (readonly)

Returns the value of attribute api_version.



241
242
243
# File 'lib/sendly/types.rb', line 241

def api_version
  @api_version
end

#circuit_opened_atObject (readonly)

Returns the value of attribute circuit_opened_at.



241
242
243
# File 'lib/sendly/types.rb', line 241

def circuit_opened_at
  @circuit_opened_at
end

#circuit_stateObject (readonly)

Returns the value of attribute circuit_state.



241
242
243
# File 'lib/sendly/types.rb', line 241

def circuit_state
  @circuit_state
end

#created_atObject (readonly)

Returns the value of attribute created_at.



241
242
243
# File 'lib/sendly/types.rb', line 241

def created_at
  @created_at
end

#descriptionObject (readonly)

Returns the value of attribute description.



241
242
243
# File 'lib/sendly/types.rb', line 241

def description
  @description
end

#eventsObject (readonly)

Returns the value of attribute events.



241
242
243
# File 'lib/sendly/types.rb', line 241

def events
  @events
end

#failure_countObject (readonly)

Returns the value of attribute failure_count.



241
242
243
# File 'lib/sendly/types.rb', line 241

def failure_count
  @failure_count
end

#idObject (readonly)

Returns the value of attribute id.



241
242
243
# File 'lib/sendly/types.rb', line 241

def id
  @id
end

#is_activeObject (readonly)

Returns the value of attribute is_active.



241
242
243
# File 'lib/sendly/types.rb', line 241

def is_active
  @is_active
end

#last_delivery_atObject (readonly)

Returns the value of attribute last_delivery_at.



241
242
243
# File 'lib/sendly/types.rb', line 241

def last_delivery_at
  @last_delivery_at
end

#last_failure_atObject (readonly)

Returns the value of attribute last_failure_at.



241
242
243
# File 'lib/sendly/types.rb', line 241

def last_failure_at
  @last_failure_at
end

#metadataObject (readonly)

Returns the value of attribute metadata.



241
242
243
# File 'lib/sendly/types.rb', line 241

def 
  @metadata
end

#modeObject (readonly)

Returns the value of attribute mode.



241
242
243
# File 'lib/sendly/types.rb', line 241

def mode
  @mode
end

#success_rateObject (readonly)

Returns the value of attribute success_rate.



241
242
243
# File 'lib/sendly/types.rb', line 241

def success_rate
  @success_rate
end

#successful_deliveriesObject (readonly)

Returns the value of attribute successful_deliveries.



241
242
243
# File 'lib/sendly/types.rb', line 241

def successful_deliveries
  @successful_deliveries
end

#total_deliveriesObject (readonly)

Returns the value of attribute total_deliveries.



241
242
243
# File 'lib/sendly/types.rb', line 241

def total_deliveries
  @total_deliveries
end

#updated_atObject (readonly)

Returns the value of attribute updated_at.



241
242
243
# File 'lib/sendly/types.rb', line 241

def updated_at
  @updated_at
end

#urlObject (readonly)

Returns the value of attribute url.



241
242
243
# File 'lib/sendly/types.rb', line 241

def url
  @url
end

Instance Method Details

#active?Boolean

Returns:

  • (Boolean)


274
275
276
# File 'lib/sendly/types.rb', line 274

def active?
  is_active
end

#circuit_open?Boolean

Returns:

  • (Boolean)


278
279
280
# File 'lib/sendly/types.rb', line 278

def circuit_open?
  circuit_state == "open"
end

#to_hObject



282
283
284
285
286
287
288
289
290
# File 'lib/sendly/types.rb', line 282

def to_h
  {
    id: id, url: url, events: events, description: description,
    is_active: is_active, failure_count: failure_count,
    circuit_state: circuit_state, api_version: api_version,
    metadata: , total_deliveries: total_deliveries,
    successful_deliveries: successful_deliveries, success_rate: success_rate
  }.compact
end