class BooticCli::Session

Attributes

store[R]

Public Class Methods

new(store) click to toggle source
# File lib/bootic_cli/session.rb, line 7
def initialize(store)
  @store = store
  upgrade!
end

Public Instance Methods

client() click to toggle source
# File lib/bootic_cli/session.rb, line 91
def client
  @client ||= begin
    raise "First setup credentials and log in" unless ready?
    BooticClient.configure do |c|
      c.auth_host = config[:auth_host] if config[:auth_host]
      c.api_root = config[:api_root] if config[:api_root]
      c.client_id = config[:client_id]
      c.client_secret = config[:client_secret]
      c.logger = Logger.new(STDOUT)
      c.logging = false
      c.cache_store = NullCacheStore.new
    end

    BooticClient.client(:authorized, access_token: config[:access_token]) do |new_token|
      store.transaction{ store['access_token'] = new_token }
    end
  end
end
config() click to toggle source
# File lib/bootic_cli/session.rb, line 62
def config
  @config ||= store.transaction do
    h = {
      client_id: store['client_id'],
      client_secret: store['client_secret'],
      access_token: store['access_token']
    }
    h[:auth_host] = store['auth_host'] if store['auth_host']
    h[:api_root] = store['api_root'] if store['api_root']
    h
  end
end
erase!() click to toggle source
# File lib/bootic_cli/session.rb, line 52
def erase!
  store.erase
end
logged_in?() click to toggle source
# File lib/bootic_cli/session.rb, line 27
def logged_in?
  store.transaction{ store['access_token'] }
end
login(username, pwd, scope) click to toggle source
# File lib/bootic_cli/session.rb, line 44
def login(username, pwd, scope)
  token = oauth_client.password.get_token(username, pwd, 'scope' => scope)

  store.transaction do
    store['access_token'] = token.token
  end
end
logout!() click to toggle source
# File lib/bootic_cli/session.rb, line 56
def logout!
  store.transaction do
    store['access_token'] = nil
  end
end
needs_upgrade?() click to toggle source
# File lib/bootic_cli/session.rb, line 12
def needs_upgrade?
  store.needs_upgrade?
end
ready?() click to toggle source
# File lib/bootic_cli/session.rb, line 31
def ready?
  setup? && logged_in?
end
setup(client_id, client_secret, auth_host: nil, api_root: nil) click to toggle source
# File lib/bootic_cli/session.rb, line 35
def setup(client_id, client_secret, auth_host: nil, api_root: nil)
  store.transaction do
    store['client_id'] = client_id
    store['client_secret'] = client_secret
    store['auth_host'] = auth_host if auth_host
    store['api_root'] = api_root if api_root
  end
end
setup?() click to toggle source
# File lib/bootic_cli/session.rb, line 21
def setup?
  store.transaction do
    store['client_id'] && store['client_secret']
  end
end
upgrade!() click to toggle source
# File lib/bootic_cli/session.rb, line 16
def upgrade!
  store.upgrade!
  self
end

Private Instance Methods

oauth_client() click to toggle source
# File lib/bootic_cli/session.rb, line 114
def oauth_client
  @oauth_client ||= OAuth2::Client.new(
    config[:client_id],
    config[:client_secret],
    site: (config[:auth_host] || BooticClient.configuration.auth_host)
  )
end