Class: PactBroker::Domain::Webhook

Inherits:
Object
  • Object
show all
Includes:
Logging, Messages
Defined in:
lib/pact_broker/domain/webhook.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Logging

included, #log_error

Methods included from Messages

#message, #potential_duplicate_pacticipant_message, #validation_message

Constructor Details

#initialize(attributes = {}) ⇒ Webhook

Returns a new instance of Webhook.



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/pact_broker/domain/webhook.rb', line 18

def initialize attributes = {}
  @attributes = attributes
  @uuid = attributes[:uuid]
  @description = attributes[:description]
  @request = attributes[:request]
  @consumer = attributes[:consumer]
  @provider = attributes[:provider]
  @events = attributes[:events]
  @enabled = attributes[:enabled]
  @created_at = attributes[:created_at]
  @updated_at = attributes[:updated_at]
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



16
17
18
# File 'lib/pact_broker/domain/webhook.rb', line 16

def attributes
  @attributes
end

#consumerObject

request is actually a request_template



15
16
17
# File 'lib/pact_broker/domain/webhook.rb', line 15

def consumer
  @consumer
end

#created_atObject

request is actually a request_template



15
16
17
# File 'lib/pact_broker/domain/webhook.rb', line 15

def created_at
  @created_at
end

#descriptionObject

request is actually a request_template



15
16
17
# File 'lib/pact_broker/domain/webhook.rb', line 15

def description
  @description
end

#enabledObject

request is actually a request_template



15
16
17
# File 'lib/pact_broker/domain/webhook.rb', line 15

def enabled
  @enabled
end

#eventsObject

request is actually a request_template



15
16
17
# File 'lib/pact_broker/domain/webhook.rb', line 15

def events
  @events
end

#providerObject

request is actually a request_template



15
16
17
# File 'lib/pact_broker/domain/webhook.rb', line 15

def provider
  @provider
end

#requestObject

request is actually a request_template



15
16
17
# File 'lib/pact_broker/domain/webhook.rb', line 15

def request
  @request
end

#updated_atObject

request is actually a request_template



15
16
17
# File 'lib/pact_broker/domain/webhook.rb', line 15

def updated_at
  @updated_at
end

#uuidObject

request is actually a request_template



15
16
17
# File 'lib/pact_broker/domain/webhook.rb', line 15

def uuid
  @uuid
end

Instance Method Details

#consumer_nameObject



72
73
74
# File 'lib/pact_broker/domain/webhook.rb', line 72

def consumer_name
  consumer && consumer.name
end

#display_descriptionObject



31
32
33
34
35
36
37
# File 'lib/pact_broker/domain/webhook.rb', line 31

def display_description
  if description && description.strip.size > 0
    description
  else
    request_description
  end
end

#execute(pact, verification, options) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/pact_broker/domain/webhook.rb', line 55

def execute pact, verification, options
  logger.info "Executing #{self}"
  webhook_request = request.build(template_parameters(pact, verification, options))
  http_response, error = execute_request(webhook_request)

  PactBroker::Webhooks::WebhookExecutionResult.new(
    webhook_request.http_request,
    http_response,
    generate_logs(webhook_request, http_response, error, options.fetch(:logging_options)),
    error
  )
end

#provider_nameObject



76
77
78
# File 'lib/pact_broker/domain/webhook.rb', line 76

def provider_name
  provider && provider.name
end

#request_descriptionObject



51
52
53
# File 'lib/pact_broker/domain/webhook.rb', line 51

def request_description
  request && request.description
end

#scope_descriptionObject



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/pact_broker/domain/webhook.rb', line 39

def scope_description
  if consumer && provider
    "A webhook for the pact between #{consumer.name} and #{provider.name}"
  elsif provider
    "A webhook for all pacts with provider #{provider.name}"
  elsif consumer
    "A webhook for all pacts with consumer #{consumer.name}"
  else
    "A webhook for all pacts"
  end
end

#to_sObject



68
69
70
# File 'lib/pact_broker/domain/webhook.rb', line 68

def to_s
  "webhook for consumer=#{consumer_name} provider=#{provider_name} uuid=#{uuid}"
end

#trigger_on_contract_content_changed?Boolean

Returns:

  • (Boolean)


80
81
82
# File 'lib/pact_broker/domain/webhook.rb', line 80

def trigger_on_contract_content_changed?
  events.any?(&:contract_content_changed?)
end

#trigger_on_provider_verification_published?Boolean

Returns:

  • (Boolean)


84
85
86
# File 'lib/pact_broker/domain/webhook.rb', line 84

def trigger_on_provider_verification_published?
  events.any?(&:provider_verification_published?)
end