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

i[web jwt boot].freeze
AUTH_OPTIONS =

Options used for authentication

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

Constants inherited from Base

Base::ALL_OPS, Base::GLOBAL_OPS, Base::INSTANCE_OPS, Base::MAX_ITEMS, Base::MAX_PAGES

Instance Attribute Summary

Attributes inherited from Base

#context

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, #instance_identifier, #list_entities_limit_offset_total_count, #lookup_entity_by_field, #lookup_entity_generic, #options, percent_selector, #persistency, #query_read_delete, #transfer, #value_create_modify

Constructor Details

#initialize(**_) ⇒ Oauth

Returns a new instance of Oauth.



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

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

Instance Method Details

#new_with_options(klass, kwargs: {}, option: {}) ⇒ Object

Get command line options specified by AUTH_OPTIONS and option.keys (value is default). Adds those not nil to the kwargs. Instantiate the provided klass with those kwargs. option can specify a default value (not nil)

Parameters:

  • klass (Class)

    API object to create

  • kwargs (Hash) (defaults to: {})

    The fixed keyword arguments for creation

  • option (Hash) (defaults to: {})

    Additional options, key=symbol, value:default value or nil

Returns:

  • (Object)

    instance of klass

Raises:

  • (Cli::Error)

    if a required option is missing



33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/aspera/cli/plugins/oauth.rb', line 33

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