Module: PactBroker::Contracts::Service

Extended by:
Service, Messages, Repositories, Services
Includes:
Logging
Included in:
Service
Defined in:
lib/pact_broker/contracts/service.rb

Defined Under Namespace

Classes: TriggeredWebhooksCreatedListener

Constant Summary

Constants included from Services

Services::FACTORIES

Instance Method Summary collapse

Methods included from Repositories

branch_version_repository, integration_repository, label_repository, matrix_repository, pact_repository, pacticipant_repository, tag_repository, verification_repository, version_repository, webhook_repository

Methods included from Services

badge_service, branch_service, certificate_service, contract_service, deployed_version_service, environment_service, get, group_service, index_service, integration_service, label_service, matrix_service, metrics_service, pact_service, pacticipant_service, register_default_services, register_service, released_version_service, tag_service, verification_service, version_service, webhook_service, webhook_trigger_service

Methods included from Messages

message, pluralize, potential_duplicate_pacticipant_message, validation_message

Methods included from Logging

included, #log_error, #log_with_tag

Instance Method Details

#conflict_notices(parsed_contracts) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
# File 'lib/pact_broker/contracts/service.rb', line 46

def conflict_notices(parsed_contracts)
  notices = []
  parsed_contracts.contracts.collect do | contract_to_publish |
    pact_params = create_pact_params(parsed_contracts, contract_to_publish)
    existing_pact = pact_service.find_pact(pact_params)
    if existing_pact && pact_service.disallowed_modification?(existing_pact, contract_to_publish.decoded_content)
      add_conflict_notice(notices, parsed_contracts, contract_to_publish, existing_pact.json_content, contract_to_publish.decoded_content)
    end
  end
  notices
end

#publish(parsed_contracts, base_url:) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/pact_broker/contracts/service.rb', line 32

def publish(parsed_contracts, base_url: )
  version, version_notices = create_version(parsed_contracts)
  tags = create_tags(parsed_contracts, version)
  pacts, pact_notices = create_pacts(parsed_contracts, base_url)
  notices = version_notices + pact_notices
  ContractsPublicationResults.from_hash(
    pacticipant: version.pacticipant,
    version: version,
    tags: tags,
    contracts: pacts,
    notices: notices
  )
end

#triggered_webhook_notices(listener, pact) ⇒ Object



261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
# File 'lib/pact_broker/contracts/service.rb', line 261

def triggered_webhook_notices(listener, pact)
  triggered_webhooks = listener.detected_events.flat_map(&:triggered_webhooks)
  if triggered_webhooks.any?
    triggered_webhooks.collect do | triggered_webhook |
      base_url = triggered_webhook.event_context[:base_url]
      triggered_webhooks_notices_url = url_for_triggered_webhook(triggered_webhook, base_url)
      text_2_params = { webhook_description: triggered_webhook.webhook.description&.inspect || triggered_webhook.webhook_uuid, event_name: triggered_webhook.event_name }
      text_1 = message("messages.webhooks.webhook_triggered_for_event", text_2_params)
      text_2 = message("messages.webhooks.triggered_webhook_see_logs", url: triggered_webhooks_notices_url)
      Notice.debug("  #{text_1}\n    #{text_2}")
    end
  else
    if webhook_service.any_webhooks_configured_for_pact?(pact)
      # There are some webhooks, just not any for this particular event
      [Notice.debug("  " + message("messages.webhooks.no_webhooks_enabled_for_event"))]
    else
      []
    end
  end
end