Module: Keychain
- Defined in:
- lib/system_keychain.rb
Class Method Summary collapse
- .ask(url, description = nil) ⇒ Object
- .authorize(description, url, &block) ⇒ Object
- .authorize_url(description, url, &block) ⇒ Object
- .get(url) ⇒ Object
- .remove(url) ⇒ Object
- .save(url, user, pass, description = url) ⇒ Object
Class Method Details
.ask(url, description = nil) ⇒ Object
22 23 24 25 26 27 28 29 |
# 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, &block) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/system_keychain.rb', line 31 def self.(description, url, &block) = false while ! user, pass = self.get(url) user, pass = self.ask(url, description) unless user begin value = yield user, pass = true rescue StandardError => e @input.print_error("Authorization failed: #{e.inspect}") self.remove(url) end end return value end |
.authorize_url(description, url, &block) ⇒ Object
47 48 49 50 51 52 |
# File 'lib/system_keychain.rb', line 47 def self.(description, url, &block) self.(description, url) do |user, pass| auth_url = url.sub(/([^:]*:\/\/)/,"\\1#{user}:#{pass}@") yield auth_url end end |
.get(url) ⇒ Object
10 11 12 |
# File 'lib/system_keychain.rb', line 10 def self.get(url) @engine.get(url) end |
.remove(url) ⇒ Object
14 15 16 |
# File 'lib/system_keychain.rb', line 14 def self.remove(url) @engine.remove(url) end |
.save(url, user, pass, description = url) ⇒ Object
18 19 20 |
# File 'lib/system_keychain.rb', line 18 def self.save(url, user, pass, description = url) @engine.save(url, user, pass, description) end |