From b551e8c8b36766651be4e782e09e3b02e7d14a10 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 22 Feb 2010 02:52:35 +0000 Subject: * lib/rubygems: update to 1.3.6. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26728 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/rubygems/gemcutter_utilities.rb | 49 +++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 lib/rubygems/gemcutter_utilities.rb (limited to 'lib/rubygems/gemcutter_utilities.rb') 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 -- cgit v1.2.3