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.



331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
# File 'lib/sendly/types.rb', line 331

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.



320
321
322
# File 'lib/sendly/types.rb', line 320

def api_version
  @api_version
end

#circuit_opened_atObject (readonly)

Returns the value of attribute circuit_opened_at.



320
321
322
# File 'lib/sendly/types.rb', line 320

def circuit_opened_at
  @circuit_opened_at
end

#circuit_stateObject (readonly)

Returns the value of attribute circuit_state.



320
321
322
# File 'lib/sendly/types.rb', line 320

def circuit_state
  @circuit_state
end

#created_atObject (readonly)

Returns the value of attribute created_at.



320
321
322
# File 'lib/sendly/types.rb', line 320

def created_at
  @created_at
end

#descriptionObject (readonly)

Returns the value of attribute description.



320
321
322
# File 'lib/sendly/types.rb', line 320

def description
  @description
end

#eventsObject (readonly)

Returns the value of attribute events.



320
321
322
# File 'lib/sendly/types.rb', line 320

def events
  @events
end

#failure_countObject (readonly)

Returns the value of attribute failure_count.



320
321
322
# File 'lib/sendly/types.rb', line 320

def failure_count
  @failure_count
end

#idObject (readonly)

Returns the value of attribute id.



320
321
322
# File 'lib/sendly/types.rb', line 320

def id
  @id
end

#is_activeObject (readonly)

Returns the value of attribute is_active.



320
321
322
# File 'lib/sendly/types.rb', line 320

def is_active
  @is_active
end

#last_delivery_atObject (readonly)

Returns the value of attribute last_delivery_at.



320
321
322
# File 'lib/sendly/types.rb', line 320

def last_delivery_at
  @last_delivery_at
end

#last_failure_atObject (readonly)

Returns the value of attribute last_failure_at.



320
321
322
# File 'lib/sendly/types.rb', line 320

def last_failure_at
  @last_failure_at
end

#metadataObject (readonly)

Returns the value of attribute metadata.



320
321
322
# File 'lib/sendly/types.rb', line 320

def 
  @metadata
end

#modeObject (readonly)

Returns the value of attribute mode.



320
321
322
# File 'lib/sendly/types.rb', line 320

def mode
  @mode
end

#success_rateObject (readonly)

Returns the value of attribute success_rate.



320
321
322
# File 'lib/sendly/types.rb', line 320

def success_rate
  @success_rate
end

#successful_deliveriesObject (readonly)

Returns the value of attribute successful_deliveries.



320
321
322
# File 'lib/sendly/types.rb', line 320

def successful_deliveries
  @successful_deliveries
end

#total_deliveriesObject (readonly)

Returns the value of attribute total_deliveries.



320
321
322
# File 'lib/sendly/types.rb', line 320

def total_deliveries
  @total_deliveries
end

#updated_atObject (readonly)

Returns the value of attribute updated_at.



320
321
322
# File 'lib/sendly/types.rb', line 320

def updated_at
  @updated_at
end

#urlObject (readonly)

Returns the value of attribute url.



320
321
322
# File 'lib/sendly/types.rb', line 320

def url
  @url
end

Instance Method Details

#active?Boolean

Returns:

  • (Boolean)


353
354
355
# File 'lib/sendly/types.rb', line 353

def active?
  is_active
end

#circuit_open?Boolean

Returns:

  • (Boolean)


357
358
359
# File 'lib/sendly/types.rb', line 357

def circuit_open?
  circuit_state == "open"
end

#to_hObject



361
362
363
364
365
366
367
368
369
# File 'lib/sendly/types.rb', line 361

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