Sha256: c3941de3342212d7d97ee01db60a364187f67fb897bb5b711da3bb5011b799b6

Contents?: true

Size: 1.68 KB

Versions: 2

Compression:

Stored size: 1.68 KB

Contents

require 'haveapi/cli/authentication/base'

module HaveAPI::CLI::Authentication
  class Token < Base
    register :token

    def options(opts)
      opts.on('--username USER', 'User name') do |u|
        @user = u
      end

      opts.on('--password PASSWORD', 'Password') do |p|
        @password = p
      end

      opts.on('--token TOKEN', 'Token') do |t|
        @token = t
      end

      opts.on('--token-lifetime LIFETIME',
              %i(fixed renewable_manual renewable_auto permanent),
              'Token lifetime, defaults to renewable_auto') do |l|
        @lifetime = l
      end

      opts.on('--token-interval SECONDS', Integer,
              'How long will token be valid in seconds') do |s|
        @interval = s
      end

      opts.on('--new-token', 'Request new token') do
        @token = nil
      end

      via = %i(query_param header)

      opts.on('--token-via VIA', via,
              'Send token as a query parameter or in HTTP header',
              "(#{via.join(', ')})") do |v|
        @via = v.to_sym
      end
    end

    def validate
      return if @token

      @user ||= ask('User name: ') { |q| q.default = nil }

      @password ||= ask('Password: ') do |q|
        q.default = nil
        q.echo = false
      end
    end

    def authenticate
      @communicator.authenticate(:token, {
          user: @user,
          password: @password,
          token: @token,
          lifetime: @lifetime || :renewable_auto,
          interval: @interval,
          valid_to: @valid_to,
          via: @via
      })
    end

    def save
      super.update({
                       via: @via,
                       interval: @interval
                   })
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
haveapi-client-0.12.1 lib/haveapi/cli/authentication/token.rb
haveapi-client-0.12.0 lib/haveapi/cli/authentication/token.rb