Class: Travis::Client::AutoLogin

Inherits:
Object
  • Object
show all
Defined in:
lib/travis/client/auto_login.rb

Constant Summary collapse

NoTokenError =
Class.new(RuntimeError)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(session, options = {}) ⇒ AutoLogin

Returns a new instance of AutoLogin.



13
14
15
16
17
18
19
# File 'lib/travis/client/auto_login.rb', line 13

def initialize(session, options = {})
  @session     = session.session
  config_path  = ENV.fetch('TRAVIS_CONFIG_PATH') { File.expand_path('.travis', Dir.home) }
  @config_file = options.fetch(:config_file) { File.expand_path('config.yml', config_path) }
  @auto_token  = options.fetch(:auto_token, true)
  @raise       = options.fetch(:raise, true)
end

Instance Attribute Details

#sessionObject (readonly)

Returns the value of attribute session.



11
12
13
# File 'lib/travis/client/auto_login.rb', line 11

def session
  @session
end

Instance Method Details

#authenticateObject



21
22
23
24
25
# File 'lib/travis/client/auto_login.rb', line 21

def authenticate
  return if (session.access_token = cli_token)

  github.with_token { |t| session.github_auth(t) }
end

#cli_configObject



42
43
44
# File 'lib/travis/client/auto_login.rb', line 42

def cli_config
  @cli_config ||= YAML.load_file(@config_file) if File.exist? @config_file
end

#cli_tokenObject



35
36
37
38
39
40
# File 'lib/travis/client/auto_login.rb', line 35

def cli_token
  result   = cli_config
  result &&= result['endpoints']
  result &&= result[session.uri]
  result &&  result['access_token']
end

#githubObject



27
28
29
30
31
32
33
# File 'lib/travis/client/auto_login.rb', line 27

def github
  @github         ||= Tools::Github.new(session.config['github']) do |g|
    g.explode       = true
    g.auto_token    = @auto_token
    g.after_tokens  = proc { raise NoTokenError, 'no suitable github token found' } if @raise
  end
end