Sha256: b3d53d8bfad3ebd221c700afcef6a714de3600dad83758b8ec43bd7b23c10bbc

Contents?: true

Size: 1.89 KB

Versions: 39

Compression:

Stored size: 1.89 KB

Contents

require "pact_broker/hash_refinements"
require "pact_broker/pacts/metadata"

module PactBroker
  module Api
    module Resources
      module MetadataResourceMethods
        using PactBroker::HashRefinements

        def pact_params
          @pact_params ||= PactBroker::Pacts::PactParams.from_request(request, maybe_consumer_version_number_param.merge(identifier_from_path))
        end

        def maybe_consumer_version_number_param
          if metadata[:consumer_version_number]
            metadata.slice(:consumer_version_number)
          elsif metadata_consumer_version_numbers&.any?
            {
              consumer_version_number: consumer_versions_from_metadata.last&.number
            }
          else
            {}
          end
        end

        def metadata
          @metadata ||= PactBroker::Pacts::Metadata.parse_metadata(PactBrokerUrls.decode_pact_metadata(identifier_from_path[:metadata]))
        end

        def metadata_consumer_version_numbers
          @metadata_consumer_version_numbers ||= begin
            if metadata[:consumer_version_selectors].is_a?(Array)
              metadata[:consumer_version_selectors].collect{ | selector | selector[:consumer_version_number] }.compact.uniq
            elsif metadata[:consumer_version_number]
              [metadata[:consumer_version_number]]
            else
              nil
            end
          end
        end

        def consumer_versions_from_metadata
          @consumer_versions_from_metadata ||= begin
            if metadata_consumer_version_numbers
              metadata_consumer_version_numbers.collect do | consumer_version_number |
                version_service.find_by_pacticipant_name_and_number(pacticipant_name: identifier_from_path[:consumer_name], pacticipant_version_number: consumer_version_number)
              end.compact.sort_by(&:order)
            end
          end
        end
      end
    end
  end
end

Version data entries

39 entries across 39 versions & 1 rubygems

Version Path
pact_broker-2.114.0 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.113.2 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.113.1 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.113.0 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.112.0 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.111.0 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.109.1 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.109.0 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.108.0 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.107.1 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.107.0 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.107.0.beta.1 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.106.0 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.105.0 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.104.0 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.103.0 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.102.2 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.102.1 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.102.0 lib/pact_broker/api/resources/metadata_resource_methods.rb
pact_broker-2.101.0 lib/pact_broker/api/resources/metadata_resource_methods.rb