class PactBroker::Client::BaseCommand

Attributes

options[R]
pact_broker_base_url[R]
pact_broker_client_options[R]
params[R]

Public Class Methods

call(params, options, pact_broker_client_options) click to toggle source
# File lib/pact_broker/client/base_command.rb, line 12
def self.call(params, options, pact_broker_client_options)
  new(params, options, pact_broker_client_options).call
end
new(params, options, pact_broker_client_options) click to toggle source
# File lib/pact_broker/client/base_command.rb, line 16
def initialize(params, options, pact_broker_client_options)
  @params = params
  @options = options
  @pact_broker_base_url = pact_broker_client_options.fetch(:pact_broker_base_url)
  @pact_broker_client_options = pact_broker_client_options
end

Public Instance Methods

call() click to toggle source
# File lib/pact_broker/client/base_command.rb, line 23
def call
  check_if_command_supported
  do_call
rescue PactBroker::Client::Hal::ErrorResponseReturned => e
  handle_http_error(e)
rescue PactBroker::Client::Error => e
  handle_ruby_error(e)
rescue StandardError => e
  handle_ruby_error(e, verbose?)
end

Private Instance Methods

blue(text) click to toggle source
# File lib/pact_broker/client/base_command.rb, line 93
def blue(text)
  ::Term::ANSIColor.blue(text)
end
check_if_command_supported() click to toggle source
# File lib/pact_broker/client/base_command.rb, line 78
def check_if_command_supported
end
error_message(e, include_backtrace) click to toggle source
# File lib/pact_broker/client/base_command.rb, line 53
def error_message(e, include_backtrace)
  if json_output?
    json_error_message(e, include_backtrace)
  else
    text_error_message(e, include_backtrace)
  end
end
error_message_as_json(message) click to toggle source
# File lib/pact_broker/client/base_command.rb, line 68
def error_message_as_json(message)
  { error: { message: message } }.to_json
end
green(text) click to toggle source
# File lib/pact_broker/client/base_command.rb, line 89
def green(text)
  ::Term::ANSIColor.green(text)
end
handle_http_error(e) click to toggle source
# File lib/pact_broker/client/base_command.rb, line 39
def handle_http_error(e)
  message = if json_output?
    body = e.entity.response.raw_body
    (body.nil? || body == "") ? "{}" : body
  else
    red(e.message)
  end
  PactBroker::Client::CommandResult.new(false, message)
end
handle_ruby_error(e, include_backtrace = false) click to toggle source
# File lib/pact_broker/client/base_command.rb, line 49
def handle_ruby_error(e, include_backtrace = false)
  PactBroker::Client::CommandResult.new(false,  error_message(e, include_backtrace))
end
json_error_message(e, include_backtrace) click to toggle source
# File lib/pact_broker/client/base_command.rb, line 61
def json_error_message(e, include_backtrace)
  error_hash = { message: e.message }
  error_hash[:class] = e.class.name unless e.is_a?(PactBroker::Client::Error)
  error_hash[:backtrace] = e.backtrace if include_backtrace
  { error: error_hash }.to_json
end
json_output?() click to toggle source
# File lib/pact_broker/client/base_command.rb, line 81
def json_output?
  options[:output] == "json"
end
magenta(text) click to toggle source
# File lib/pact_broker/client/base_command.rb, line 97
def magenta(text)
  ::Term::ANSIColor.magenta(text)
end
red(text) click to toggle source
# File lib/pact_broker/client/base_command.rb, line 101
def red(text)
  ::Term::ANSIColor.red(text)
end
text_error_message(e, include_backtrace) click to toggle source
# File lib/pact_broker/client/base_command.rb, line 72
def text_error_message(e, include_backtrace)
  maybe_backtrace = (include_backtrace ? "\n" + e.backtrace.join("\n") : "")
  exception_message = e.is_a?(PactBroker::Client::Error) ? e.message : "#{e.class} - #{e.message}"
  red(exception_message) + maybe_backtrace
end
verbose?() click to toggle source
# File lib/pact_broker/client/base_command.rb, line 85
def verbose?
  options[:verbose]
end
yellow(text) click to toggle source
# File lib/pact_broker/client/base_command.rb, line 105
def yellow(text)
  ::Term::ANSIColor.yellow(text)
end