class SparkApi::Authentication::OAuth2Impl::CLIProvider

Constants

SESSION_FILE

Attributes

persistent_sessions[RW]
session_alias[RW]

Public Class Methods

new(credentials) click to toggle source
# File lib/spark_api/authentication/oauth2_impl/cli_provider.rb, line 9
def initialize(credentials)
  super(credentials)
  @grant_type = :password
  @persistent_sessions = false
  @session_alias = "default"
end

Public Instance Methods

destroy_session() click to toggle source
# File lib/spark_api/authentication/oauth2_impl/cli_provider.rb, line 36
def destroy_session
  destroy_persistent_session
  @session = nil
end
load_session() click to toggle source
# File lib/spark_api/authentication/oauth2_impl/cli_provider.rb, line 27
def load_session()
  @session ||= load_persistent_session
end
persistent_sessions?() click to toggle source
# File lib/spark_api/authentication/oauth2_impl/cli_provider.rb, line 41
def persistent_sessions?
  persistent_sessions == true
end
redirect(url) click to toggle source
# File lib/spark_api/authentication/oauth2_impl/cli_provider.rb, line 18
def redirect(url)
  puts "Missing OAuth2 session, redirecting..."
  puts "Please visit #{url}, login as a user, and paste the authorization code here:"
  self.code = ask("Authorization code?") do |q|
    q.whitespace = :strip_and_collapse
    q.validate = /^\w+$/
  end
end
save_session(session) click to toggle source
# File lib/spark_api/authentication/oauth2_impl/cli_provider.rb, line 31
def save_session(session)
  @session = session
  save_persistent_session
end

Private Instance Methods

destroy_persistent_session() click to toggle source
# File lib/spark_api/authentication/oauth2_impl/cli_provider.rb, line 71
def destroy_persistent_session
  return unless persistent_sessions?
  yaml = load_file
  return unless yaml.include? session_key 
  yaml[session_key].delete("session")
  File.open(filename, "w") {|f| f.write(yaml.to_yaml) }
end
filename() click to toggle source
# File lib/spark_api/authentication/oauth2_impl/cli_provider.rb, line 79
def filename
  ENV['HOME'] + "/" + SESSION_FILE
end
load_file() click to toggle source
# File lib/spark_api/authentication/oauth2_impl/cli_provider.rb, line 83
def load_file
  yaml = {}
  begin 
    yaml = YAML.load(File.open(filename))
    yaml = {} if yaml == false
  rescue => e
    puts "no file: #{e.message}"
  end
  yaml
end
load_persistent_session() click to toggle source
# File lib/spark_api/authentication/oauth2_impl/cli_provider.rb, line 47
def load_persistent_session
  return nil unless persistent_sessions?
  s = load_file[session_key]["session"]
  OAuthSession.new(s)
rescue => e
  puts "no file: #{e.message}"
end
save_persistent_session() click to toggle source
# File lib/spark_api/authentication/oauth2_impl/cli_provider.rb, line 55
def save_persistent_session
  return unless persistent_sessions? && !@session.nil?
  yaml = load_file
  unless yaml.include? session_key
    yaml[session_key] = {}
    yaml[session_key]["created"] = Time.now   
  end
  yaml[session_key]["session"] = @session.to_hash
  yaml[session_key]["modified"] = Time.now   
  File.open(filename, "w") {|f| f.write(yaml.to_yaml) }
end
session_key() click to toggle source
# File lib/spark_api/authentication/oauth2_impl/cli_provider.rb, line 67
def session_key
  "#{client_id}_#{session_alias}"
end