class PactBroker::Api::Resources::ProviderPactsForVerification
Public Instance Methods
Source
# File lib/pact_broker/api/resources/provider_pacts_for_verification.rb, line 22 def allowed_methods ["GET", "POST", "OPTIONS"] end
TODO drop support for GET in next major version. GET was only used by the very first Ruby Pact
clients that supported the ‘pacts for verification’ feature, until it became clear that the parameters for the request were going to get nested and complex, at which point the POST was added.
Source
# File lib/pact_broker/api/resources/provider_pacts_for_verification.rb, line 14 def content_types_provided [["application/hal+json", :to_json]] end
Source
# File lib/pact_broker/api/resources/provider_pacts_for_verification.rb, line 26 def malformed_request? super || ((request.get? || (request.post? && content_type_json?)) && validation_errors_for_schema?(schema, query)) end
Calls superclass method
PactBroker::Api::Resources::BaseResource#malformed_request?
Source
# File lib/pact_broker/api/resources/provider_pacts_for_verification.rb, line 30 def process_post if content_type_json? response.body = to_json true else 415 end end
Source
# File lib/pact_broker/api/resources/provider_pacts_for_verification.rb, line 40 def read_methods super + %w{POST} end
For this endoint, the POST is a “read” action (used for Pactflow)
Calls superclass method
PactBroker::Api::Resources::Authorization#read_methods
Private Instance Methods
Source
# File lib/pact_broker/api/resources/provider_pacts_for_verification.rb, line 96 def log_request logger.info "Fetching pacts for verification by #{provider_name}", provider_name: provider_name, params: query end
Source
# File lib/pact_broker/api/resources/provider_pacts_for_verification.rb, line 100 def nested_query @nested_query ||= Rack::Utils.parse_nested_query(request.uri.query) end
Source
# File lib/pact_broker/api/resources/provider_pacts_for_verification.rb, line 46 def pacts @pacts ||= pact_service.find_for_verification( provider_name, parsed_query_params.provider_version_branch, parsed_query_params.provider_version_tags, parsed_query_params.consumer_version_selectors, { include_wip_pacts_since: parsed_query_params.include_wip_pacts_since, include_pending_status: parsed_query_params.include_pending_status } ) end
Source
# File lib/pact_broker/api/resources/provider_pacts_for_verification.rb, line 82 def parsed_query_params @parsed_query_params ||= decorator_class(:pacts_for_verification_query_decorator).new(OpenStruct.new).from_hash(query) end
Source
# File lib/pact_broker/api/resources/provider_pacts_for_verification.rb, line 86 def query @query ||= begin if request.get? nested_query elsif request.post? params(symbolize_names: false, default: {}) end end end
Source
# File lib/pact_broker/api/resources/provider_pacts_for_verification.rb, line 59 def resource_title "Pacts to be verified by provider #{provider_name}" end
Source
# File lib/pact_broker/api/resources/provider_pacts_for_verification.rb, line 74 def schema if request.get? PactBroker::Api::Contracts::PactsForVerificationQueryStringSchema elsif request.post? PactBroker::Api::Contracts::PactsForVerificationJSONQuerySchema end end
Source
# File lib/pact_broker/api/resources/provider_pacts_for_verification.rb, line 63 def to_json log_request decorator_class(:verifiable_pacts_decorator).new(pacts).to_json( **decorator_options( include_pending_status: parsed_query_params.include_pending_status, title: "Pacts to be verified by provider #{provider_name}", deprecated: request.get? ) ) end