Class: Aspera::Cli::Plugins::Oauth

Inherits:
BasicAuth show all
Defined in:
lib/aspera/cli/plugins/oauth.rb

Overview

base class for applications supporting OAuth 2.0 authentication

Direct Known Subclasses

Aoc, Faspex5

Constant Summary collapse

AUTH_TYPES =

OAuth methods supported (web, jwt)

%i[web jwt boot].freeze
AUTH_OPTIONS =

Options used for authentication (url, auth, client_id, etc…)

%i[url auth client_id client_secret redirect_uri private_key passphrase username password].freeze

Instance Attribute Summary

Attributes inherited from Base

#context

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BasicAuth

#basic_auth_api, #basic_auth_params, declare_options

Methods inherited from Base

#add_manual_header, #config, declare_options, #do_bulk_operation, #entity_execute, #formatter, #options, #persistency, #query_read_delete, #transfer, #value_create_modify

Constructor Details

#initialize(**_) ⇒ Oauth

Returns a new instance of Oauth.



31
32
33
34
35
36
37
38
39
# File 'lib/aspera/cli/plugins/oauth.rb', line 31

def initialize(**_)
  super
  options.declare(:auth, 'OAuth type of authentication', allowed: AUTH_TYPES, default: :jwt)
  options.declare(:client_id, 'OAuth client identifier')
  options.declare(:client_secret, 'OAuth client secret')
  options.declare(:redirect_uri, 'OAuth (Web) redirect URI for web authentication')
  options.declare(:private_key, 'OAuth (JWT) RSA private key PEM value (prefix file path with @file:)')
  options.declare(:passphrase, 'OAuth (JWT) RSA private key passphrase')
end

Class Method Details

.kwargs_from_options(options) ⇒ Hash{Symbol => Object}

Get command line ‘options` specified by `AUTH_OPTIONS`

Parameters:

  • options (Cli::Manager)

    Object to get command line options.

Returns:

  • (Hash{Symbol => Object})

    Options

Raises:

  • (Cli::Error)

    if a required option is missing



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/aspera/cli/plugins/oauth.rb', line 15

def kwargs_from_options(options)
  AUTH_OPTIONS.each_with_object({}) do |i, m|
    v = options.get_option(i)
    m[i] = v unless v.nil?
  end
rescue ::ArgumentError => e
  if (m = e.message.match(/missing keyword: :(.*)$/))
    raise Cli::Error, "Missing option: #{m[1]}"
  end
  raise
end