class Sitefull::Auth::Base

Constants

MISSING_AUTHORIZATION_URI
MISSING_BASE_URI
MISSING_BASE_URI_SCHEME
MISSING_CALLBACK_URI
MISSING_CLIENT_ID
MISSING_CLIENT_SECRET
MISSING_REDIRECT_URI_SCHEME
MISSING_SCOPE
MISSING_TOKEN_CREDENTIALS_URI

Public Class Methods

new(options = {}) click to toggle source
# File lib/sitefull-cloud/auth/base.rb, line 15
def initialize(options = {})
  @options = validate(options) if options[:validate].to_s.empty? || options[:validate]
end

Public Instance Methods

authorization_uri(_) click to toggle source
# File lib/sitefull-cloud/auth/base.rb, line 38
def authorization_uri(_)
  fail MISSING_AUTHORIZATION_URI
end
authorization_url_options() click to toggle source
# File lib/sitefull-cloud/auth/base.rb, line 30
def authorization_url_options
  @options.select { |k| [:state, :login_hint, :redirect_uri].include? k.to_sym }
end
callback_uri() click to toggle source
# File lib/sitefull-cloud/auth/base.rb, line 34
def callback_uri
  fail MISSING_CALLBACK_URI
end
required_settings() click to toggle source
# File lib/sitefull-cloud/auth/base.rb, line 50
def required_settings
  [:client_id, :client_secret]
end
scope() click to toggle source
# File lib/sitefull-cloud/auth/base.rb, line 42
def scope
  fail MISSING_SCOPE
end
token_credentials_uri(_) click to toggle source
# File lib/sitefull-cloud/auth/base.rb, line 46
def token_credentials_uri(_)
  fail MISSING_TOKEN_CREDENTIALS_URI
end
token_options() click to toggle source
# File lib/sitefull-cloud/auth/base.rb, line 26
def token_options
  @options.select { |k| [:authorization_uri, :client_id, :client_secret, :scope, :token_credential_uri, :redirect_uri].include? k.to_sym }.merge(@options[:token] || {})
end
validate(options = {}) click to toggle source
# File lib/sitefull-cloud/auth/base.rb, line 19
def validate(options = {})
  fail MISSING_CLIENT_ID if options[:client_id].to_s.empty?
  fail MISSING_CLIENT_SECRET if options[:client_secret].to_s.empty?
  fail MISSING_REDIRECT_URI_SCHEME if !options[:redirect_uri].to_s.empty? && URI(options[:redirect_uri].to_s).scheme.to_s.empty?
  process(options)
end

Private Instance Methods

default_redirect_uri(options) click to toggle source
# File lib/sitefull-cloud/auth/base.rb, line 65
def default_redirect_uri(options)
  fail MISSING_BASE_URI if options[:base_uri].to_s.empty?
  fail MISSING_BASE_URI_SCHEME if URI(options[:base_uri].to_s).scheme.to_s.empty?
  URI.join(options[:base_uri].to_s, callback_uri).to_s
end
process(options = {}) click to toggle source
# File lib/sitefull-cloud/auth/base.rb, line 56
def process(options = {})
  options[:redirect_uri] ||= default_redirect_uri(options) if options[:token].to_s.empty?
  options[:token] = JSON.parse options[:token] unless options[:token].to_s.empty?
  options[:authorization_uri] ||= authorization_uri(options)
  options[:scope] ||= Array(scope)
  options[:token_credential_uri] ||= token_credentials_uri(options)
  options
end