module Keychain

Public Class Methods

ask(url, description = nil) click to toggle source
# File lib/system_keychain.rb, line 22
def self.ask(url, description = nil)
  @input.print_important("Enter credentials for #{description} #{url}")
  @input.print("(These will be saved in your Mac OSX keychain)")
  user = @input.ask("Username: ")
  pass = @input.ask_secret("Password: ")
  self.save(url, user, pass, description)
  return [user, pass]
end
authorize(description, url) { |user, pass| ... } click to toggle source
# File lib/system_keychain.rb, line 31
def self.authorize(description, url, &block)
  authorized = false
  while !authorized
    user, pass = self.get(url)
    user, pass = self.ask(url, description) unless user
    begin
      value = yield user, pass
      authorized = true
    rescue StandardError => e
      @input.print_error("Authorization failed: #{e.inspect}")
      self.remove(url)
    end
  end
  return value
end
authorize_url(description, url) { |auth_url| ... } click to toggle source
# File lib/system_keychain.rb, line 47
def self.authorize_url(description, url, &block)
  self.authorize(description, url) do |user, pass|
    auth_url = url.sub(/([^:]*:\/\/)/,"\\1#{user}:#{pass}@")
    yield auth_url
  end
end
get(url) click to toggle source
# File lib/system_keychain.rb, line 10
def self.get(url)
  @engine.get(url)
end
remove(url) click to toggle source
# File lib/system_keychain.rb, line 14
def self.remove(url)
  @engine.remove(url)
end
save(url, user, pass, description = url) click to toggle source
# File lib/system_keychain.rb, line 18
def self.save(url, user, pass, description = url)
  @engine.save(url, user, pass, description)
end