Sha256: ecd5bc4c9f1737851758557d6b65670aa3cda9262790ef5065231062ee0cfab8

Contents?: true

Size: 1.96 KB

Versions: 30

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.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

30 entries across 30 versions & 1 rubygems

Version Path
pact_broker-client-1.31.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.30.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.29.1 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.29.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.28.4 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.28.3 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.28.2 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.28.1 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.28.0 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.27.28 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.27.27 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.27.26 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.27.25 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.27.24 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.27.23 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.27.22 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.27.21 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.27.20 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.27.19 lib/pact_broker/client/pacts/list_latest_versions.rb
pact_broker-client-1.27.14 lib/pact_broker/client/pacts/list_latest_versions.rb