summaryrefslogtreecommitdiff
path: root/lib/rubygems/gemcutter_utilities.rb
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-02-22 02:52:35 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-02-22 02:52:35 +0000
commitb551e8c8b36766651be4e782e09e3b02e7d14a10 (patch)
treee164a1ef908bd4451568abf05b688f1593915b81 /lib/rubygems/gemcutter_utilities.rb
parent65544f575b25b18dc27f9364f973556ddb48538f (diff)
* lib/rubygems: update to 1.3.6.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26728 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/gemcutter_utilities.rb')
-rw-r--r--lib/rubygems/gemcutter_utilities.rb49
1 files changed, 49 insertions, 0 deletions
diff --git a/lib/rubygems/gemcutter_utilities.rb b/lib/rubygems/gemcutter_utilities.rb
new file mode 100644
index 0000000000..225bd704f9
--- /dev/null
+++ b/lib/rubygems/gemcutter_utilities.rb
@@ -0,0 +1,49 @@
+require 'net/http'
+require 'rubygems/remote_fetcher'
+
+module Gem::GemcutterUtilities
+
+ def sign_in
+ return if Gem.configuration.rubygems_api_key
+
+ say "Enter your RubyGems.org credentials."
+ say "Don't have an account yet? Create one at http://rubygems.org/sign_up"
+
+ email = ask " Email: "
+ password = ask_for_password "Password: "
+ say "\n"
+
+ response = rubygems_api_request :get, "api/v1/api_key" do |request|
+ request.basic_auth email, password
+ end
+
+ with_response response do |resp|
+ say "Signed in."
+ Gem.configuration.rubygems_api_key = resp.body
+ end
+ end
+
+ def rubygems_api_request(method, path, &block)
+ host = ENV['RUBYGEMS_HOST'] || 'https://rubygems.org'
+ uri = URI.parse "#{host}/#{path}"
+
+ request_method = Net::HTTP.const_get method.to_s.capitalize
+
+ Gem::RemoteFetcher.fetcher.request(uri, request_method, &block)
+ end
+
+ def with_response(resp)
+ case resp
+ when Net::HTTPSuccess then
+ if block_given? then
+ yield resp
+ else
+ say resp.body
+ end
+ else
+ say resp.body
+ terminate_interaction 1
+ end
+ end
+
+end