Class: Basecamp::Oauth::DiscoveryResult

Inherits:
Data
  • Object
show all
Defined in:
lib/basecamp/oauth/discovery_result.rb

Overview

Result of discover_from_resource: either a selected AS config, or a soft fallback to Launchpad. Hard failures are raised as DiscoverySelectionError, never represented here — so no consumer can convert a hard failure into a Launchpad request.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#configConfig? (readonly)

the selected AS config (when :selected)

Returns:

  • (Config, nil)

    the current value of config



15
16
17
# File 'lib/basecamp/oauth/discovery_result.rb', line 15

def config
  @config
end

#issuerString? (readonly)

the selected issuer (when :selected)

Returns:

  • (String, nil)

    the current value of issuer



15
16
17
# File 'lib/basecamp/oauth/discovery_result.rb', line 15

def issuer
  @issuer
end

#kindSymbol (readonly)

:selected or :fallback

Returns:

  • (Symbol)

    the current value of kind



15
16
17
# File 'lib/basecamp/oauth/discovery_result.rb', line 15

def kind
  @kind
end

#reasonString? (readonly)

the soft fallback reason (when :fallback): "resource_discovery_failed" or "no_as_advertised"

Returns:

  • (String, nil)

    the current value of reason



15
16
17
# File 'lib/basecamp/oauth/discovery_result.rb', line 15

def reason
  @reason
end

Class Method Details

.fallback(reason) ⇒ Object



20
21
22
# File 'lib/basecamp/oauth/discovery_result.rb', line 20

def self.fallback(reason)
  new(kind: :fallback, config: nil, issuer: nil, reason: reason)
end

.selected(config) ⇒ Object



16
17
18
# File 'lib/basecamp/oauth/discovery_result.rb', line 16

def self.selected(config)
  new(kind: :selected, config: config, issuer: config.issuer, reason: nil)
end

Instance Method Details

#fallback?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/basecamp/oauth/discovery_result.rb', line 28

def fallback?
  kind == :fallback
end

#selected?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/basecamp/oauth/discovery_result.rb', line 24

def selected?
  kind == :selected
end