Sha256: c668522dbcf9f088148385ed71074c7c6cba7dcc7885f7aefe774f0acb36f94b

Contents?: true

Size: 1.96 KB

Versions: 55

Compression:

Stored size: 1.96 KB

Contents

require 'pact_broker/client/hal'
require 'pact_broker/client/command_result'
require 'pact_broker/client/hal_client_methods'

module PactBroker
  module Client
    module Pacts
      class ListLatestVersions

        include HalClientMethods

        def self.call(pact_broker_base_url, output, pact_broker_client_options)
          new(pact_broker_base_url, output, pact_broker_client_options).call
        end

        def initialize(pact_broker_base_url, output, pact_broker_client_options)
          @index_entry_point = create_index_entry_point(pact_broker_base_url, pact_broker_client_options)
          @output = output
        end

        def call
          message = if output == 'json'
            versions_resource.response.raw_body
          else
            to_text(versions)
          end
          PactBroker::Client::CommandResult.new(true, message)

        rescue StandardError => e
          PactBroker::Client::CommandResult.new(false, e.message)
        end

        private

        attr_reader :index_entry_point, :output

        def versions
          versions_resource.pacts.collect do | pact |
            OpenStruct.new(
              consumer_name: pact['_embedded']['consumer']['name'],
              provider_name: pact['_embedded']['provider']['name'],
              consumer_version_number: pact['_embedded']['consumer']['_embedded']['version']['number'],
              created_at: pact['createdAt']
            )
          end
        end

        def versions_resource
          index_entry_point.get!._link('pb:latest-pact-versions').get!
        end

        def to_text(pacts)
          require 'table_print'
          options = [
            { consumer_name: {display_name: 'consumer'} },
            { consumer_version_number: {display_name: 'consumer_version'} },
            { provider_name: {display_name: 'provider'} },
            { created_at: {} }
          ]
          TablePrint::Printer.new(pacts, options).table_print
        end
      end
    end
  end
end

Version data entries

55 entries across 55 versions & 1 rubygems

Version Path
pact_broker-client-1.75.1 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.75.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.74.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.73.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.72.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.71.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.70.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.69.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.68.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.67.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.66.1 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.66.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.65.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.64.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.63.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.62.1 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.62.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.61.1 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.61.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.60.0 lib/pact_broker/client/pacts/list_latest_versions.rb