class PactBroker::Api::Resources::Pact
Public Instance Methods
allowed_methods()
click to toggle source
# File lib/pact_broker/api/resources/pact.rb, line 38 def allowed_methods ["GET", "PUT", "DELETE", "PATCH", "OPTIONS"] end
content_types_accepted()
click to toggle source
# File lib/pact_broker/api/resources/pact.rb, line 34 def content_types_accepted [["application/json", :from_json]] end
content_types_provided()
click to toggle source
# File lib/pact_broker/api/resources/pact.rb, line 25 def content_types_provided [ ["application/hal+json", :to_json], ["application/json", :to_json], ["text/html", :to_html], ["application/vnd.pactbrokerextended.v1+json", :to_extended_json] ] end
delete_resource()
click to toggle source
# File lib/pact_broker/api/resources/pact.rb, line 100 def delete_resource pact_service.delete(pact_params) set_post_deletion_response true end
from_json()
click to toggle source
# File lib/pact_broker/api/resources/pact.rb, line 68 def from_json response_code = pact ? 200 : 201 subscribe(PactBroker::Integrations::EventListener.new) do handle_webhook_events do if request.patch? && resource_exists? @pact = pact_service.merge_pact(pact_params.merge(pact_version_sha: pact_version_sha)) else @pact = pact_service.create_or_update_pact(pact_params.merge(pact_version_sha: pact_version_sha)) end end end response.body = to_json response_code end
is_conflict?()
click to toggle source
# File lib/pact_broker/api/resources/pact.rb, line 54 def is_conflict? merge_conflict = request.patch? && resource_exists? && Pacts::Merger.conflict?(pact.json_content, pact_params.json_content) potential_duplicate_pacticipants?(pact_params.pacticipant_names) || merge_conflict || disallowed_modification? end
malformed_request?()
click to toggle source
Calls superclass method
PactBroker::Api::Resources::BaseResource#malformed_request?
# File lib/pact_broker/api/resources/pact.rb, line 60 def malformed_request? super || ((request.patch? || request.really_put?) && validation_errors_for_schema?(schema, pact_params.to_hash_for_validation)) end
patch_can_create?()
click to toggle source
# File lib/pact_broker/api/resources/pact.rb, line 50 def patch_can_create? true end
policy_name()
click to toggle source
# File lib/pact_broker/api/resources/pact.rb, line 106 def policy_name :'pacts::pact' end
put_can_create?()
click to toggle source
# File lib/pact_broker/api/resources/pact.rb, line 46 def put_can_create? true end
request_body_required?()
click to toggle source
# File lib/pact_broker/api/resources/pact.rb, line 42 def request_body_required? request.put? || request.patch? end
resource_exists?()
click to toggle source
# File lib/pact_broker/api/resources/pact.rb, line 64 def resource_exists? !!pact end
to_extended_json()
click to toggle source
# File lib/pact_broker/api/resources/pact.rb, line 88 def to_extended_json decorator_class(:extended_pact_decorator).new(pact).to_json(**decorator_options(metadata: identifier_from_path[:metadata])) end
to_html()
click to toggle source
# File lib/pact_broker/api/resources/pact.rb, line 92 def to_html PactBroker.configuration.html_pact_renderer.call( pact, { base_url: ui_base_url, badge_url: badge_url_for_latest_pact(pact, ui_base_url) }) end
to_json()
click to toggle source
# File lib/pact_broker/api/resources/pact.rb, line 84 def to_json decorator_class(:pact_decorator).new(pact).to_json(**decorator_options(metadata: identifier_from_path[:metadata])) end
Private Instance Methods
disallowed_modification?()
click to toggle source
# File lib/pact_broker/api/resources/pact.rb, line 116 def disallowed_modification? if request.really_put? && pact_service.disallowed_modification?(pact, pact_version_sha) message_params = { consumer_name: pact_params.consumer_name, consumer_version_number: pact_params.consumer_version_number, provider_name: pact_params.provider_name } set_json_error_message(message("errors.validation.pact_content_modification_not_allowed", message_params)) true else false end end
pact()
click to toggle source
# File lib/pact_broker/api/resources/pact.rb, line 112 def pact @pact ||= pact_service.find_pact(pact_params) end
pact_version_sha()
click to toggle source
# File lib/pact_broker/api/resources/pact.rb, line 130 def pact_version_sha @pact_version_sha ||= pact_service.generate_sha(pact_params.json_content) end
schema()
click to toggle source
# File lib/pact_broker/api/resources/pact.rb, line 126 def schema api_contract_class(:put_pact_params_contract) end