class Travis::CLI::ApiCommand

Attributes

enterprise_name[RW]
session[R]

Public Class Methods

new(*) click to toggle source
Calls superclass method
# File lib/travis/cli/api_command.rb, line 40
def initialize(*)
  @session = Travis::Client.new(:agent_info => "command #{command_name}")
  super
end

Public Instance Methods

authenticate() click to toggle source
# File lib/travis/cli/api_command.rb, line 77
def authenticate
  error "not logged in, please run #{command("login#{endpoint_option}")}" if access_token.nil?
end
detected_endpoint?() click to toggle source
# File lib/travis/cli/api_command.rb, line 73
def detected_endpoint?
  api_endpoint == detected_endpoint
end
endpoint_config() click to toggle source
# File lib/travis/cli/api_command.rb, line 45
def endpoint_config
  config['endpoints'] ||= {}
  config['endpoints'][api_endpoint] ||= {}
end
enterprise?() click to toggle source
# File lib/travis/cli/api_command.rb, line 61
def enterprise?
  !!endpoint_config['enterprise']
end
org?() click to toggle source
# File lib/travis/cli/api_command.rb, line 69
def org?
  api_endpoint == Travis::Client::ORG_URI
end
pro?() click to toggle source
# File lib/travis/cli/api_command.rb, line 65
def pro?
  api_endpoint == Travis::Client::PRO_URI
end
setup() click to toggle source
# File lib/travis/cli/api_command.rb, line 50
def setup
  setup_enterprise
  self.api_endpoint = default_endpoint if default_endpoint and not explicit_api_endpoint?
  self.access_token               ||= fetch_token
  endpoint_config['access_token'] ||= access_token
  endpoint_config['insecure']       = insecure unless insecure.nil?
  self.insecure                     = endpoint_config['insecure']
  session.ssl                       = { :verify => false } if insecure?
  authenticate if pro? or enterprise?
end
sync(block = true, dot = '.') click to toggle source
# File lib/travis/cli/api_command.rb, line 81
def sync(block = true, dot = '.')
  user.sync

  steps = count = 1
  while block and user.reload.syncing?
    count += 1
    sleep(1)

    if count % steps == 0
      steps = count/10 + 1
      output.print dot
    end
  end
end

Private Instance Methods

default_endpoint() click to toggle source
# File lib/travis/cli/api_command.rb, line 153
def default_endpoint
  ENV['TRAVIS_ENDPOINT'] || config['default_endpoint']
end
detected_endpoint() click to toggle source
# File lib/travis/cli/api_command.rb, line 157
def detected_endpoint
  default_endpoint || Travis::Client::ORG_URI
end
endpoint_option() click to toggle source
# File lib/travis/cli/api_command.rb, line 161
def endpoint_option
  return ""       if org? and detected_endpoint?
  return " --org" if org?
  return " --pro" if pro?

  if config['enterprise']
    key, _ = config['enterprise'].detect { |k,v| v.start_with? api_endpoint }
    return " -X"        if key == "default"
    return " -X #{key}" if key
  end

  " -e %p" % api_endpoint
end
fetch_token() click to toggle source
# File lib/travis/cli/api_command.rb, line 175
def fetch_token
  ENV['TRAVIS_TOKEN'] || endpoint_config['access_token']
end
github_endpoint() click to toggle source
# File lib/travis/cli/api_command.rb, line 141
def github_endpoint
  load_gh
  GH.with({}).api_host
end
listen(*args) { |listener| ... } click to toggle source
Calls superclass method Travis::Client::Methods#listen
# File lib/travis/cli/api_command.rb, line 146
def listen(*args)
  super(*args) do |listener|
    on_signal { listener.disconnect }
    yield listener
  end
end
load_gh() click to toggle source
# File lib/travis/cli/api_command.rb, line 121
def load_gh
  return if defined? GH
  debug "Loading gh"
  require 'gh'

  gh_config       = session.config['github']
  gh_config     &&= gh_config.inject({}) { |h,(k,v)| h.update(k.to_sym => v) }
  gh_config     ||= {}
  gh_config[:ssl] = Travis::Client::Session::SSL_OPTIONS
  gh_config[:ssl] = { :verify => false } if gh_config[:api_url] and gh_config[:api_url] != "https://api.github.com"
  gh_config.delete :scopes

  gh_config[:instrumenter] = proc do |type, payload, &block|
    next block.call unless type == 'http.gh'
    time("GitHub API: #{payload[:verb].to_s.upcase} #{payload[:url]}", block)
  end if debug?

  GH.set(gh_config)
end
setup_enterprise() click to toggle source
# File lib/travis/cli/api_command.rb, line 98
def setup_enterprise
  return unless setup_enterprise?
  c = config['enterprise'] ||= {}
  c[enterprise_name] = api_endpoint if explicit_api_endpoint?
  c[enterprise_name] ||= write_to($stderr) do
    error "enterprise setup not configured" unless interactive?
    user_input                  = ask(color("Enterprise domain: ", :bold)).to_s
    domain                      = user_input[%r{^(?:https?://)?(.*?)/?(?:/api/?)?$}, 1]
    endpoint                    = "https://#{domain}/api"
    config['default_endpoint']  = endpoint if agree("Use #{color domain, :bold} as default endpoint? ") { |q| q.default = 'yes' }
    endpoint
  end
  self.api_endpoint             = c[enterprise_name]
  self.insecure                 = true if insecure.nil?
  endpoint_config['enterprise'] = true
  @setup_ennterpise             = true
end
setup_enterprise?() click to toggle source
# File lib/travis/cli/api_command.rb, line 116
def setup_enterprise?
  @setup_ennterpise ||= false
  !!enterprise_name and not @setup_ennterpise
end