class Shellify::User

Constants

USER_FILE

Attributes

id[RW]
refresh_token[RW]
token[RW]

Public Class Methods

new(config_dir) click to toggle source
Calls superclass method
# File lib/shellify/user.rb, line 9
def initialize(config_dir)
  @config_dir = config_dir
  @user_file_path = config_dir + USER_FILE
  create_user_file
  write_default_user
  load_persisted_user
  super({
    'credentials' => {
      'token' => @token,
      'refresh_token' => @refresh_token,
      'access_refresh_callback' => access_refresh_callback,
    },
    'id' => @id,
  })
end

Public Instance Methods

configured?() click to toggle source
# File lib/shellify/user.rb, line 25
def configured?
  !@token.empty? && !@refresh_token.empty? && !@id.empty?
end
save!() click to toggle source
# File lib/shellify/user.rb, line 29
def save!
  File.open(@user_file_path, 'w') do |file|
    file.write(JSON.pretty_generate({id: @id, token: @token, refresh_token: @refresh_token}))
  end
end

Private Instance Methods

access_refresh_callback() click to toggle source
# File lib/shellify/user.rb, line 41
def access_refresh_callback
  Proc.new do |new_access_token, _token_lifetime|
    @token = new_access_token
    save!
  end
end
create_user_file() click to toggle source
# File lib/shellify/user.rb, line 48
def create_user_file
  return if File.exists?(@user_file_path)

  FileUtils.mkdir_p(@config_dir)
  FileUtils.touch(@user_file_path)
end
load_persisted_user() click to toggle source
# File lib/shellify/user.rb, line 37
def load_persisted_user
  JSON.parse(File.read(@user_file_path)).each_pair { |k,v| instance_variable_set("@#{k}", v) }
end
write_default_user() click to toggle source
# File lib/shellify/user.rb, line 55
def write_default_user
  return unless File.zero?(@user_file_path)

  File.open(@user_file_path, 'w') do |file|
    file.write(JSON.pretty_generate({id: '', token: '', refresh_token: '',}))
  end
end