[DRE-commits] [ruby-oauth] 01/01: Revert 0.5.1, sorry for my going too far.

Daisuke Higuchi dai at moszumanska.debian.org
Tue May 24 13:35:08 UTC 2016


This is an automated email from the git hooks/post-receive script.

dai pushed a commit to branch master
in repository ruby-oauth.

commit 20a0074cd97becfaa8161ad2aac355501fd79002
Author: HIGUCHI Daisuke (VDR dai) <dai at debian.org>
Date:   Tue May 24 22:31:37 2016 +0900

    Revert 0.5.1, sorry for my going too far.
---
 .gemtest                                           |   0
 Gemfile                                            |  16 ++
 Gemfile.lock                                       |  47 ++++
 HISTORY                                            | 173 +++++++++++++
 README.rdoc                                        |  16 +-
 Rakefile                                           |  37 +++
 debian/control                                     |  11 +-
 debian/copyright                                   |   2 +-
 debian/patches/add_missing_rsa.patch               |  41 ----
 debian/patches/series                              |   1 -
 debian/ruby-oauth.examples                         |   1 +
 debian/ruby-tests.rb                               |  14 +-
 examples/yql.rb                                    |  44 ++++
 lib/digest/hmac.rb                                 | 104 ++++++++
 lib/oauth.rb                                       |   4 +-
 lib/oauth/cli.rb                                   |   6 +-
 lib/oauth/client/helper.rb                         |   4 -
 lib/oauth/client/net_http.rb                       |  16 +-
 lib/oauth/consumer.rb                              |  14 +-
 lib/oauth/helper.rb                                |   6 +-
 .../request_proxy/action_controller_request.rb     |  30 +--
 lib/oauth/request_proxy/base.rb                    |   4 +-
 lib/oauth/request_proxy/net_http.rb                |   2 +-
 lib/oauth/request_proxy/rest_client_request.rb     |  62 -----
 lib/oauth/request_proxy/typhoeus_request.rb        |   7 +-
 lib/oauth/signature/base.rb                        |  32 ++-
 lib/oauth/signature/hmac/base.rb                   |  15 ++
 lib/oauth/signature/hmac/md5.rb                    |   8 +
 lib/oauth/signature/hmac/rmd160.rb                 |   8 +
 lib/oauth/signature/hmac/sha1.rb                   |  16 +-
 lib/oauth/signature/hmac/sha2.rb                   |   8 +
 lib/oauth/signature/md5.rb                         |  13 +
 lib/oauth/signature/plaintext.rb                   |   6 -
 lib/oauth/signature/rsa/sha1.rb                    |  10 +-
 lib/oauth/signature/sha1.rb                        |  13 +
 lib/oauth/tokens/access_token.rb                   |  12 -
 lib/oauth/tokens/request_token.rb                  |   7 +-
 lib/oauth/tokens/token.rb                          |   2 +-
 lib/oauth/version.rb                               |   3 -
 metadata.yml                                       | 270 +++++++++++++++++++++
 oauth.gemspec                                      | 165 +++++++++----
 tasks/deployment.rake                              |  34 +++
 tasks/environment.rake                             |   7 +
 tasks/website.rake                                 |  17 ++
 test/cases/oauth_case.rb                           |   4 +-
 .../1_0-final/test_normalize_request_parameters.rb |   4 +-
 test/integration/consumer_test.rb                  |  26 +-
 test/keys/rsa.cert                                 |  11 +
 test/keys/rsa.pem                                  |  16 ++
 test/test_access_token.rb                          |   4 +-
 test/test_action_controller_request_proxy.rb       |  34 +--
 test/test_consumer.rb                              |  12 +-
 test/test_curb_request_proxy.rb                    |   2 +-
 test/test_em_http_client.rb                        |   2 +-
 test/test_em_http_request_proxy.rb                 |   2 +-
 test/test_helper.rb                                |  11 +-
 test/test_hmac_sha1.rb                             |   2 +-
 test/test_net_http_client.rb                       |  12 +-
 test/test_net_http_request_proxy.rb                |   2 +-
 test/test_oauth_helper.rb                          |  10 +-
 test/test_rack_request_proxy.rb                    |   2 +-
 test/test_request_token.rb                         |  13 +-
 test/test_rest_client_request_proxy.rb             |  81 -------
 test/test_rsa_sha1.rb                              |   2 +-
 test/test_server.rb                                |  13 +-
 test/test_signature.rb                             |  19 +-
 test/test_signature_base.rb                        |  12 +-
 test/test_signature_hmac_sha1.rb                   |  40 ---
 test/test_signature_plain_text.rb                  |   2 +-
 test/test_token.rb                                 |   2 +-
 test/test_typhoeus_request_proxy.rb                |  27 +--
 71 files changed, 1128 insertions(+), 547 deletions(-)

diff --git a/.gemtest b/.gemtest
new file mode 100644
index 0000000..e69de29
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000..c5c59f7
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,16 @@
+source :rubygems
+
+
+group :development do
+  gem 'rake'
+  gem 'jeweler'
+end
+
+group :test do
+  gem 'actionpack', '~>2.3.8'
+  gem 'mocha', '>=0.9.8'
+  gem 'typhoeus', '>=0.1.13'
+  gem 'em-http-request', "0.2.11"
+  gem 'curb', ">= 0.6.6.0"
+  gem 'webmock'
+end
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000..dd920ea
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,47 @@
+GEM
+  remote: http://rubygems.org/
+  specs:
+    actionpack (2.3.14)
+      activesupport (= 2.3.14)
+      rack (~> 1.1.0)
+    activesupport (2.3.14)
+    addressable (2.2.7)
+    crack (0.3.1)
+    curb (0.8.0)
+    em-http-request (0.2.11)
+      addressable (>= 2.0.0)
+      eventmachine (>= 0.12.9)
+    eventmachine (0.12.10)
+    git (1.2.5)
+    jeweler (1.8.3)
+      bundler (~> 1.0)
+      git (>= 1.2.5)
+      rake
+      rdoc
+    json (1.6.6)
+    metaclass (0.0.1)
+    mime-types (1.18)
+    mocha (0.11.1)
+      metaclass (~> 0.0.1)
+    rack (1.1.3)
+    rake (0.9.2.2)
+    rdoc (3.12)
+      json (~> 1.4)
+    typhoeus (0.3.3)
+      mime-types
+    webmock (1.8.6)
+      addressable (>= 2.2.7)
+      crack (>= 0.1.7)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  actionpack (~> 2.3.8)
+  curb (>= 0.6.6.0)
+  em-http-request (= 0.2.11)
+  jeweler
+  mocha (>= 0.9.8)
+  rake
+  typhoeus (>= 0.1.13)
+  webmock
diff --git a/HISTORY b/HISTORY
new file mode 100644
index 0000000..a48db07
--- /dev/null
+++ b/HISTORY
@@ -0,0 +1,173 @@
+=== 0.4.7 2012-09-03
+
+* Fix merging paths if the path is not empty
+* Set a configurable timeout for all requests (Rick Olson)
+* Fix nested hash params in Consumer#request (Ernie Miller)
+
+=== 0.4.6 2012-04-21
+
+* Fixed nested attributes in #normalize (Shaliko Usubov)
+* Make use the path component of the :site parameter (Jonathon M. Abbott)
+* Fixed post body's being dropped in 1.9 (Steven Hammond)
+* Fixed PUT request handling (Anton Panasenko)
+
+=== 0.4.5 2011-06-25
+
+* Add explicit require for rsa/sha1 (Juris Galang)
+* Use webmock to mock all http-requests in tests (Adrian Feldman)
+* Add gemtest support (Adrian Feldman)
+* Fix POST Requests with Typhoeus proxy (niedhui)
+* Mention Typhoeus require in the README (Kim Ahlström)
+* Fix incorrect hardcoded port (Ian Taylor)
+* Use Net::HTTPGenericRequest (Jakub Kuźma)
+
+=== 0.4.4 2010-10-31
+
+* Fix LoadError rescue in tests: return can't be used in this context (Hans de Graaff)
+* HTTP headers should be strings. (seancribbs)
+* ensure consumer uri gets set back to original config even if an error occurs (Brian Finney)
+* Yahoo uses & to split records in OAuth headers (Brian Finney)
+* Added support for Rails 3 in client/action_controller_request (Pelle)
+
+== 0.4.3 2010-09-01
+
+* Fix for em-http proxy (ichverstehe)
+
+== 0.4.2 2010-08-13
+
+* Fixed compatibility with Ruby 1.9.2 (ecavazos)
+* Fixed the em-http request proxy (Joshua Hull)
+* Fix for oauth proxy string manipulation (Jakub Suder)
+* Added Bundler (rc) Gemfile for easier dev/testing
+
+== 0.4.1 2010-06-16
+
+* Added support for using OAuth with proxies (Marsh Gardiner)
+* Rails 3 Compatibility fixes (Pelle Braendgaard)
+* Fixed load errors on tests for missing (non-required) libraries
+
+== 0.4.0 2010-04-22
+
+* Added computation of oauth_body_hash as per OAuth Request Body Hash 1.0
+  Draft 4 (Michael Reinsch)
+* Added the optional `oauth_session_handle` parameter for the Yahoo implementation (Will Bailey)
+* Better marshalling implementation (Yoan Blanc)
+* Added optional block to OAuth::Consumer.get_*_token (Neill Pearman)
+* Exclude `oauth_callback` with :exclude_callback (Neill Pearman)
+* Strip extraneous spaces and line breaks from access_token responses
+  (observed in the wild with Yahoo!'s OAuth+OpenID hybrid) (Eric Hartmann)
+* Stop double-escaping PLAINTEXT signatures (Jimmy Zimmerman)
+* OAuth::Client::Helper won't override the specified `oauth_version`
+  (Philip Kromer)
+* Support for Ruby 1.9 (Aaron Quint, Corey Donahoe, et al)
+* Fixed an encoding / multibyte issue (成田 一生)
+* Replaced hoe with Jeweler (Aaron Quint)
+* Support for Typhoeus (Bill Kocik)
+* Support for em-http (EventMachine) (Darcy Laycock)
+* Support for curb (André Luis Leal Cardoso Junior)
+* New website (Aaron Quint)
+
+== 0.3.6 2009-09-14
+
+* Added -B CLI option to use the :body authentication scheme (Seth)
+* Respect `--method` in `authorize` CLI command (Seth)
+* Support POST and PUT with raw bodies (Yu-Shan Fung et al)
+* Test clean-up (Xavier Shay, Hannes Tydén)
+* Added :ca_file consumer option to allow consumer specific certificate
+  override. (Pelle)
+
+== 0.3.5 2009-06-03
+
+* `query` CLI command to access protected resources (Seth)
+* Added -H, -Q CLI options for specifying the authentication scheme (Seth)
+* Added -O CLI option for specifying a file containing options (Seth)
+* Support streamable body contents for large request bodies (Seth Cousins)
+* Support for OAuth 1.0a (Seth)
+* Added proxy support to OAuth::Consumer (Marshall Huss)
+* Added --scope CLI option for Google's 'scope' parameter (Seth)
+
+== 0.3.4 2009-05-06
+
+* OAuth::Client::Helper uses OAuth::VERSION (chadisfaction)
+* Fix OAuth::RequestProxy::ActionControllerRequest's handling of params
+  (Tristan Groléat)
+
+== 0.3.3 2009-05-04
+
+* Corrected OAuth XMPP namespace (Seth)
+* Improved error handling for invalid Authorization headers (Matt Sanford)
+* Fixed signatures for non-ASCII under $KCODE other than 'u' (Matt Sanford)
+* Fixed edge cases in ActionControllerRequestProxy where params were being
+  incorrectly signed (Marcos Wright Kuhns)
+* Support for arguments in OAuth::Consumer#get_access_token (Matt Sanford)
+* Add gem version to user-agent header (Matt Sanford)
+* Handle input from aggressive form encoding libraries (Matt Wood)
+
+== 0.3.2 2009-03-23
+
+* 2xx statuses should be treated as success (Anders Conbere)
+* Support applications using the MethodOverride Rack middleware (László Bácsi)
+* `authorize` command for `oauth` CLI (Seth)
+* Initial support for Problem Reporting extension (Seth)
+* Verify SSL certificates if CA certificates are available (Seth)
+* Fixed ActionController parameter escaping behavior (Thiago Arrais, László
+  Bácsi, Brett Gibson, et al)
+* Fixed signature calculation when both options and a block were provided to
+  OAuth::Signature::Base#initialize (Seth)
+* Added help to the 'oauth' CLI (Seth)
+* Fixed a problem when attempting to normalize MockRequest URIs (Seth)
+
+== 0.3.1 2009-1-26
+
+* Fixed a problem with relative and absolute token request paths. (Michael
+  Wood)
+
+== 0.3.0 2009-1-25
+
+* Support ActionController::Request from Edge Rails (László Bácsi)
+* Correctly handle multi-valued parameters (Seth)
+* Added #normalized_parameters to OAuth::RequestProxy::Base (Pelle)
+* OAuth::Signature.sign and friends now yield the RequestProxy instead of the
+  token when the passed block's arity is 1. (Seth)
+* Token requests are made to the configured URL rather than generating a
+  potentially incorrect one.  (Kellan Elliott-McCrea)
+* Command-line app for generating signatures. (Seth)
+* Improved test-cases and compatibility for encoding issues. (Pelle)
+
+== 0.2.7 2008-9-10 The lets fix the last release release
+
+* Fixed plain text signatures (Andrew Arrow)
+* Fixed RSA requests using OAuthTokens. (Philip Lipu Tsai)
+
+== 0.2.6 2008-9-9 The lets RSA release
+
+* Improved support for Ruby 1.8.7 (Bill Kocik)
+* Fixed RSA verification to support RSA providers
+  now using Ruby and RSA
+* Improved RSA testing
+* Omit token when signing with RSA
+* Added support for 'private_key_file' option for RSA signatures (Chris Mear)
+* Fixed several edge cases where params were being incorrectly signed (Scott
+  Hill)
+* Fixed RSA signing (choonkeat)
+
+== 0.2.2 2008-2-22 Lets actually support SSL release
+
+* Use HTTPS when required.
+
+== 0.2 2008-1-19 All together now release
+
+This is a big release, where we have merged the efforts of various parties into one common library. 
+This means there are definitely some API changes you should be aware of. They should be minimal 
+but please have a look at the unit tests.
+
+== 0.1.2 2007-12-1
+
+* Fixed checks for missing OAuth params to improve performance
+* Includes Pat's fix for getting the realm out.
+
+== 0.1.1 2007-11-26
+
+* First release as a GEM
+* Moved all non-Rails functionality from the Rails plugin:
+  http://code.google.com/p/oauth-plugin/
diff --git a/README.rdoc b/README.rdoc
index 5b7134b..5932a24 100644
--- a/README.rdoc
+++ b/README.rdoc
@@ -10,7 +10,7 @@ See the OAuth specs http://oauth.net/core/1.0/
 
   sudo gem install oauth
 
-The source code is now hosted on the OAuth GitHub Project http://github.com/oauth-xx/oauth-ruby
+The source code is now hosted on the OAuth GitHub Project http://github.com/oauth/oauth-ruby
 
 == The basics
 
@@ -44,9 +44,9 @@ Now that you have an access token, you can use Typhoeus to interact with the OAu
   require 'oauth/request_proxy/typhoeus_request'
   oauth_params = {:consumer => oauth_consumer, :token => access_token}
   hydra = Typhoeus::Hydra.new
-  req = Typhoeus::Request.new(uri, options) # :method needs to be specified in options
+  req = Typhoeus::Request.new(uri, options) 
   oauth_helper = OAuth::Client::Helper.new(req, oauth_params.merge(:request_uri => uri))
-  req.options[:headers].merge!({"Authorization" => oauth_helper.header}) # Signs the request
+  req.headers.merge!({"Authorization" => oauth_helper.header}) # Signs the request
   hydra.queue(req)
   hydra.run
   @response = req.response
@@ -54,22 +54,22 @@ Now that you have an access token, you can use Typhoeus to interact with the OAu
 
 == More Information
 
-* RDoc: http://rdoc.info/github/oauth-xx/oauth-ruby/master/frames
+* RDoc: http://rdoc.info/projects/oauth/oauth-ruby/
 * Mailing List/Google Group: http://groups.google.com/group/oauth-ruby
 
 == How to submit patches
 
-The source code is now hosted on the OAuth GitHub Project http://github.com/oauth-xx/oauth-ruby
+The source code is now hosted on the OAuth GitHub Project http://github.com/oauth/oauth-ruby
 
 To submit a patch, please fork the oauth project and create a patch with tests. Once you're happy with it send a pull request and post a message to the google group.
 
 == License
 
-This code is free to use under the terms of the MIT license.
+This code is free to use under the terms of the MIT license. 
 
 == Contact
 
-OAuth Ruby has been created and maintained by a large number of talented individuals.
+OAuth Ruby has been created and maintained by a large number of talented individuals. 
 The current maintainer is Aaron Quint (quirkey).
 
-Comments are welcome. Send an email to via the OAuth Ruby mailing list http://groups.google.com/group/oauth-ruby
+Comments are welcome. Send an email to via the OAuth Ruby mailing list http://groups.google.com/group/oauth-ruby
\ No newline at end of file
diff --git a/Rakefile b/Rakefile
new file mode 100644
index 0000000..17782d1
--- /dev/null
+++ b/Rakefile
@@ -0,0 +1,37 @@
+%w[rubygems rake rake/clean rake/testtask fileutils].each { |f| require f }
+$LOAD_PATH << File.dirname(__FILE__) + '/lib'
+require 'oauth'
+
+begin
+  require 'jeweler'
+  Jeweler::Tasks.new do |s|
+    s.name = %q{oauth}
+    s.version = OAuth::VERSION
+    s.authors = ["Pelle Braendgaard", "Blaine Cook", "Larry Halff", "Jesse Clark", "Jon Crosby", "Seth Fitzsimmons", "Matt Sanford", "Aaron Quint"]
+    s.email = "oauth-ruby at googlegroups.com"
+    s.description = "OAuth Core Ruby implementation"
+    s.summary = s.description
+    s.rubyforge_project = %q{oauth}
+    s.add_development_dependency(%q<actionpack>, [">=2.3.5"])
+    s.add_development_dependency(%q<rack>, [">= 1.0.0"])
+    s.add_development_dependency(%q<mocha>, [">= 0.9.8"])
+    s.add_development_dependency(%q<typhoeus>, [">= 0.1.13"])
+    s.add_development_dependency(%q<em-http-request>, [">= 0.2.10"])
+    s.add_development_dependency(%q<curb>, [">= 0.6.6.0"])
+    
+    s.files.include '.gemtest'
+  end
+  Jeweler::GemcutterTasks.new
+rescue LoadError
+  puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
+end
+
+Rake::TestTask.new do |t|
+  t.libs << "test"
+  t.test_files = FileList['test/**/*test*.rb']
+  t.verbose = true
+end
+
+Dir['tasks/**/*.rake'].each { |t| load t }
+
+task :default => :test
diff --git a/debian/control b/debian/control
index 674a7fd..d8da30a 100644
--- a/debian/control
+++ b/debian/control
@@ -5,17 +5,8 @@ Maintainer: Debian Ruby Extras Maintainers <pkg-ruby-extras-maintainers at lists.al
 Uploaders: Taku YASUI <tach at debian.org>
 Build-Depends: debhelper (>= 9~),
                gem2deb,
-               ruby-actionpack,
-               ruby-byebug,
-               ruby-curb,
-               ruby-mocha,
-               ruby-typhoeus,
-               ruby-rack-test,
-               ruby-webmock,
-               ruby-activesupport,
-               ruby-rest-client,
                rake
-Standards-Version: 3.9.8
+Standards-Version: 3.9.7
 Vcs-Git: https://anonscm.debian.org/git/pkg-ruby-extras/ruby-oauth.git
 Vcs-Browser: https://anonscm.debian.org/cgit/pkg-ruby-extras/ruby-oauth.git
 Homepage: https://github.com/oauth-xx/oauth-ruby
diff --git a/debian/copyright b/debian/copyright
index 950a726..9384acf 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,7 +1,7 @@
 Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 Upstream-Name: OAuth
 Upstream-Contact: Blaine Cook, Larry Halff, Pelle Braendgaard
-Source: https://github.com/oauth-xx/oauth-ruby
+Source: http://rubygems.org/gems/oauth
 
 Files: *
 Copyright: Copyright (c) 2007 Blaine Cook, Larry Halff, Pelle Braendgaard
diff --git a/debian/patches/add_missing_rsa.patch b/debian/patches/add_missing_rsa.patch
deleted file mode 100644
index 0285520..0000000
--- a/debian/patches/add_missing_rsa.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-Description: Add missing RSA files
-Author: HIGUCHI Daisuke (VDR dai) <dai at debian.org>
-Last-Update: 2016-05-22
-
-Index: ruby-oauth/test/keys/rsa.cert
-===================================================================
---- /dev/null
-+++ ruby-oauth/test/keys/rsa.cert
-@@ -0,0 +1,11 @@
-+-----BEGIN CERTIFICATE-----
-+MIIBpjCCAQ+gAwIBAgIBATANBgkqhkiG9w0BAQUFADAZMRcwFQYDVQQDDA5UZXN0
-+IFByaW5jaXBhbDAeFw03MDAxMDEwODAwMDBaFw0zODEyMzEwODAwMDBaMBkxFzAV
-+BgNVBAMMDlRlc3QgUHJpbmNpcGFsMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
-+gQC0YjCwIfYoprq/FQO6lb3asXrxLlJFuCvtinTF5p0GxvQGu5O3gYytUvtC2JlY
-+zypSRjVxwxrsuRcP3e641SdASwfrmzyvIgP08N4S0IFzEURkV1wp/IpH7kH41Etb
-+mUmrXSwfNZsnQRE5SYSOhh+LcK2wyQkdgcMv11l4KoBkcwIDAQABMA0GCSqGSIb3
-+DQEBBQUAA4GBAGZLPEuJ5SiJ2ryq+CmEGOXfvlTtEL2nuGtr9PewxkgnOjZpUy+d
-+4TvuXJbNQc8f4AMWL/tO9w0Fk80rWKp9ea8/df4qMq5qlFWlx6yOLQxumNOmECKb
-+WpkUQDIDJEoFUzKMVuJf4KO/FJ345+BNLGgbJ6WujreoM1X/gYfdnJ/J
-+-----END CERTIFICATE-----
-Index: ruby-oauth/test/keys/rsa.pem
-===================================================================
---- /dev/null
-+++ ruby-oauth/test/keys/rsa.pem
-@@ -0,0 +1,16 @@
-+-----BEGIN PRIVATE KEY-----
-+MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALRiMLAh9iimur8V
-+A7qVvdqxevEuUkW4K+2KdMXmnQbG9Aa7k7eBjK1S+0LYmVjPKlJGNXHDGuy5Fw/d
-+7rjVJ0BLB+ubPK8iA/Tw3hLQgXMRRGRXXCn8ikfuQfjUS1uZSatdLB81mydBETlJ
-+hI6GH4twrbDJCR2Bwy/XWXgqgGRzAgMBAAECgYBYWVtleUzavkbrPjy0T5FMou8H
-+X9u2AC2ry8vD/l7cqedtwMPp9k7TubgNFo+NGvKsl2ynyprOZR1xjQ7WgrgVB+mm
-+uScOM/5HVceFuGRDhYTCObE+y1kxRloNYXnx3ei1zbeYLPCHdhxRYW7T0qcynNmw
-+rn05/KO2RLjgQNalsQJBANeA3Q4Nugqy4QBUCEC09SqylT2K9FrrItqL2QKc9v0Z
-+zO2uwllCbg0dwpVuYPYXYvikNHHg+aCWF+VXsb9rpPsCQQDWR9TT4ORdzoj+Nccn
-+qkMsDmzt0EfNaAOwHOmVJ2RVBspPcxt5iN4HI7HNeG6U5YsFBb+/GZbgfBT3kpNG
-+WPTpAkBI+gFhjfJvRw38n3g/+UeAkwMI2TJQS4n8+hid0uus3/zOjDySH3XHCUno
-+cn1xOJAyZODBo47E+67R4jV1/gzbAkEAklJaspRPXP877NssM5nAZMU0/O/NGCZ+
-+3jPgDUno6WbJn5cqm8MqWhW1xGkImgRk+fkDBquiq4gPiT898jusgQJAd5Zrr6Q8
-+AO/0isr/3aa6O6NLQxISLKcPDk2NOccAfS/xOtfOz4sJYM3+Bs4Io9+dZGSDCA54
-+Lw03eHTNQghS0A==
-+-----END PRIVATE KEY-----
diff --git a/debian/patches/series b/debian/patches/series
deleted file mode 100644
index 8699276..0000000
--- a/debian/patches/series
+++ /dev/null
@@ -1 +0,0 @@
-add_missing_rsa.patch
diff --git a/debian/ruby-oauth.examples b/debian/ruby-oauth.examples
new file mode 100644
index 0000000..466522f
--- /dev/null
+++ b/debian/ruby-oauth.examples
@@ -0,0 +1 @@
+examples/*.rb
diff --git a/debian/ruby-tests.rb b/debian/ruby-tests.rb
index c64ad24..eac5ce6 100644
--- a/debian/ruby-tests.rb
+++ b/debian/ruby-tests.rb
@@ -1 +1,13 @@
-Dir['test/**/*.rb'].each { |f| require f }
+# FIXME
+# there's a spec/ or a test/ directory in the upstream source, but
+# no test suite was defined in the Gem specification. It would be
+# a good idea to define it here so the package gets tested at build time.
+# Examples:
+# $: << 'lib' << '.'
+# Dir['{spec,test}/**/*.rb'].each { |f| require f }
+#
+# require 'test/ts_foo.rb'
+#
+# require 'rbconfig'
+# ruby = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'])
+# exec("#{ruby} -I. test/runtests.rb")
diff --git a/examples/yql.rb b/examples/yql.rb
new file mode 100755
index 0000000..41bb1f2
--- /dev/null
+++ b/examples/yql.rb
@@ -0,0 +1,44 @@
+#!/usr/bin/env ruby -rubygems
+
+# Sample queries:
+#  ./yql.rb --consumer-key <key> --consumer-secret <secret> "show tables"
+#  ./yql.rb --consumer-key <key> --consumer-secret <secret> "select * from flickr.photos.search where text='Cat' limit 10"
+
+require 'oauth'
+require 'optparse'
+require 'json'
+require 'pp'
+
+options = {}
+
+option_parser = OptionParser.new do |opts|
+  opts.banner = "Usage: #{$0} [options] <query>"
+
+  opts.on("--consumer-key KEY", "Specifies the consumer key to use.") do |v|
+    options[:consumer_key] = v
+  end
+
+  opts.on("--consumer-secret SECRET", "Specifies the consumer secret to use.") do |v|
+    options[:consumer_secret] = v
+  end
+end
+
+option_parser.parse!
+query = ARGV.pop
+query = STDIN.read if query == "-"
+
+if options[:consumer_key].nil? || options[:consumer_secret].nil? || query.nil?
+  puts option_parser.help
+  exit 1
+end
+
+consumer = OAuth::Consumer.new \
+  options[:consumer_key],
+  options[:consumer_secret],
+  :site => "http://query.yahooapis.com"
+
+access_token = OAuth::AccessToken.new(consumer)
+
+response = access_token.request(:get, "/v1/yql?q=#{OAuth::Helper.escape(query)}&format=json")
+rsp = JSON.parse(response.body)
+pp rsp
diff --git a/lib/digest/hmac.rb b/lib/digest/hmac.rb
new file mode 100644
index 0000000..28711db
--- /dev/null
+++ b/lib/digest/hmac.rb
@@ -0,0 +1,104 @@
+# = digest/hmac.rb
+#
+# An implementation of HMAC keyed-hashing algorithm
+#
+# == Overview
+#
+# This library adds a method named hmac() to Digest classes, which
+# creates a Digest class for calculating HMAC digests.
+#
+# == Examples
+#
+#   require 'digest/hmac'
+#
+#   # one-liner example
+#   puts Digest::HMAC.hexdigest("data", "hash key", Digest::SHA1)
+#
+#   # rather longer one
+#   hmac = Digest::HMAC.new("foo", Digest::RMD160)
+#
+#   buf = ""
+#   while stream.read(16384, buf)
+#     hmac.update(buf)
+#   end
+#
+#   puts hmac.bubblebabble
+#
+# == License
+#
+# Copyright (c) 2006 Akinori MUSHA <knu at iDaemons.org>
+#
+# Documentation by Akinori MUSHA
+#
+# All rights reserved.  You can redistribute and/or modify it under
+# the same terms as Ruby.
+#
+#   $Id: hmac.rb 14881 2008-01-04 07:26:14Z akr $
+#
+
+require 'digest'
+
+unless defined?(Digest::HMAC)
+  module Digest
+    class HMAC < Digest::Class
+      def initialize(key, digester)
+        @md = digester.new
+
+        block_len = @md.block_length
+
+        if key.bytesize > block_len
+          key = @md.digest(key)
+        end
+
+        ipad = Array.new(block_len).fill(0x36)
+        opad = Array.new(block_len).fill(0x5c)
+
+        key.bytes.each_with_index { |c, i|
+          ipad[i] ^= c
+          opad[i] ^= c
+        }
+
+        @key = key.freeze
+        @ipad = ipad.inject('') { |s, c| s << c.chr }.freeze
+        @opad = opad.inject('') { |s, c| s << c.chr }.freeze
+        @md.update(@ipad)
+      end
+
+      def initialize_copy(other)
+        @md = other.instance_eval { @md.clone }
+      end
+
+      def update(text)
+        @md.update(text)
+        self
+      end
+      alias << update
+
+      def reset
+        @md.reset
+        @md.update(@ipad)
+        self
+      end
+
+      def finish
+        d = @md.digest!
+        @md.update(@opad)
+        @md.update(d)
+        @md.digest!
+      end
+      private :finish
+
+      def digest_length
+        @md.digest_length
+      end
+
+      def block_length
+        @md.block_length
+      end
+
+      def inspect
+        sprintf('#<%s: key=%s, digest=%s>', self.class.name, @key.inspect, @md.inspect.sub(/^\#<(.*)>$/) { $1 });
+      end
+    end
+  end
+end
diff --git a/lib/oauth.rb b/lib/oauth.rb
index 2a6cfaf..89231f7 100644
--- a/lib/oauth.rb
+++ b/lib/oauth.rb
@@ -1,6 +1,8 @@
 $LOAD_PATH << File.dirname(__FILE__) unless $LOAD_PATH.include?(File.dirname(__FILE__))
 
-require 'oauth/version'
+module OAuth
+  VERSION = "0.4.7"
+end
 
 require 'oauth/oauth'
 require 'oauth/core_ext'
diff --git a/lib/oauth/cli.rb b/lib/oauth/cli.rb
index fb04cde..c547f72 100644
--- a/lib/oauth/cli.rb
+++ b/lib/oauth/cli.rb
@@ -57,7 +57,7 @@ module OAuth
             oauth_verifier = nil
 
             # get a request token
-            request_token = consumer.get_request_token({ :oauth_callback => options[:oauth_callback] }, options[:scope] ? { "scope" => options[:scope] } : {})
+            request_token = consumer.get_request_token({ :oauth_callback => options[:oauth_callback] }, { "scope" => options[:scope] })
 
             if request_token.callback_confirmed?
               stdout.puts "Server appears to support OAuth 1.0a; enabling support."
@@ -107,7 +107,7 @@ module OAuth
           uri.query = [uri.query, *params].reject { |x| x.nil? } * "&"
           p uri.to_s
 
-          response = access_token.request(options[:method].to_s.downcase.to_sym, uri.to_s)
+          response = access_token.request(options[:method].downcase.to_sym, uri.to_s)
           puts "#{response.code} #{response.message}"
           puts response.body
         when "sign"
@@ -268,7 +268,7 @@ module OAuth
           options[:uri] = v
         end
 
-        opts.on("--version [VERSION]", "Specifies the OAuth version to use.") do |v|
+        opts.on(:OPTIONAL, "--version VERSION", "Specifies the OAuth version to use.") do |v|
           if v
             options[:oauth_version] = v
           else
diff --git a/lib/oauth/client/helper.rb b/lib/oauth/client/helper.rb
index 6c8b19b..97241d3 100644
--- a/lib/oauth/client/helper.rb
+++ b/lib/oauth/client/helper.rb
@@ -56,10 +56,6 @@ module OAuth::Client
                                                          :parameters => oauth_parameters}.merge(extra_options) )
     end
 
-    def token_request?
-      @options[:token_request].eql?(true)
-    end
-
     def hash_body
       @options[:body_hash] = OAuth::Signature.body_hash(@request, :parameters => oauth_parameters)
     end
diff --git a/lib/oauth/client/net_http.rb b/lib/oauth/client/net_http.rb
index 6a47690..998320e 100644
--- a/lib/oauth/client/net_http.rb
+++ b/lib/oauth/client/net_http.rb
@@ -21,8 +21,7 @@ class Net::HTTPGenericRequest
   # This method also modifies the <tt>User-Agent</tt> header to add the OAuth gem version.
   #
   # See Also: {OAuth core spec version 1.0, section 5.4.1}[http://oauth.net/core/1.0#rfc.section.5.4.1],
-  #           {OAuth Request Body Hash 1.0 Draft 4}[http://oauth.googlecode.com/svn/spec/ext/body_hash/1.0/drafts/4/spec.html,
-  #                                                 http://oauth.googlecode.com/svn/spec/ext/body_hash/1.0/oauth-bodyhash.html#when_to_include]
+  #           {OAuth Request Body Hash 1.0 Draft 4}[http://oauth.googlecode.com/svn/spec/ext/body_hash/1.0/drafts/4/spec.html]
   def oauth!(http, consumer = nil, token = nil, options = {})
     helper_options = oauth_helper_options(http, consumer, token, options)
     @oauth_helper = OAuth::Client::Helper.new(self, helper_options)
@@ -43,14 +42,13 @@ class Net::HTTPGenericRequest
   # * options - Request-specific options (e.g. +request_uri+, +consumer+, +token+, +scheme+,
   #   +signature_method+, +nonce+, +timestamp+)
   #
-  # See Also: {OAuth core spec version 1.0, section 5.4.1}[http://oauth.net/core/1.0#rfc.section.5.4.1],
-  #           {OAuth Request Body Hash 1.0 Draft 4}[http://oauth.googlecode.com/svn/spec/ext/body_hash/1.0/drafts/4/spec.html,
-  #                                                 http://oauth.googlecode.com/svn/spec/ext/body_hash/1.0/oauth-bodyhash.html#when_to_include]
+  # See Also: {OAuth core spec version 1.0, section 9.1.1}[http://oauth.net/core/1.0#rfc.section.9.1.1],
+  #           {OAuth Request Body Hash 1.0 Draft 4}[http://oauth.googlecode.com/svn/spec/ext/body_hash/1.0/drafts/4/spec.html]
   def signature_base_string(http, consumer = nil, token = nil, options = {})
     helper_options = oauth_helper_options(http, consumer, token, options)
-    @oauth_helper = OAuth::Client::Helper.new(self, helper_options)
-    @oauth_helper.hash_body if oauth_body_hash_required?
-    @oauth_helper.signature_base_string
+    oauth_helper = OAuth::Client::Helper.new(self, helper_options)
+    oauth_helper.hash_body if oauth_body_hash_required?
+    oauth_helper.signature_base_string
   end
 
 private
@@ -86,7 +84,7 @@ private
   end
 
   def oauth_body_hash_required?
-    !@oauth_helper.token_request? && request_body_permitted? && !content_type.to_s.downcase.start_with?("application/x-www-form-urlencoded")
+    request_body_permitted? && !content_type.to_s.downcase.start_with?("application/x-www-form-urlencoded")
   end
 
   def set_oauth_header
diff --git a/lib/oauth/consumer.rb b/lib/oauth/consumer.rb
index b9860a8..d4dd012 100644
--- a/lib/oauth/consumer.rb
+++ b/lib/oauth/consumer.rb
@@ -8,9 +8,9 @@ require 'cgi'
 module OAuth
   class Consumer
     # determine the certificate authority path to verify SSL certs
-    CA_FILES = %W(#{ENV['SSL_CERT_FILE']} /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt /usr/share/curl/curl-ca-bundle.crt)
+    CA_FILES = %w(/etc/ssl/certs/ca-certificates.crt /usr/share/curl/curl-ca-bundle.crt)
     CA_FILES.each do |ca_file|
-      if File.exist?(ca_file)
+      if File.exists?(ca_file)
         CA_FILE = ca_file
         break
       end
@@ -191,7 +191,6 @@ module OAuth
 
     # Creates a request and parses the result as url_encoded. This is used internally for the RequestToken and AccessToken requests.
     def token_request(http_method, path, token = nil, request_options = {}, *arguments)
-      request_options[:token_request] ||= true
       response = request(http_method, path, token, request_options, *arguments)
       case response.code.to_i
 
@@ -235,8 +234,8 @@ module OAuth
     end
 
     def request_endpoint
-      return nil if @options[:request_endpoint].nil?
-      @options[:request_endpoint].to_s
+  return nil if @options[:request_endpoint].nil?
+  @options[:request_endpoint].to_s
     end
 
     def scheme
@@ -329,7 +328,7 @@ module OAuth
     def create_http_request(http_method, path, *arguments)
       http_method = http_method.to_sym
 
-      if [:post, :put, :patch].include?(http_method)
+      if [:post, :put].include?(http_method)
         data = arguments.shift
       end
 
@@ -346,9 +345,6 @@ module OAuth
       when :put
         request = Net::HTTP::Put.new(path,headers)
         request["Content-Length"] = '0' # Default to 0
-      when :patch
-        request = Net::HTTP::Patch.new(path,headers)
-        request["Content-Length"] = '0' # Default to 0
       when :get
         request = Net::HTTP::Get.new(path,headers)
       when :delete
diff --git a/lib/oauth/helper.rb b/lib/oauth/helper.rb
index 1208d08..2abec6a 100644
--- a/lib/oauth/helper.rb
+++ b/lib/oauth/helper.rb
@@ -9,9 +9,9 @@ module OAuth
     #
     # See Also: {OAuth core spec version 1.0, section 5.1}[http://oauth.net/core/1.0#rfc.section.5.1]
     def escape(value)
-      URI::escape(value.to_s.to_str, OAuth::RESERVED_CHARACTERS)
+      URI::escape(value.to_s, OAuth::RESERVED_CHARACTERS)
     rescue ArgumentError
-      URI::escape(value.to_s.to_str.force_encoding(Encoding::UTF_8), OAuth::RESERVED_CHARACTERS)
+      URI::escape(value.to_s.force_encoding(Encoding::UTF_8), OAuth::RESERVED_CHARACTERS)
     end
 
     # Generate a random key of up to +size+ bytes. The value returned is Base64 encoded with non-word
@@ -49,7 +49,7 @@ module OAuth
         end
       end * "&"
     end
-
+    
     #Returns a string representation of the Hash like in URL query string
     # build_nested_query({:level_1 => {:level_2 => ['value_1','value_2']}}, 'prefix'))
     #   #=> ["prefix%5Blevel_1%5D%5Blevel_2%5D%5B%5D=value_1", "prefix%5Blevel_1%5D%5Blevel_2%5D%5B%5D=value_2"]
diff --git a/lib/oauth/request_proxy/action_controller_request.rb b/lib/oauth/request_proxy/action_controller_request.rb
index dadfea4..39ecd5b 100644
--- a/lib/oauth/request_proxy/action_controller_request.rb
+++ b/lib/oauth/request_proxy/action_controller_request.rb
@@ -1,35 +1,11 @@
 require 'active_support'
-require "active_support/version"
 require 'action_controller'
+require 'action_controller/request'
 require 'uri'
 
-if
-  Gem::Version.new(ActiveSupport::VERSION::STRING) < Gem::Version.new("3")
-then # rails 2.x
-  require 'action_controller/request'
-  unless ActionController::Request::HTTP_METHODS.include?("patch")
-    ActionController::Request::HTTP_METHODS << "patch"
-    ActionController::Request::HTTP_METHOD_LOOKUP["PATCH"] = :patch
-    ActionController::Request::HTTP_METHOD_LOOKUP["patch"] = :patch
-  end
-
-elsif
-  Gem::Version.new(ActiveSupport::VERSION::STRING) < Gem::Version.new("4")
-then # rails 3.x
-  require 'action_dispatch/http/request'
-  unless ActionDispatch::Request::HTTP_METHODS.include?("patch")
-    ActionDispatch::Request::HTTP_METHODS << "patch"
-    ActionDispatch::Request::HTTP_METHOD_LOOKUP["PATCH"] = :patch
-    ActionDispatch::Request::HTTP_METHOD_LOOKUP["patch"] = :patch
-  end
-
-else # rails 4.x - already has patch
-  require 'action_dispatch/http/request'
-end
-
 module OAuth::RequestProxy
   class ActionControllerRequest < OAuth::RequestProxy::Base
-    proxies(defined?(ActionDispatch::AbstractRequest) ? ActionDispatch::AbstractRequest : ActionDispatch::Request)
+    proxies(defined?(ActionController::AbstractRequest) ? ActionController::AbstractRequest : ActionController::Request)
 
     def method
       request.method.to_s.upcase
@@ -67,7 +43,7 @@ module OAuth::RequestProxy
 
       params.
         join('&').split('&').
-        reject { |s| s.match(/\A\s*\z/) }.
+        reject(&:blank?).
         map { |p| p.split('=').map{|esc| CGI.unescape(esc)} }.
         reject { |kv| kv[0] == 'oauth_signature'}
     end
diff --git a/lib/oauth/request_proxy/base.rb b/lib/oauth/request_proxy/base.rb
index 4ffd848..039ef5e 100644
--- a/lib/oauth/request_proxy/base.rb
+++ b/lib/oauth/request_proxy/base.rb
@@ -143,10 +143,10 @@ module OAuth::RequestProxy
     end
 
     def query_string_blank?
-      if uri = request.env['REQUEST_URI']
+      if uri = request.request_uri
         uri.split('?', 2)[1].nil?
       else
-        request.query_string.match(/\A\s*\z/)
+        request.query_string.blank?
       end
     end
 
diff --git a/lib/oauth/request_proxy/net_http.rb b/lib/oauth/request_proxy/net_http.rb
index 59d0dbc..23c5c06 100644
--- a/lib/oauth/request_proxy/net_http.rb
+++ b/lib/oauth/request_proxy/net_http.rb
@@ -66,7 +66,7 @@ module OAuth::RequestProxy::Net
 
       def auth_header_params
         return nil unless request['Authorization'] && request['Authorization'][0,5] == 'OAuth'
-        request['Authorization']
+        auth_params = request['Authorization']
       end
     end
   end
diff --git a/lib/oauth/request_proxy/rest_client_request.rb b/lib/oauth/request_proxy/rest_client_request.rb
deleted file mode 100644
index b49e24a..0000000
--- a/lib/oauth/request_proxy/rest_client_request.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-require 'oauth/request_proxy/base'
-require 'rest-client'
-require 'uri'
-require 'cgi'
-
-module OAuth::RequestProxy::RestClient
-  class Request < OAuth::RequestProxy::Base
-    proxies RestClient::Request
-    
-      def method
-        request.method.to_s.upcase
-      end
-
-      def uri
-        request.url
-      end
-
-      def parameters
-        if options[:clobber_request]
-          options[:parameters] || {}
-        else
-          post_parameters.merge(query_params).merge(options[:parameters] || {})
-        end
-      end
-
-    protected
-
-      def query_params
-        query = URI.parse(request.url).query
-        query ? CGI.parse(query) : {}
-      end
-
-      def request_params
-      end
-      
-      def post_parameters
-        # Post params are only used if posting form data
-        if method == 'POST' || method == 'PUT'
-          OAuth::Helper.stringify_keys(query_string_to_hash(request.payload.to_s) || {})
-        else
-          {}
-        end
-      end
-      
-   private
-      
-      def query_string_to_hash(query)
-        keyvals = query.split('&').inject({}) do |result, q| 
-          k,v = q.split('=')
-          if !v.nil?
-             result.merge({k => v})
-          elsif !result.key?(k)
-            result.merge({k => true})
-          else
-            result
-          end
-        end
-        keyvals
-      end
-      
-  end
-end
\ No newline at end of file
diff --git a/lib/oauth/request_proxy/typhoeus_request.rb b/lib/oauth/request_proxy/typhoeus_request.rb
index ebcb354..d72a5e9 100644
--- a/lib/oauth/request_proxy/typhoeus_request.rb
+++ b/lib/oauth/request_proxy/typhoeus_request.rb
@@ -11,7 +11,7 @@ module OAuth::RequestProxy::Typhoeus
     # oauth_params = {:consumer => oauth_consumer, :token => access_token}
     # req = Typhoeus::Request.new(uri, options)
     # oauth_helper = OAuth::Client::Helper.new(req, oauth_params.merge(:request_uri => uri))
-    # req.options[:headers].merge!({"Authorization" => oauth_helper.header})
+    # req.headers.merge!({"Authorization" => oauth_helper.header})
     # hydra = Typhoeus::Hydra.new()
     # hydra.queue(req)
     # hydra.run
@@ -19,8 +19,7 @@ module OAuth::RequestProxy::Typhoeus
     proxies Typhoeus::Request
 
     def method
-      request_method = request.options[:method].to_s.upcase
-      request_method.empty? ? 'GET' : request_method
+      request.method.to_s.upcase
     end
 
     def uri
@@ -45,7 +44,7 @@ module OAuth::RequestProxy::Typhoeus
     def post_parameters
       # Post params are only used if posting form data
       if method == 'POST'
-        OAuth::Helper.stringify_keys(request.options[:params] || {})
+        OAuth::Helper.stringify_keys(request.params || {})
       else
         {}
       end
diff --git a/lib/oauth/signature/base.rb b/lib/oauth/signature/base.rb
index b8ab8fe..8d1f5cb 100644
--- a/lib/oauth/signature/base.rb
+++ b/lib/oauth/signature/base.rb
@@ -16,6 +16,21 @@ module OAuth::Signature
       OAuth::Signature.available_methods[@implements] = self
     end
 
+    def self.digest_class(digest_class = nil)
+      return @digest_class if digest_class.nil?
+      @digest_class = digest_class
+    end
+
+    def self.digest_klass(digest_klass = nil)
+      return @digest_klass if digest_klass.nil?
+      @digest_klass = digest_klass
+    end
+
+    def self.hash_class(hash_class = nil)
+      return @hash_class if hash_class.nil?
+      @hash_class = hash_class
+    end
+
     def initialize(request, options = {}, &block)
       raise TypeError unless request.kind_of?(OAuth::RequestProxy::Base)
       @request = request
@@ -51,7 +66,7 @@ module OAuth::Signature
     end
 
     def ==(cmp_signature)
-      signature == cmp_signature
+      Base64.decode64(signature) == Base64.decode64(cmp_signature)
     end
 
     def verify
@@ -63,10 +78,14 @@ module OAuth::Signature
     end
 
     def body_hash
-      raise_instantiation_error
+      if self.class.hash_class
+        Base64.encode64(self.class.hash_class.digest(request.body || '')).chomp.gsub(/\n/,'')
+      else
+        nil # no body hash algorithm defined, so don't generate one
+      end
     end
 
-    private
+  private
 
     def token
       request.token
@@ -85,12 +104,7 @@ module OAuth::Signature
     end
 
     def digest
-      raise_instantiation_error
+      self.class.digest_class.digest(signature_base_string)
     end
-
-    def raise_instantiation_error
-      raise NotImplementedError, "Cannot instantiate #{self.class.name} class directly."
-    end
-
   end
 end
diff --git a/lib/oauth/signature/hmac/base.rb b/lib/oauth/signature/hmac/base.rb
new file mode 100644
index 0000000..18eb1f2
--- /dev/null
+++ b/lib/oauth/signature/hmac/base.rb
@@ -0,0 +1,15 @@
+# -*- encoding: utf-8 -*-
+
+require 'oauth/signature/base'
+require 'digest/hmac'
+
+module OAuth::Signature::HMAC
+  class Base < OAuth::Signature::Base
+
+  private
+    def digest
+      self.class.digest_class Object.module_eval("::Digest::#{self.class.digest_klass}")
+      Digest::HMAC.digest(signature_base_string, secret, self.class.digest_class)
+    end
+  end
+end
diff --git a/lib/oauth/signature/hmac/md5.rb b/lib/oauth/signature/hmac/md5.rb
new file mode 100644
index 0000000..15d6db4
--- /dev/null
+++ b/lib/oauth/signature/hmac/md5.rb
@@ -0,0 +1,8 @@
+require 'oauth/signature/hmac/base'
+
+module OAuth::Signature::HMAC
+  class MD5 < Base
+    implements 'hmac-md5'
+    digest_class 'MD5'
+  end
+end
diff --git a/lib/oauth/signature/hmac/rmd160.rb b/lib/oauth/signature/hmac/rmd160.rb
new file mode 100644
index 0000000..b8dc3c3
--- /dev/null
+++ b/lib/oauth/signature/hmac/rmd160.rb
@@ -0,0 +1,8 @@
+require 'oauth/signature/hmac/base'
+
+module OAuth::Signature::HMAC
+  class RMD160 < Base
+    implements 'hmac-rmd160'
+    digest_klass 'RMD160'
+  end
+end
diff --git a/lib/oauth/signature/hmac/sha1.rb b/lib/oauth/signature/hmac/sha1.rb
index ccddf41..dd0b2af 100644
--- a/lib/oauth/signature/hmac/sha1.rb
+++ b/lib/oauth/signature/hmac/sha1.rb
@@ -1,17 +1,9 @@
-require 'oauth/signature/base'
+require 'oauth/signature/hmac/base'
 
 module OAuth::Signature::HMAC
-  class SHA1 < OAuth::Signature::Base
+  class SHA1 < Base
     implements 'hmac-sha1'
-
-    def body_hash
-      Base64.encode64(OpenSSL::Digest::SHA1.digest(request.body || '')).chomp.gsub(/\n/,'')
-    end
-
-    private
-
-    def digest
-      OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha1'), secret, signature_base_string)
-    end
+    digest_klass 'SHA1'
+    hash_class ::Digest::SHA1
   end
 end
diff --git a/lib/oauth/signature/hmac/sha2.rb b/lib/oauth/signature/hmac/sha2.rb
new file mode 100644
index 0000000..4954136
--- /dev/null
+++ b/lib/oauth/signature/hmac/sha2.rb
@@ -0,0 +1,8 @@
+require 'oauth/signature/hmac/base'
+
+module OAuth::Signature::HMAC
+  class SHA2 < Base
+    implements 'hmac-sha2'
+    digest_klass 'SHA2'
+  end
+end
diff --git a/lib/oauth/signature/md5.rb b/lib/oauth/signature/md5.rb
new file mode 100644
index 0000000..620f6f7
--- /dev/null
+++ b/lib/oauth/signature/md5.rb
@@ -0,0 +1,13 @@
+require 'oauth/signature/base'
+require 'digest/md5'
+
+module OAuth::Signature
+  class MD5 < Base
+    implements 'md5'
+    digest_class Digest::MD5
+
+    def signature_base_string
+      secret + super
+    end
+  end
+end
diff --git a/lib/oauth/signature/plaintext.rb b/lib/oauth/signature/plaintext.rb
index 43c1028..71c445c 100644
--- a/lib/oauth/signature/plaintext.rb
+++ b/lib/oauth/signature/plaintext.rb
@@ -16,12 +16,6 @@ module OAuth::Signature
       secret
     end
 
-    def body_hash
-      nil
-    end
-
-    private
-
     def secret
       super
     end
diff --git a/lib/oauth/signature/rsa/sha1.rb b/lib/oauth/signature/rsa/sha1.rb
index 276e2e4..018852a 100644
--- a/lib/oauth/signature/rsa/sha1.rb
+++ b/lib/oauth/signature/rsa/sha1.rb
@@ -1,8 +1,10 @@
 require 'oauth/signature/base'
+require 'openssl'
 
 module OAuth::Signature::RSA
   class SHA1 < OAuth::Signature::Base
     implements 'rsa-sha1'
+    hash_class ::Digest::SHA1
 
     def ==(cmp_signature)
       public_key.verify(OpenSSL::Digest::SHA1.new, Base64.decode64(cmp_signature.is_a?(Array) ? cmp_signature.first : cmp_signature), signature_base_string)
@@ -18,11 +20,7 @@ module OAuth::Signature::RSA
       end
     end
 
-    def body_hash
-      Base64.encode64(OpenSSL::Digest::SHA1.digest(request.body || '')).chomp.gsub(/\n/,'')
-    end
-
-    private
+  private
 
     def decode_public_key
       case consumer_secret
@@ -37,8 +35,6 @@ module OAuth::Signature::RSA
       private_key = OpenSSL::PKey::RSA.new(
         if options[:private_key_file]
           IO.read(options[:private_key_file])
-        elsif options[:private_key]
-          options[:private_key]
         else
           consumer_secret
         end
diff --git a/lib/oauth/signature/sha1.rb b/lib/oauth/signature/sha1.rb
new file mode 100644
index 0000000..40493e2
--- /dev/null
+++ b/lib/oauth/signature/sha1.rb
@@ -0,0 +1,13 @@
+require 'oauth/signature/base'
+require 'digest/sha1'
+
+module OAuth::Signature
+  class SHA1 < Base
+    implements 'sha1'
+    digest_class Digest::SHA1
+
+    def signature_base_string
+      secret + super
+    end
+  end
+end
diff --git a/lib/oauth/tokens/access_token.rb b/lib/oauth/tokens/access_token.rb
index 35a2ef7..8d3f01b 100644
--- a/lib/oauth/tokens/access_token.rb
+++ b/lib/oauth/tokens/access_token.rb
@@ -59,18 +59,6 @@ module OAuth
       request(:put, path, body, headers)
     end
 
-    # Make a regular PATCH request using AccessToken
-    #
-    #   @response = @token.patch('/people/123')
-    #   @response = @token.patch('/people/123', { :name => 'Bob', :email => 'bob at mailinator.com' })
-    #   @response = @token.patch('/people/123', { :name => 'Bob', :email => 'bob at mailinator.com' }, { 'Accept' => 'application/xml' })
-    #   @response = @token.patch('/people/123', nil, { 'Accept' => 'application/xml' })
-    #   @response = @token.patch('/people/123', @person.to_xml, { 'Accept' => 'application/xml', 'Content-Type' => 'application/xml' })
-    #
-    def patch(path, body = '', headers = {})
-      request(:patch, path, body, headers)
-    end
-
     # Make a regular DELETE request using AccessToken
     #
     #   @response = @token.delete('/people/123')
diff --git a/lib/oauth/tokens/request_token.rb b/lib/oauth/tokens/request_token.rb
index 39187cd..f2ee654 100644
--- a/lib/oauth/tokens/request_token.rb
+++ b/lib/oauth/tokens/request_token.rb
@@ -5,8 +5,6 @@ module OAuth
 
     # Generate an authorization URL for user authorization
     def authorize_url(params = nil)
-      return nil if self.token.nil?
-
       params = (params || {}).merge(:oauth_token => self.token)
       build_authorize_url(consumer.authorize_url, params)
     end
@@ -26,11 +24,8 @@ module OAuth
     # construct an authorization url
     def build_authorize_url(base_url, params)
       uri = URI.parse(base_url.to_s)
-      queries = {}
-      queries = Hash[URI.decode_www_form(uri.query)] if uri.query
       # TODO doesn't handle array values correctly
-      queries.merge!(params) if params
-      uri.query = URI.encode_www_form(queries) if !queries.empty?
+      uri.query = params.map { |k,v| [k, CGI.escape(v)] * "=" } * "&"
       uri.to_s
     end
   end
diff --git a/lib/oauth/tokens/token.rb b/lib/oauth/tokens/token.rb
index 0757396..ff9b5dd 100644
--- a/lib/oauth/tokens/token.rb
+++ b/lib/oauth/tokens/token.rb
@@ -11,7 +11,7 @@ module OAuth
     end
 
     def to_query
-      "oauth_token=#{escape(token)}&oauth_token_secret=#{escape(secret)}"
+      "oauth_token=#{escape(token)}&oauth_secret=#{escape(secret)}"
     end
   end
 end
diff --git a/lib/oauth/version.rb b/lib/oauth/version.rb
deleted file mode 100644
index 85c2b76..0000000
--- a/lib/oauth/version.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-module OAuth
-  VERSION = "0.5.1"
-end
diff --git a/metadata.yml b/metadata.yml
new file mode 100644
index 0000000..604b470
--- /dev/null
+++ b/metadata.yml
@@ -0,0 +1,270 @@
+--- !ruby/object:Gem::Specification
+name: oauth
+version: !ruby/object:Gem::Version
+  version: 0.4.7
+  prerelease: 
+platform: ruby
+authors:
+- Pelle Braendgaard
+- Blaine Cook
+- Larry Halff
+- Jesse Clark
+- Jon Crosby
+- Seth Fitzsimmons
+- Matt Sanford
+- Aaron Quint
+autorequire: 
+bindir: bin
+cert_chain: []
+date: 2012-09-04 00:00:00.000000000 Z
+dependencies:
+- !ruby/object:Gem::Dependency
+  name: rake
+  requirement: !ruby/object:Gem::Requirement
+    none: false
+    requirements:
+    - - ! '>='
+      - !ruby/object:Gem::Version
+        version: '0'
+  type: :development
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    none: false
+    requirements:
+    - - ! '>='
+      - !ruby/object:Gem::Version
+        version: '0'
+- !ruby/object:Gem::Dependency
+  name: jeweler
+  requirement: !ruby/object:Gem::Requirement
+    none: false
+    requirements:
+    - - ! '>='
+      - !ruby/object:Gem::Version
+        version: '0'
+  type: :development
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    none: false
+    requirements:
+    - - ! '>='
+      - !ruby/object:Gem::Version
+        version: '0'
+- !ruby/object:Gem::Dependency
+  name: actionpack
+  requirement: !ruby/object:Gem::Requirement
+    none: false
+    requirements:
+    - - ! '>='
+      - !ruby/object:Gem::Version
+        version: 2.3.5
+  type: :development
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    none: false
+    requirements:
+    - - ! '>='
+      - !ruby/object:Gem::Version
+        version: 2.3.5
+- !ruby/object:Gem::Dependency
+  name: rack
+  requirement: !ruby/object:Gem::Requirement
+    none: false
+    requirements:
+    - - ! '>='
+      - !ruby/object:Gem::Version
+        version: 1.0.0
+  type: :development
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    none: false
+    requirements:
+    - - ! '>='
+      - !ruby/object:Gem::Version
+        version: 1.0.0
+- !ruby/object:Gem::Dependency
+  name: mocha
+  requirement: !ruby/object:Gem::Requirement
+    none: false
+    requirements:
+    - - ! '>='
+      - !ruby/object:Gem::Version
+        version: 0.9.8
+  type: :development
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    none: false
+    requirements:
+    - - ! '>='
+      - !ruby/object:Gem::Version
+        version: 0.9.8
+- !ruby/object:Gem::Dependency
+  name: typhoeus
+  requirement: !ruby/object:Gem::Requirement
+    none: false
+    requirements:
+    - - ! '>='
+      - !ruby/object:Gem::Version
+        version: 0.1.13
+  type: :development
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    none: false
+    requirements:
+    - - ! '>='
+      - !ruby/object:Gem::Version
+        version: 0.1.13
+- !ruby/object:Gem::Dependency
+  name: em-http-request
+  requirement: !ruby/object:Gem::Requirement
+    none: false
+    requirements:
+    - - ! '>='
+      - !ruby/object:Gem::Version
+        version: 0.2.10
+  type: :development
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    none: false
+    requirements:
+    - - ! '>='
+      - !ruby/object:Gem::Version
+        version: 0.2.10
+- !ruby/object:Gem::Dependency
+  name: curb
+  requirement: !ruby/object:Gem::Requirement
+    none: false
+    requirements:
+    - - ! '>='
+      - !ruby/object:Gem::Version
+        version: 0.6.6.0
+  type: :development
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    none: false
+    requirements:
+    - - ! '>='
+      - !ruby/object:Gem::Version
+        version: 0.6.6.0
+description: OAuth Core Ruby implementation
+email: oauth-ruby at googlegroups.com
+executables:
+- oauth
+extensions: []
+extra_rdoc_files:
+- LICENSE
+- README.rdoc
+- TODO
+files:
+- .gemtest
+- Gemfile
+- Gemfile.lock
+- HISTORY
+- LICENSE
+- README.rdoc
+- Rakefile
+- TODO
+- bin/oauth
+- examples/yql.rb
+- lib/digest/hmac.rb
+- lib/oauth.rb
+- lib/oauth/cli.rb
+- lib/oauth/client.rb
+- lib/oauth/client/action_controller_request.rb
+- lib/oauth/client/em_http.rb
+- lib/oauth/client/helper.rb
+- lib/oauth/client/net_http.rb
+- lib/oauth/consumer.rb
+- lib/oauth/core_ext.rb
+- lib/oauth/errors.rb
+- lib/oauth/errors/error.rb
+- lib/oauth/errors/problem.rb
+- lib/oauth/errors/unauthorized.rb
+- lib/oauth/helper.rb
+- lib/oauth/oauth.rb
+- lib/oauth/oauth_test_helper.rb
+- lib/oauth/request_proxy.rb
+- lib/oauth/request_proxy/action_controller_request.rb
+- lib/oauth/request_proxy/base.rb
+- lib/oauth/request_proxy/curb_request.rb
+- lib/oauth/request_proxy/em_http_request.rb
+- lib/oauth/request_proxy/jabber_request.rb
+- lib/oauth/request_proxy/mock_request.rb
+- lib/oauth/request_proxy/net_http.rb
+- lib/oauth/request_proxy/rack_request.rb
+- lib/oauth/request_proxy/typhoeus_request.rb
+- lib/oauth/server.rb
+- lib/oauth/signature.rb
+- lib/oauth/signature/base.rb
+- lib/oauth/signature/hmac/base.rb
+- lib/oauth/signature/hmac/md5.rb
+- lib/oauth/signature/hmac/rmd160.rb
+- lib/oauth/signature/hmac/sha1.rb
+- lib/oauth/signature/hmac/sha2.rb
+- lib/oauth/signature/md5.rb
+- lib/oauth/signature/plaintext.rb
+- lib/oauth/signature/rsa/sha1.rb
+- lib/oauth/signature/sha1.rb
+- lib/oauth/token.rb
+- lib/oauth/tokens/access_token.rb
+- lib/oauth/tokens/consumer_token.rb
+- lib/oauth/tokens/request_token.rb
+- lib/oauth/tokens/server_token.rb
+- lib/oauth/tokens/token.rb
+- oauth.gemspec
+- tasks/deployment.rake
+- tasks/environment.rake
+- tasks/website.rake
+- test/cases/oauth_case.rb
+- test/cases/spec/1_0-final/test_construct_request_url.rb
+- test/cases/spec/1_0-final/test_normalize_request_parameters.rb
+- test/cases/spec/1_0-final/test_parameter_encodings.rb
+- test/cases/spec/1_0-final/test_signature_base_strings.rb
+- test/integration/consumer_test.rb
+- test/keys/rsa.cert
+- test/keys/rsa.pem
+- test/test_access_token.rb
+- test/test_action_controller_request_proxy.rb
+- test/test_consumer.rb
+- test/test_curb_request_proxy.rb
+- test/test_em_http_client.rb
+- test/test_em_http_request_proxy.rb
+- test/test_helper.rb
+- test/test_hmac_sha1.rb
+- test/test_net_http_client.rb
+- test/test_net_http_request_proxy.rb
+- test/test_oauth_helper.rb
+- test/test_rack_request_proxy.rb
+- test/test_request_token.rb
+- test/test_rsa_sha1.rb
+- test/test_server.rb
+- test/test_signature.rb
+- test/test_signature_base.rb
+- test/test_signature_plain_text.rb
+- test/test_token.rb
+- test/test_typhoeus_request_proxy.rb
+homepage: 
+licenses: []
+post_install_message: 
+rdoc_options: []
+require_paths:
+- lib
+required_ruby_version: !ruby/object:Gem::Requirement
+  none: false
+  requirements:
+  - - ! '>='
+    - !ruby/object:Gem::Version
+      version: '0'
+required_rubygems_version: !ruby/object:Gem::Requirement
+  none: false
+  requirements:
+  - - ! '>='
+    - !ruby/object:Gem::Version
+      version: '0'
+requirements: []
+rubyforge_project: oauth
+rubygems_version: 1.8.23
+signing_key: 
+specification_version: 3
+summary: OAuth Core Ruby implementation
+test_files: []
diff --git a/oauth.gemspec b/oauth.gemspec
index 0994b0f..e46ab4a 100644
--- a/oauth.gemspec
+++ b/oauth.gemspec
@@ -1,65 +1,148 @@
-#########################################################
-# This file has been automatically generated by gem2tgz #
-#########################################################
+# Generated by jeweler
+# DO NOT EDIT THIS FILE DIRECTLY
+# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
 # -*- encoding: utf-8 -*-
-# stub: oauth 0.5.1 ruby lib
 
 Gem::Specification.new do |s|
   s.name = "oauth"
-  s.version = "0.5.1"
+  s.version = "0.4.7"
 
   s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
-  s.require_paths = ["lib"]
   s.authors = ["Pelle Braendgaard", "Blaine Cook", "Larry Halff", "Jesse Clark", "Jon Crosby", "Seth Fitzsimmons", "Matt Sanford", "Aaron Quint"]
-  s.date = "2016-02-29"
-  s.email = "oauth-ruby at googlegroupspec.com"
+  s.date = "2012-09-04"
+  s.description = "OAuth Core Ruby implementation"
+  s.email = "oauth-ruby at googlegroups.com"
   s.executables = ["oauth"]
-  s.extra_rdoc_files = ["LICENSE", "README.rdoc", "TODO"]
-  s.files = ["LICENSE", "README.rdoc", "TODO", "bin/oauth", "lib/oauth.rb", "lib/oauth/cli.rb", "lib/oauth/client.rb", "lib/oauth/client/action_controller_request.rb", "lib/oauth/client/em_http.rb", "lib/oauth/client/helper.rb", "lib/oauth/client/net_http.rb", "lib/oauth/consumer.rb", "lib/oauth/core_ext.rb", "lib/oauth/errors.rb", "lib/oauth/errors/error.rb", "lib/oauth/errors/problem.rb", "lib/oauth/errors/unauthorized.rb", "lib/oauth/helper.rb", "lib/oauth/oauth.rb", "lib/oauth/oauth_ [...]
-  s.licenses = ["MIT"]
-  s.rubygems_version = "2.5.1"
+  s.extra_rdoc_files = [
+    "LICENSE",
+    "README.rdoc",
+    "TODO"
+  ]
+  s.files = [
+    ".gemtest",
+    "Gemfile",
+    "Gemfile.lock",
+    "HISTORY",
+    "LICENSE",
+    "README.rdoc",
+    "Rakefile",
+    "TODO",
+    "bin/oauth",
+    "examples/yql.rb",
+    "lib/digest/hmac.rb",
+    "lib/oauth.rb",
+    "lib/oauth/cli.rb",
+    "lib/oauth/client.rb",
+    "lib/oauth/client/action_controller_request.rb",
+    "lib/oauth/client/em_http.rb",
+    "lib/oauth/client/helper.rb",
+    "lib/oauth/client/net_http.rb",
+    "lib/oauth/consumer.rb",
+    "lib/oauth/core_ext.rb",
+    "lib/oauth/errors.rb",
+    "lib/oauth/errors/error.rb",
+    "lib/oauth/errors/problem.rb",
+    "lib/oauth/errors/unauthorized.rb",
+    "lib/oauth/helper.rb",
+    "lib/oauth/oauth.rb",
+    "lib/oauth/oauth_test_helper.rb",
+    "lib/oauth/request_proxy.rb",
+    "lib/oauth/request_proxy/action_controller_request.rb",
+    "lib/oauth/request_proxy/base.rb",
+    "lib/oauth/request_proxy/curb_request.rb",
+    "lib/oauth/request_proxy/em_http_request.rb",
+    "lib/oauth/request_proxy/jabber_request.rb",
+    "lib/oauth/request_proxy/mock_request.rb",
+    "lib/oauth/request_proxy/net_http.rb",
+    "lib/oauth/request_proxy/rack_request.rb",
+    "lib/oauth/request_proxy/typhoeus_request.rb",
+    "lib/oauth/server.rb",
+    "lib/oauth/signature.rb",
+    "lib/oauth/signature/base.rb",
+    "lib/oauth/signature/hmac/base.rb",
+    "lib/oauth/signature/hmac/md5.rb",
+    "lib/oauth/signature/hmac/rmd160.rb",
+    "lib/oauth/signature/hmac/sha1.rb",
+    "lib/oauth/signature/hmac/sha2.rb",
+    "lib/oauth/signature/md5.rb",
+    "lib/oauth/signature/plaintext.rb",
+    "lib/oauth/signature/rsa/sha1.rb",
+    "lib/oauth/signature/sha1.rb",
+    "lib/oauth/token.rb",
+    "lib/oauth/tokens/access_token.rb",
+    "lib/oauth/tokens/consumer_token.rb",
+    "lib/oauth/tokens/request_token.rb",
+    "lib/oauth/tokens/server_token.rb",
+    "lib/oauth/tokens/token.rb",
+    "oauth.gemspec",
+    "tasks/deployment.rake",
+    "tasks/environment.rake",
+    "tasks/website.rake",
+    "test/cases/oauth_case.rb",
+    "test/cases/spec/1_0-final/test_construct_request_url.rb",
+    "test/cases/spec/1_0-final/test_normalize_request_parameters.rb",
+    "test/cases/spec/1_0-final/test_parameter_encodings.rb",
+    "test/cases/spec/1_0-final/test_signature_base_strings.rb",
+    "test/integration/consumer_test.rb",
+    "test/keys/rsa.cert",
+    "test/keys/rsa.pem",
+    "test/test_access_token.rb",
+    "test/test_action_controller_request_proxy.rb",
+    "test/test_consumer.rb",
+    "test/test_curb_request_proxy.rb",
+    "test/test_em_http_client.rb",
+    "test/test_em_http_request_proxy.rb",
+    "test/test_helper.rb",
+    "test/test_hmac_sha1.rb",
+    "test/test_net_http_client.rb",
+    "test/test_net_http_request_proxy.rb",
+    "test/test_oauth_helper.rb",
+    "test/test_rack_request_proxy.rb",
+    "test/test_request_token.rb",
+    "test/test_rsa_sha1.rb",
+    "test/test_server.rb",
+    "test/test_signature.rb",
+    "test/test_signature_base.rb",
+    "test/test_signature_plain_text.rb",
+    "test/test_token.rb",
+    "test/test_typhoeus_request_proxy.rb"
+  ]
+  s.require_paths = ["lib"]
+  s.rubyforge_project = "oauth"
+  s.rubygems_version = "1.8.23"
   s.summary = "OAuth Core Ruby implementation"
-  s.test_files = ["test/cases/oauth_case.rb", "test/cases/spec/1_0-final/test_construct_request_url.rb", "test/cases/spec/1_0-final/test_normalize_request_parameters.rb", "test/cases/spec/1_0-final/test_parameter_encodings.rb", "test/cases/spec/1_0-final/test_signature_base_strings.rb", "test/integration/consumer_test.rb", "test/test_access_token.rb", "test/test_action_controller_request_proxy.rb", "test/test_consumer.rb", "test/test_curb_request_proxy.rb", "test/test_em_http_client.rb", [...]
 
   if s.respond_to? :specification_version then
-    s.specification_version = 4
+    s.specification_version = 3
 
     if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
-      s.add_development_dependency(%q<actionpack>, [">= 4.0.2"])
-      s.add_development_dependency(%q<byebug>, [">= 0"])
-      s.add_development_dependency(%q<curb>, [">= 0"])
-      s.add_development_dependency(%q<em-http-request>, ["= 0.2.11"])
-      s.add_development_dependency(%q<iconv>, [">= 0"])
-      s.add_development_dependency(%q<minitest>, [">= 0"])
-      s.add_development_dependency(%q<mocha>, [">= 0.9.12"])
-      s.add_development_dependency(%q<rack>, [">= 0"])
-      s.add_development_dependency(%q<rack-test>, [">= 0"])
       s.add_development_dependency(%q<rake>, [">= 0"])
+      s.add_development_dependency(%q<jeweler>, [">= 0"])
+      s.add_development_dependency(%q<actionpack>, [">= 2.3.5"])
+      s.add_development_dependency(%q<rack>, [">= 1.0.0"])
+      s.add_development_dependency(%q<mocha>, [">= 0.9.8"])
       s.add_development_dependency(%q<typhoeus>, [">= 0.1.13"])
+      s.add_development_dependency(%q<em-http-request>, [">= 0.2.10"])
+      s.add_development_dependency(%q<curb>, [">= 0.6.6.0"])
     else
-      s.add_dependency(%q<actionpack>, [">= 4.0.2"])
-      s.add_dependency(%q<byebug>, [">= 0"])
-      s.add_dependency(%q<curb>, [">= 0"])
-      s.add_dependency(%q<em-http-request>, ["= 0.2.11"])
-      s.add_dependency(%q<iconv>, [">= 0"])
-      s.add_dependency(%q<minitest>, [">= 0"])
-      s.add_dependency(%q<mocha>, [">= 0.9.12"])
-      s.add_dependency(%q<rack>, [">= 0"])
-      s.add_dependency(%q<rack-test>, [">= 0"])
       s.add_dependency(%q<rake>, [">= 0"])
+      s.add_dependency(%q<jeweler>, [">= 0"])
+      s.add_dependency(%q<actionpack>, [">= 2.3.5"])
+      s.add_dependency(%q<rack>, [">= 1.0.0"])
+      s.add_dependency(%q<mocha>, [">= 0.9.8"])
       s.add_dependency(%q<typhoeus>, [">= 0.1.13"])
+      s.add_dependency(%q<em-http-request>, [">= 0.2.10"])
+      s.add_dependency(%q<curb>, [">= 0.6.6.0"])
     end
   else
-    s.add_dependency(%q<actionpack>, [">= 4.0.2"])
-    s.add_dependency(%q<byebug>, [">= 0"])
-    s.add_dependency(%q<curb>, [">= 0"])
-    s.add_dependency(%q<em-http-request>, ["= 0.2.11"])
-    s.add_dependency(%q<iconv>, [">= 0"])
-    s.add_dependency(%q<minitest>, [">= 0"])
-    s.add_dependency(%q<mocha>, [">= 0.9.12"])
-    s.add_dependency(%q<rack>, [">= 0"])
-    s.add_dependency(%q<rack-test>, [">= 0"])
     s.add_dependency(%q<rake>, [">= 0"])
+    s.add_dependency(%q<jeweler>, [">= 0"])
+    s.add_dependency(%q<actionpack>, [">= 2.3.5"])
+    s.add_dependency(%q<rack>, [">= 1.0.0"])
+    s.add_dependency(%q<mocha>, [">= 0.9.8"])
     s.add_dependency(%q<typhoeus>, [">= 0.1.13"])
+    s.add_dependency(%q<em-http-request>, [">= 0.2.10"])
+    s.add_dependency(%q<curb>, [">= 0.6.6.0"])
   end
 end
+
diff --git a/tasks/deployment.rake b/tasks/deployment.rake
new file mode 100644
index 0000000..430dad3
--- /dev/null
+++ b/tasks/deployment.rake
@@ -0,0 +1,34 @@
+desc 'Release the website and new gem version'
+task :deploy => [:check_version, :website, :release] do
+  puts "Remember to create SVN tag:"
+  puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
+    "svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
+  puts "Suggested comment:"
+  puts "Tagging release #{CHANGES}"
+end
+
+desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
+task :local_deploy => [:website_generate, :install_gem]
+
+task :check_version do
+  unless ENV['VERSION']
+    puts 'Must pass a VERSION=x.y.z release version'
+    exit
+  end
+  unless ENV['VERSION'] == VERS
+    puts "Please update your version.rb to match the release version, currently #{VERS}"
+    exit
+  end
+end
+
+desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
+task :install_gem_no_doc => [:clean, :package] do
+  sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
+end
+
+namespace :manifest do
+  desc 'Recreate Manifest.txt to include ALL files'
+  task :refresh do
+    `rake check_manifest | patch -p0 > Manifest.txt`
+  end
+end
diff --git a/tasks/environment.rake b/tasks/environment.rake
new file mode 100644
index 0000000..691ed3b
--- /dev/null
+++ b/tasks/environment.rake
@@ -0,0 +1,7 @@
+task :ruby_env do
+  RUBY_APP = if RUBY_PLATFORM =~ /java/
+    "jruby"
+  else
+    "ruby"
+  end unless defined? RUBY_APP
+end
diff --git a/tasks/website.rake b/tasks/website.rake
new file mode 100644
index 0000000..93e03fa
--- /dev/null
+++ b/tasks/website.rake
@@ -0,0 +1,17 @@
+desc 'Generate website files'
+task :website_generate => :ruby_env do
+  (Dir['website/**/*.txt'] - Dir['website/version*.txt']).each do |txt|
+    sh %{ #{RUBY_APP} script/txt2html #{txt} > #{txt.gsub(/txt$/,'html')} }
+  end
+end
+
+desc 'Upload website files to rubyforge'
+task :website_upload do
+  host = "#{rubyforge_username}@rubyforge.org"
+  remote_dir = "/var/www/gforge-projects/#{PATH}/"
+  local_dir = 'website'
+  sh %{rsync -aCv #{local_dir}/ #{host}:#{remote_dir}}
+end
+
+desc 'Generate and upload website files'
+task :website => [:website_generate, :website_upload, :publish_docs]
diff --git a/test/cases/oauth_case.rb b/test/cases/oauth_case.rb
index e78cecb..8b37dcf 100644
--- a/test/cases/oauth_case.rb
+++ b/test/cases/oauth_case.rb
@@ -1,9 +1,9 @@
-require 'minitest/autorun'
+require 'test/unit'
 require 'oauth/signature'
 require 'oauth/request_proxy/mock_request'
 
 
-class OAuthCase < Minitest::Test
+class OAuthCase < Test::Unit::TestCase
   # avoid whining about a lack of tests
   def run(*args)
     return if @method_name.to_s == "default_test"
diff --git a/test/cases/spec/1_0-final/test_normalize_request_parameters.rb b/test/cases/spec/1_0-final/test_normalize_request_parameters.rb
index 91c9383..58b2d63 100644
--- a/test/cases/spec/1_0-final/test_normalize_request_parameters.rb
+++ b/test/cases/spec/1_0-final/test_normalize_request_parameters.rb
@@ -27,13 +27,13 @@ require File.expand_path('../../../oauth_case', __FILE__)
 class NormalizeRequestParametersTest < OAuthCase
 
   def test_parameters_for_signature
-    params={"a"=>1, "c"=>"hi there", "f"=>"a", "z"=>"t"}
+    params={'a'=>1, 'c'=>'hi there', 'f'=>'25', 'f'=>'50', 'f'=>'a', 'z'=>'p', 'z'=>'t'}
     assert_equal params,request(params).parameters_for_signature
   end
 
 
   def test_parameters_for_signature_removes_oauth_signature
-    params={"a"=>1, "c"=>"hi there", "f"=>"a", "z"=>"t"}
+    params={'a'=>1, 'c'=>'hi there', 'f'=>'25', 'f'=>'50', 'f'=>'a', 'z'=>'p', 'z'=>'t'}
     assert_equal params,request(params.merge({'oauth_signature'=>'blalbla'})).parameters_for_signature
   end
 
diff --git a/test/integration/consumer_test.rb b/test/integration/consumer_test.rb
index e0eb373..2a8be70 100644
--- a/test/integration/consumer_test.rb
+++ b/test/integration/consumer_test.rb
@@ -1,7 +1,7 @@
 require File.expand_path('../../test_helper', __FILE__)
 
 module Integration
-  class ConsumerTest < Minitest::Test
+  class ConsumerTest < Test::Unit::TestCase
     def setup
       @consumer=OAuth::Consumer.new(
           'consumer_key_86cad9', '5888bf0345e5d237',
@@ -39,7 +39,7 @@ module Integration
       token = OAuth::ConsumerToken.new(consumer, 'token_411a7f', '3196ffd991c8ebdb')
       token.sign!(request, {:nonce => @nonce, :timestamp => @timestamp})
 
-      refute_match( /oauth_signature_method="HMAC-SHA1"/, request['authorization'])
+      assert_no_match( /oauth_signature_method="HMAC-SHA1"/, request['authorization'])
       assert_match(    /oauth_signature_method="PLAINTEXT"/, request['authorization'])
     end
 
@@ -52,7 +52,7 @@ module Integration
       request = Net::HTTP::Get.new('/')
       signature_base_string = consumer.signature_base_string(request)
 
-      refute_match( /HMAC-SHA1/, signature_base_string)
+      assert_no_match( /HMAC-SHA1/, signature_base_string)
       assert_equal( "#{consumer.secret}&", signature_base_string)
     end
 
@@ -162,23 +162,23 @@ module Integration
       assert !@consumer.authorize_url?, "Should not use fully qualified url"
 
       @request_token=@consumer.get_request_token
-      assert @request_token
+      assert_not_nil @request_token
       assert_equal "requestkey", at request_token.token
       assert_equal "requestsecret", at request_token.secret
       assert_equal "http://term.ie/oauth/example/authorize.php?oauth_token=requestkey", at request_token.authorize_url
 
       @access_token=@request_token.get_access_token
-      assert @access_token
+      assert_not_nil @access_token
       assert_equal "accesskey", at access_token.token
       assert_equal "accesssecret", at access_token.secret
 
       @response=@access_token.get("/oauth/example/echo_api.php?ok=hello&test=this")
-      assert @response
+      assert_not_nil @response
       assert_equal "200", at response.code
       assert_equal( "ok=hello&test=this", at response.body)
 
       @response=@access_token.post("/oauth/example/echo_api.php",{'ok'=>'hello','test'=>'this'})
-      assert @response
+      assert_not_nil @response
       assert_equal "200", at response.code
       assert_equal( "ok=hello&test=this", at response.body)
     end
@@ -203,23 +203,23 @@ module Integration
       assert @consumer.authorize_url?, "Should use fully qualified url"
 
       @request_token=@consumer.get_request_token
-      assert @request_token
+      assert_not_nil @request_token
       assert_equal "requestkey", at request_token.token
       assert_equal "requestsecret", at request_token.secret
       assert_equal "http://term.ie/oauth/example/authorize.php?oauth_token=requestkey", at request_token.authorize_url
 
       @access_token=@request_token.get_access_token
-      assert @access_token
+      assert_not_nil @access_token
       assert_equal "accesskey", at access_token.token
       assert_equal "accesssecret", at access_token.secret
 
       @response=@access_token.get("/oauth/example/echo_api.php?ok=hello&test=this")
-      assert @response
+      assert_not_nil @response
       assert_equal "200", at response.code
       assert_equal( "ok=hello&test=this", at response.body)
 
       @response=@access_token.post("/oauth/example/echo_api.php",{'ok'=>'hello','test'=>'this'})
-      assert @response
+      assert_not_nil @response
       assert_equal "200", at response.code
       assert_equal( "ok=hello&test=this", at response.body)
     end
@@ -283,13 +283,13 @@ module Integration
       request_body_stream = StringIO.new( request_body_string )
 
       @response=@access_token.post("/oauth/example/echo_api.php",request_body_stream)
-      assert @response
+      assert_not_nil @response
       assert_equal "200", at response.code
 
       request_body_file = File.open(__FILE__)
 
       @response=@access_token.post("/oauth/example/echo_api.php",request_body_file)
-      assert @response
+      assert_not_nil @response
       assert_equal "200", at response.code
 
       # unfortunately I don't know of a way to test that the body data was received correctly since the test server at http://term.ie
diff --git a/test/keys/rsa.cert b/test/keys/rsa.cert
new file mode 100644
index 0000000..f7b5c09
--- /dev/null
+++ b/test/keys/rsa.cert
@@ -0,0 +1,11 @@
+-----BEGIN CERTIFICATE-----
+MIIBpjCCAQ+gAwIBAgIBATANBgkqhkiG9w0BAQUFADAZMRcwFQYDVQQDDA5UZXN0
+IFByaW5jaXBhbDAeFw03MDAxMDEwODAwMDBaFw0zODEyMzEwODAwMDBaMBkxFzAV
+BgNVBAMMDlRlc3QgUHJpbmNpcGFsMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQC0YjCwIfYoprq/FQO6lb3asXrxLlJFuCvtinTF5p0GxvQGu5O3gYytUvtC2JlY
+zypSRjVxwxrsuRcP3e641SdASwfrmzyvIgP08N4S0IFzEURkV1wp/IpH7kH41Etb
+mUmrXSwfNZsnQRE5SYSOhh+LcK2wyQkdgcMv11l4KoBkcwIDAQABMA0GCSqGSIb3
+DQEBBQUAA4GBAGZLPEuJ5SiJ2ryq+CmEGOXfvlTtEL2nuGtr9PewxkgnOjZpUy+d
+4TvuXJbNQc8f4AMWL/tO9w0Fk80rWKp9ea8/df4qMq5qlFWlx6yOLQxumNOmECKb
+WpkUQDIDJEoFUzKMVuJf4KO/FJ345+BNLGgbJ6WujreoM1X/gYfdnJ/J
+-----END CERTIFICATE-----
\ No newline at end of file
diff --git a/test/keys/rsa.pem b/test/keys/rsa.pem
new file mode 100644
index 0000000..e0f5542
--- /dev/null
+++ b/test/keys/rsa.pem
@@ -0,0 +1,16 @@
+-----BEGIN PRIVATE KEY-----
+MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALRiMLAh9iimur8V
+A7qVvdqxevEuUkW4K+2KdMXmnQbG9Aa7k7eBjK1S+0LYmVjPKlJGNXHDGuy5Fw/d
+7rjVJ0BLB+ubPK8iA/Tw3hLQgXMRRGRXXCn8ikfuQfjUS1uZSatdLB81mydBETlJ
+hI6GH4twrbDJCR2Bwy/XWXgqgGRzAgMBAAECgYBYWVtleUzavkbrPjy0T5FMou8H
+X9u2AC2ry8vD/l7cqedtwMPp9k7TubgNFo+NGvKsl2ynyprOZR1xjQ7WgrgVB+mm
+uScOM/5HVceFuGRDhYTCObE+y1kxRloNYXnx3ei1zbeYLPCHdhxRYW7T0qcynNmw
+rn05/KO2RLjgQNalsQJBANeA3Q4Nugqy4QBUCEC09SqylT2K9FrrItqL2QKc9v0Z
+zO2uwllCbg0dwpVuYPYXYvikNHHg+aCWF+VXsb9rpPsCQQDWR9TT4ORdzoj+Nccn
+qkMsDmzt0EfNaAOwHOmVJ2RVBspPcxt5iN4HI7HNeG6U5YsFBb+/GZbgfBT3kpNG
+WPTpAkBI+gFhjfJvRw38n3g/+UeAkwMI2TJQS4n8+hid0uus3/zOjDySH3XHCUno
+cn1xOJAyZODBo47E+67R4jV1/gzbAkEAklJaspRPXP877NssM5nAZMU0/O/NGCZ+
+3jPgDUno6WbJn5cqm8MqWhW1xGkImgRk+fkDBquiq4gPiT898jusgQJAd5Zrr6Q8
+AO/0isr/3aa6O6NLQxISLKcPDk2NOccAfS/xOtfOz4sJYM3+Bs4Io9+dZGSDCA54
+Lw03eHTNQghS0A==
+-----END PRIVATE KEY-----
\ No newline at end of file
diff --git a/test/test_access_token.rb b/test/test_access_token.rb
index 3ee6098..591a1c9 100644
--- a/test/test_access_token.rb
+++ b/test/test_access_token.rb
@@ -1,6 +1,6 @@
 require File.expand_path('../test_helper', __FILE__)
 
-class TestAccessToken < Minitest::Test
+class TestAccessToken < Test::Unit::TestCase
   def setup
     @fake_response = {
       :user_id => 5734758743895,
@@ -20,7 +20,7 @@ class TestAccessToken < Minitest::Test
   end
 
   def test_access_token_makes_non_oauth_response_params_available
-    assert @access_token.params[:user_id]
+    assert_not_nil @access_token.params[:user_id]
     assert_equal 5734758743895, @access_token.params[:user_id]
   end
 end
diff --git a/test/test_action_controller_request_proxy.rb b/test/test_action_controller_request_proxy.rb
index ac251d1..c7c6090 100644
--- a/test/test_action_controller_request_proxy.rb
+++ b/test/test_action_controller_request_proxy.rb
@@ -1,20 +1,20 @@
+gem 'actionpack', '~> 2.3.8'
 require File.expand_path('../test_helper', __FILE__)
 
 require 'oauth/request_proxy/action_controller_request'
+require 'action_controller/test_process'
 
-class ActionControllerRequestProxyTest < Minitest::Test
+class ActionControllerRequestProxyTest < Test::Unit::TestCase
 
   def request_proxy(request_method = :get, uri_params = {}, body_params = {})
-    request = ActionDispatch::TestRequest.new
-    request.request_uri = '/'
+    request = ActionController::TestRequest.new
+    request.set_REQUEST_URI('/')
 
     case request_method
     when :post
       request.env['REQUEST_METHOD'] = 'POST'
     when :put
       request.env['REQUEST_METHOD'] = 'PUT'
-    when :patch
-      request.env['REQUEST_METHOD'] = 'PATCH'
     end
 
     request.env['REQUEST_URI'] = '/'
@@ -50,14 +50,6 @@ class ActionControllerRequestProxyTest < Minitest::Test
     assert_equal 'PUT', request_proxy.method
   end
 
-  def test_that_proxy_simple_patch_request_works_with_query_params
-    request_proxy = request_proxy(:patch, {'key'=>'value'})
-
-    expected_parameters = [["key", "value"]]
-    assert_equal expected_parameters, request_proxy.parameters_for_signature
-    assert_equal 'PATCH', request_proxy.method
-  end
-
   def test_that_proxy_simple_get_request_works_with_post_params
     request_proxy = request_proxy(:get, {}, {'key'=>'value'})
 
@@ -82,14 +74,6 @@ class ActionControllerRequestProxyTest < Minitest::Test
     assert_equal 'PUT', request_proxy.method
   end
 
-  def test_that_proxy_simple_patch_request_works_with_post_params
-    request_proxy = request_proxy(:patch, {}, {'key'=>'value'})
-
-    expected_parameters = []
-    assert_equal expected_parameters, request_proxy.parameters_for_signature
-    assert_equal 'PATCH', request_proxy.method
-  end
-
   def test_that_proxy_simple_get_request_works_with_mixed_params
     request_proxy = request_proxy(:get, {'key'=>'value'}, {'key2'=>'value2'})
 
@@ -114,14 +98,6 @@ class ActionControllerRequestProxyTest < Minitest::Test
     assert_equal 'PUT', request_proxy.method
   end
 
-  def test_that_proxy_simple_patch_request_works_with_mixed_params
-    request_proxy = request_proxy(:patch, {'key'=>'value'}, {'key2'=>'value2'})
-
-    expected_parameters = [["key", "value"]]
-    assert_equal expected_parameters, request_proxy.parameters_for_signature
-    assert_equal 'PATCH', request_proxy.method
-  end
-
   def test_parameter_keys_should_preserve_brackets_from_hash
     assert_equal(
       [["message[body]", "This is a test"]],
diff --git a/test/test_consumer.rb b/test/test_consumer.rb
index 4d23021..136aeea 100644
--- a/test/test_consumer.rb
+++ b/test/test_consumer.rb
@@ -1,11 +1,12 @@
 require File.expand_path('../test_helper', __FILE__)
+require 'mocha'
 
 require 'stringio'
 
 # This performs testing against Andy Smith's test server http://term.ie/oauth/example/
 # Thanks Andy.
 # This also means you have to be online to be able to run these.
-class ConsumerTest < Minitest::Test
+class ConsumerTest < Test::Unit::TestCase
   def setup
     @consumer=OAuth::Consumer.new(
         'consumer_key_86cad9', '5888bf0345e5d237',
@@ -131,14 +132,7 @@ class ConsumerTest < Minitest::Test
     assert_equal :post, at consumer.http_method
   end
 
-  def test_token_request_identifies_itself_as_a_token_request
-    request_options = {}
-    @consumer.stubs(:request).returns(create_stub_http_response)
-    @consumer.token_request(:post, '/', 'token', request_options) {}
-    assert_equal true, request_options[:token_request]
-  end
-
-  def test_that_token_response_should_be_uri_parameter_format_as_default
+ def test_that_token_response_should_be_uri_parameter_format_as_default
     @consumer.expects(:request).returns(create_stub_http_response("oauth_token=token&oauth_token_secret=secret"))
 
     hash = @consumer.token_request(:get, "")
diff --git a/test/test_curb_request_proxy.rb b/test/test_curb_request_proxy.rb
index 3303d8e..8abf245 100644
--- a/test/test_curb_request_proxy.rb
+++ b/test/test_curb_request_proxy.rb
@@ -6,7 +6,7 @@ require 'oauth/request_proxy/curb_request'
 require 'curb'
 
 
-class CurbRequestProxyTest < Minitest::Test
+class CurbRequestProxyTest < Test::Unit::TestCase
 
   def test_that_proxy_simple_get_request_works
     request = Curl::Easy.new('/test?key=value')
diff --git a/test/test_em_http_client.rb b/test/test_em_http_client.rb
index 8b7b3f4..603fd8b 100644
--- a/test/test_em_http_client.rb
+++ b/test/test_em_http_client.rb
@@ -3,7 +3,7 @@ begin
 
 require 'oauth/client/em_http'
 
-class EmHttpClientTest < Minitest::Test
+class EmHttpClientTest < Test::Unit::TestCase
 
   def setup
     @consumer = OAuth::Consumer.new('consumer_key_86cad9', '5888bf0345e5d237')
diff --git a/test/test_em_http_request_proxy.rb b/test/test_em_http_request_proxy.rb
index 7c86ed0..6bcab2d 100644
--- a/test/test_em_http_request_proxy.rb
+++ b/test/test_em_http_request_proxy.rb
@@ -6,7 +6,7 @@ require 'em-http'
 require 'oauth/request_proxy/em_http_request'
 
 
-class EmHttpRequestProxyTest < Minitest::Test
+class EmHttpRequestProxyTest < Test::Unit::TestCase
 
   def test_request_proxy_works_with_simple_request
     proxy = create_request_proxy
diff --git a/test/test_helper.rb b/test/test_helper.rb
index c512666..c3caaf1 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -1,18 +1,13 @@
+require 'test/unit'
 require 'rubygems'
-require 'minitest/autorun'
-require 'mocha/mini_test'
-require 'rack/test'
-
-ENV['RACK_ENV'] = 'test'
-
-require 'byebug'
 
 $LOAD_PATH << File.dirname(__FILE__) + '/../lib/'
 require 'oauth'
+require 'mocha'
 require 'stringio'
 require 'webmock'
 
-class Minitest::Test
+class Test::Unit::TestCase
   include WebMock::API
 
   def assert_matching_headers(expected, actual)
diff --git a/test/test_hmac_sha1.rb b/test/test_hmac_sha1.rb
index 466e1ca..ef0360b 100644
--- a/test/test_hmac_sha1.rb
+++ b/test/test_hmac_sha1.rb
@@ -1,6 +1,6 @@
 require File.expand_path('../test_helper', __FILE__)
 
-class TestSignatureHmacSha1 < Minitest::Test
+class TestSignatureHmacSha1 < Test::Unit::TestCase
   def test_that_hmac_sha1_implements_hmac_sha1
     assert OAuth::Signature.available_methods.include?('hmac-sha1')
   end
diff --git a/test/test_net_http_client.rb b/test/test_net_http_client.rb
index 87bed4b..3ceacf1 100644
--- a/test/test_net_http_client.rb
+++ b/test/test_net_http_client.rb
@@ -1,6 +1,6 @@
 require File.expand_path('../test_helper', __FILE__)
 
-class NetHTTPClientTest < Minitest::Test
+class NetHTTPClientTest < Test::Unit::TestCase
 
   def setup
     @consumer = OAuth::Consumer.new('consumer_key_86cad9', '5888bf0345e5d237')
@@ -62,12 +62,6 @@ class NetHTTPClientTest < Minitest::Test
     assert_matching_headers "oauth_nonce=\"225579211881198842005988698334675835446\", oauth_body_hash=\"oXyaqmHoChv3HQ2FCvTluqmAC70%3D\", oauth_signature_method=\"HMAC-SHA1\", oauth_token=\"token_411a7f\", oauth_timestamp=\"1199645624\", oauth_consumer_key=\"consumer_key_86cad9\", oauth_signature=\"0DA6pGTapdHSqC15RZelY5rNLDw%3D\", oauth_version=\"1.0\"", request['authorization']
   end
 
-  def test_that_body_hash_is_obmitted_when_token_request
-    request = Net::HTTP::Post.new(@request_uri.path)
-    request.oauth!(@http, @consumer, @token, {:nonce => @nonce, :timestamp => @timestamp, :token_request => true})
-    assert_no_match(/oauth_body_hash/, request['authorization'])
-  end
-
   def test_that_body_hash_is_obmitted_when_no_algorithm_is_defined
     request = Net::HTTP::Post.new(@request_uri.path)
     request.body = "data"
@@ -291,10 +285,6 @@ class NetHTTPClientTest < Minitest::Test
 
   protected
 
-  def assert_no_match exp, act, msg = "Expected #{act.inspect} to not match #{exp.inspect}"
-    assert act !~ exp, msg
-  end
-
     def request_parameters_to_s
       @request_parameters.map { |k,v| "#{k}=#{v}" }.join("&")
     end
diff --git a/test/test_net_http_request_proxy.rb b/test/test_net_http_request_proxy.rb
index dce05d0..ac2a327 100644
--- a/test/test_net_http_request_proxy.rb
+++ b/test/test_net_http_request_proxy.rb
@@ -1,6 +1,6 @@
 require File.expand_path('../test_helper', __FILE__)
 
-class NetHTTPRequestProxyTest < Minitest::Test
+class NetHTTPRequestProxyTest < Test::Unit::TestCase
 
   def test_that_proxy_simple_get_request_works
     request = Net::HTTP::Get.new('/test?key=value')
diff --git a/test/test_oauth_helper.rb b/test/test_oauth_helper.rb
index 134bc2a..a489ca2 100644
--- a/test/test_oauth_helper.rb
+++ b/test/test_oauth_helper.rb
@@ -1,6 +1,6 @@
 require File.expand_path('../test_helper', __FILE__)
 
-class TestOAuthHelper < Minitest::Test
+class TestOAuthHelper < Test::Unit::TestCase
 
   def test_parse_valid_header
     header = 'OAuth ' \
@@ -27,7 +27,7 @@ class TestOAuthHelper < Minitest::Test
   def test_parse_header_ill_formed
     header = "OAuth garbage"
 
-    assert_raises OAuth::Problem do
+    assert_raise OAuth::Problem do
       OAuth::Helper.parse_header(header)
     end
   end
@@ -42,7 +42,7 @@ class TestOAuthHelper < Minitest::Test
              'oauth_timestamp="1240004133", oauth_nonce="nonce", ' \
              'oauth_version="1.0" '
 
-    assert_raises OAuth::Problem do
+    assert_raise OAuth::Problem do
       OAuth::Helper.parse_header(header)
     end
   end
@@ -68,7 +68,7 @@ class TestOAuthHelper < Minitest::Test
     assert_equal "nonce", params['oauth_nonce']
     assert_equal "1.0", params['oauth_version']
   end
-
+  
   def test_normalize
     params = {
       'oauth_nonce' => 'nonce',
@@ -81,7 +81,7 @@ class TestOAuthHelper < Minitest::Test
     }
     assert_equal("oauth_consumer_key=vince_clortho&oauth_nonce=nonce&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1240004133&oauth_token=token_value&oauth_version=1.0&weight%5Bvalue%5D=65", OAuth::Helper.normalize(params))
   end
-
+  
   def test_normalize_nested_query
     assert_equal([], OAuth::Helper.normalize_nested_query({}))
     assert_equal(["foo=bar"], OAuth::Helper.normalize_nested_query({:foo => 'bar'}))
diff --git a/test/test_rack_request_proxy.rb b/test/test_rack_request_proxy.rb
index c0c3cee..8b22afc 100644
--- a/test/test_rack_request_proxy.rb
+++ b/test/test_rack_request_proxy.rb
@@ -3,7 +3,7 @@ require 'oauth/request_proxy/rack_request'
 require 'rack/request'
 require 'rack/mock'
 
-class RackRequestProxyTest < Minitest::Test
+class RackRequestProxyTest < Test::Unit::TestCase
 
   def test_that_proxy_simple_get_request_works
     request = Rack::Request.new(Rack::MockRequest.env_for('http://example.com/test?key=value'))
diff --git a/test/test_request_token.rb b/test/test_request_token.rb
index bc05513..632e927 100644
--- a/test/test_request_token.rb
+++ b/test/test_request_token.rb
@@ -6,7 +6,7 @@ class StubbedToken < OAuth::RequestToken
   end
 end
 
-class TestRequestToken < Minitest::Test
+class TestRequestToken < Test::Unit::TestCase
   def setup
     # setup a fake req. token. mocking Consumer would be more appropriate...
     @request_token = OAuth::RequestToken.new(
@@ -18,7 +18,7 @@ class TestRequestToken < Minitest::Test
 
   def test_request_token_builds_authorize_url_connectly_with_additional_params
     auth_url = @request_token.authorize_url({:oauth_callback => "github.com"})
-    assert auth_url
+    assert_not_nil auth_url
     assert_match(/oauth_token/, auth_url)
     assert_match(/oauth_callback/, auth_url)
   end
@@ -27,19 +27,14 @@ class TestRequestToken < Minitest::Test
     # we should only have 1 key in the url returned if we didn't pass anything.
     # this is the only required param to authenticate the client.
     auth_url = @request_token.authorize_url(nil)
-    assert auth_url
+    assert_not_nil auth_url
     assert_match(/\?oauth_token=/, auth_url)
 
     auth_url = @request_token.authorize_url
-    assert auth_url
+    assert_not_nil auth_url
     assert_match(/\?oauth_token=/, auth_url)
   end
 
-  def test_request_token_returns_nil_authorize_url_when_token_is_nil
-    @request_token.token = nil
-    assert_nil @request_token.authorize_url
-  end
-
   #TODO: mock out the Consumer to test the Consumer/AccessToken interaction.
   def test_get_access_token
   end
diff --git a/test/test_rest_client_request_proxy.rb b/test/test_rest_client_request_proxy.rb
deleted file mode 100644
index d86b3cf..0000000
--- a/test/test_rest_client_request_proxy.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-require File.expand_path('../test_helper', __FILE__)
-
-begin
-  require 'oauth/request_proxy/rest_client_request'
-  require 'rest-client'
-
-  class RestlClientRequestProxyTest < Minitest::Test
-
-    def test_that_proxy_simple_get_request_works
-      request = ::RestClient::Request.new(method: :get, url: "http://example.com/test?key=value")
-      request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test?key=value'})
-
-      expected_parameters = {'key' => ['value']}
-      assert_equal expected_parameters, request_proxy.parameters_for_signature
-      assert_equal 'http://example.com/test', request_proxy.normalized_uri
-      assert_equal 'GET', request_proxy.method
-    end
-
-    def test_that_proxy_simple_post_request_works_with_arguments
-      request = ::RestClient::Request.new(method: :post, url: "http://example.com/test")
-      params = {'key' => 'value'}
-      request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test', :parameters => params})
-
-      expected_parameters = {'key' => 'value'}
-      assert_equal expected_parameters, request_proxy.parameters_for_signature
-      assert_equal 'http://example.com/test', request_proxy.normalized_uri
-      assert_equal 'POST', request_proxy.method
-    end
-
-    def test_that_proxy_simple_post_request_works_with_form_data
-      request = ::RestClient::Request.new(method: :post, url: "http://example.com/test",
-        payload: {'key' => 'value'},
-        headers: {'Content-Type' => 'application/x-www-form-urlencoded'})
-      request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test'})
-
-      expected_parameters = {'key' => 'value'}
-      assert_equal expected_parameters, request_proxy.parameters_for_signature
-      assert_equal 'http://example.com/test', request_proxy.normalized_uri
-      assert_equal 'POST', request_proxy.method
-    end
-
-    def test_that_proxy_simple_put_request_works_with_arguments
-      request = ::RestClient::Request.new(method: :put, url: "http://example.com/test")
-      params = {'key' => 'value'}
-      request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test', :parameters => params})
-
-      expected_parameters = {'key' => 'value'}
-      assert_equal expected_parameters, request_proxy.parameters_for_signature
-      assert_equal 'http://example.com/test', request_proxy.normalized_uri
-      assert_equal 'PUT', request_proxy.method
-    end
-
-    def test_that_proxy_simple_put_request_works_with_form_data
-      request = ::RestClient::Request.new(method: :put, url: "http://example.com/test",
-        payload: {'key' => 'value'},
-        headers: {'Content-Type' => 'application/x-www-form-urlencoded'})
-      request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test'})
-
-      expected_parameters = {'key' => 'value'}
-      assert_equal expected_parameters, request_proxy.parameters_for_signature
-      assert_equal 'http://example.com/test', request_proxy.normalized_uri
-      assert_equal 'PUT', request_proxy.method
-    end
-
-    def test_that_proxy_post_request_works_with_mixed_parameter_sources
-      request = ::RestClient::Request.new(url: 'http://example.com/test?key=value',
-        method: :post,
-        payload: {'key2' => 'value2'},
-        headers: {'Content-Type' => 'application/x-www-form-urlencoded'})
-      request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test?key=value', :parameters => {'key3' => 'value3'}})
-
-      expected_parameters = {'key' => ['value'], 'key2' => 'value2', 'key3' => 'value3'}
-      assert_equal expected_parameters, request_proxy.parameters_for_signature
-      assert_equal 'http://example.com/test', request_proxy.normalized_uri
-      assert_equal 'POST', request_proxy.method
-    end
-
-  end
-rescue LoadError => e
-    warn "! problem loading rest-client, skipping these tests: #{e}"
-end
diff --git a/test/test_rsa_sha1.rb b/test/test_rsa_sha1.rb
index 939a44e..f057869 100644
--- a/test/test_rsa_sha1.rb
+++ b/test/test_rsa_sha1.rb
@@ -2,7 +2,7 @@ require File.expand_path('../test_helper', __FILE__)
 require 'oauth/consumer'
 require 'oauth/signature/rsa/sha1'
 
-class TestSignatureRsaSha1 < Minitest::Test
+class TestSignatureRsaSha1 < Test::Unit::TestCase
 
   def setup
     @request = Net::HTTP::Get.new('/photos?file=vacaction.jpg&size=original&oauth_version=1.0&oauth_consumer_key=dpf43f3p2l4k3l03&oauth_timestamp=1196666512&oauth_nonce=13917289812797014437&oauth_signature_method=RSA-SHA1')
diff --git a/test/test_server.rb b/test/test_server.rb
index d40a4ea..15947c7 100644
--- a/test/test_server.rb
+++ b/test/test_server.rb
@@ -1,7 +1,6 @@
 require File.expand_path('../test_helper', __FILE__)
 require 'oauth/server'
-
-class ServerTest < Minitest::Test
+class ServerTest < Test::Unit::TestCase
   def setup
     @server=OAuth::Server.new "http://test.com"
   end
@@ -20,15 +19,15 @@ class ServerTest < Minitest::Test
 
   def test_generate_consumer_credentials
     consumer=@server.generate_consumer_credentials
-    assert consumer.key
-    assert consumer.secret
+    assert_not_nil consumer.key
+    assert_not_nil consumer.secret
   end
 
   def test_create_consumer
     @consumer=@server.create_consumer
-    assert @consumer
-    assert @consumer.key
-    assert @consumer.secret
+    assert_not_nil @consumer
+    assert_not_nil @consumer.key
+    assert_not_nil @consumer.secret
     assert_equal "http://test.com", at consumer.site
     assert_equal "/oauth/request_token", at consumer.request_token_path
     assert_equal "/oauth/authorize", at consumer.authorize_path
diff --git a/test/test_signature.rb b/test/test_signature.rb
index e964afd..4fb7041 100644
--- a/test/test_signature.rb
+++ b/test/test_signature.rb
@@ -2,14 +2,21 @@
 
 require File.expand_path('../test_helper', __FILE__)
 
-class TestOauth < Minitest::Test
+class TestOauth < Test::Unit::TestCase
 
   def test_parameter_escaping_kcode_invariant
-    %w(n N e E s S u U).each do |kcode|
-      assert_equal '%E3%81%82', OAuth::Helper.escape('あ'),
-                    "Failed to correctly escape Japanese under $KCODE = #{kcode}"
-      assert_equal '%C3%A9', OAuth::Helper.escape('é'),
-                    "Failed to correctly escape e+acute under $KCODE = #{kcode}"
+    ruby19 = RUBY_VERSION =~ /^1\.9/
+    old = $KCODE if !ruby19
+    begin
+      %w(n N e E s S u U).each do |kcode|
+        $KCODE = kcode if !ruby19
+        assert_equal '%E3%81%82', OAuth::Helper.escape('あ'),
+                      "Failed to correctly escape Japanese under $KCODE = #{kcode}"
+        assert_equal '%C3%A9', OAuth::Helper.escape('é'),
+                      "Failed to correctly escape e+acute under $KCODE = #{kcode}"
+      end
+    ensure
+      $KCODE = old if !ruby19
     end
   end
 end
diff --git a/test/test_signature_base.rb b/test/test_signature_base.rb
index b76e323..c31f606 100644
--- a/test/test_signature_base.rb
+++ b/test/test_signature_base.rb
@@ -1,8 +1,7 @@
 require File.expand_path('../test_helper', __FILE__)
 require 'oauth/signature/base'
 require 'net/http'
-
-class SignatureBaseTest < Minitest::Test
+class SignatureBaseTest < Test::Unit::TestCase
 
   def test_that_initialize_requires_one_request_argument
     assert_raises ArgumentError do
@@ -23,10 +22,11 @@ class SignatureBaseTest < Minitest::Test
     # this isn't quite valid, but it will do.
     raw_request = Net::HTTP::Get.new('/test')
     request = OAuth::RequestProxy.proxy(raw_request)
-
-    OAuth::Signature::Base.new(request) { |token|
-      # just a stub
-    }
+    assert_nothing_raised do
+      OAuth::Signature::Base.new(request) { |token|
+        # just a stub
+      }
+    end
   end
 
 end
diff --git a/test/test_signature_hmac_sha1.rb b/test/test_signature_hmac_sha1.rb
deleted file mode 100644
index df0434f..0000000
--- a/test/test_signature_hmac_sha1.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require File.expand_path('../test_helper', __FILE__)
-require 'oauth/signature/hmac/sha1'
-
-class SignatureHMACSHA1Test < Minitest::Test
-  def test_that_verify_returns_true_when_the_request_signature_is_right
-    request = OAuth::RequestProxy::MockRequest.new(
-      'method' => 'POST',
-      'uri' => 'https://photos.example.net/initialize',
-      'parameters' => {
-        'oauth_consumer_key' => 'dpf43f3p2l4k3l03',
-        'oauth_signature_method' => 'HMAC-SHA1',
-        'oauth_timestamp' => '137131200',
-        'oauth_nonce' => 'wIjqoS',
-        'oauth_callback' => 'http://printer.example.com/ready',
-        'oauth_version' => '1.0',
-        'oauth_signature' => 'xcHYBV3AbyoDz7L4dV10P3oLCjY='
-      }
-    )
-    assert OAuth::Signature::HMAC::SHA1.new(request, :consumer_secret => 'kd94hf93k423kf44').verify
-  end
-
-  def test_that_verify_returns_false_when_the_request_signature_is_wrong
-    # Test a bug in the OAuth::Signature::Base#== method: when the Base64.decode64 method is
-    # used on the "self" and "other" signature (as in version 0.4.7), the result may be incorrectly "true".
-    request = OAuth::RequestProxy::MockRequest.new(
-      'method' => 'POST',
-      'uri' => 'https://photos.example.net/initialize',
-      'parameters' => {
-        'oauth_consumer_key' => 'dpf43f3p2l4k3l03',
-        'oauth_signature_method' => 'HMAC-SHA1',
-        'oauth_timestamp' => '137131200',
-        'oauth_nonce' => 'wIjqoS',
-        'oauth_callback' => 'http://printer.example.com/ready',
-        'oauth_version' => '1.0',
-        'oauth_signature' => 'xcHYBV3AbyoDz7L4dV10P3oLCjZ='
-      }
-    )
-    assert !OAuth::Signature::HMAC::SHA1.new(request, :consumer_secret => 'kd94hf93k423kf44').verify
-  end
-end
diff --git a/test/test_signature_plain_text.rb b/test/test_signature_plain_text.rb
index 32d6e72..eb644b1 100644
--- a/test/test_signature_plain_text.rb
+++ b/test/test_signature_plain_text.rb
@@ -1,7 +1,7 @@
 require File.expand_path('../test_helper', __FILE__)
 require 'oauth/signature/plaintext'
 
-class TestSignaturePlaintext < Minitest::Test
+class TestSignaturePlaintext < Test::Unit::TestCase
   def test_that_plaintext_implements_plaintext
     assert OAuth::Signature.available_methods.include?('plaintext')
   end
diff --git a/test/test_token.rb b/test/test_token.rb
index 84b9ba2..d4f9a82 100644
--- a/test/test_token.rb
+++ b/test/test_token.rb
@@ -1,7 +1,7 @@
 require File.expand_path('../test_helper', __FILE__)
 require 'oauth/token'
 
-class TestToken < Minitest::Test
+class TestToken < Test::Unit::TestCase
 
   def setup
   end
diff --git a/test/test_typhoeus_request_proxy.rb b/test/test_typhoeus_request_proxy.rb
index 1def8bf..9c11857 100644
--- a/test/test_typhoeus_request_proxy.rb
+++ b/test/test_typhoeus_request_proxy.rb
@@ -5,7 +5,7 @@ begin
 require 'oauth/request_proxy/typhoeus_request'
 require 'typhoeus'
 
-class TyphoeusRequestProxyTest < Minitest::Test
+class TyphoeusRequestProxyTest < Test::Unit::TestCase
 
   def test_that_proxy_simple_get_request_works
     request = ::Typhoeus::Request.new('/test?key=value')
@@ -34,7 +34,7 @@ class TyphoeusRequestProxyTest < Minitest::Test
       :headers => {'Content-Type' => 'application/x-www-form-urlencoded'})
     request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test'})
 
-    expected_parameters = {'key' => ['value']}
+    expected_parameters = {'key' => 'value'}
     assert_equal expected_parameters, request_proxy.parameters_for_signature
     assert_equal 'http://example.com/test', request_proxy.normalized_uri
     assert_equal 'POST', request_proxy.method
@@ -61,27 +61,6 @@ class TyphoeusRequestProxyTest < Minitest::Test
     assert_equal 'PUT', request_proxy.method
   end
 
-  def test_that_proxy_simple_put_request_works_with_arguments
-    request = Typhoeus::Request.new('/test', :method => :patch)
-    params = {'key' => 'value'}
-    request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test', :parameters => params})
-
-    expected_parameters = {'key' => 'value'}
-    assert_equal expected_parameters, request_proxy.parameters_for_signature
-    assert_equal 'http://example.com/test', request_proxy.normalized_uri
-    assert_equal 'PATCH', request_proxy.method
-  end
-
-  def test_that_proxy_simple_put_request_works_with_form_data
-    request = Typhoeus::Request.new('/test', :method => :patch, :params => {'key' => 'value'})
-    request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test'})
-
-    expected_parameters = {'key' => ['value']}
-    assert_equal expected_parameters, request_proxy.parameters_for_signature
-    assert_equal 'http://example.com/test', request_proxy.normalized_uri
-    assert_equal 'PATCH', request_proxy.method
-  end
-
   def test_that_proxy_post_request_works_with_mixed_parameter_sources
     request = Typhoeus::Request.new('/test?key=value',
       :method => :post,
@@ -89,7 +68,7 @@ class TyphoeusRequestProxyTest < Minitest::Test
       :headers => {'Content-Type' => 'application/x-www-form-urlencoded'})
     request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test?key=value', :parameters => {'key3' => 'value3'}})
 
-    expected_parameters = {'key' => ['value'], 'key2' => ['value2'], 'key3' => 'value3'}
+    expected_parameters = {'key' => ['value'], 'key2' => 'value2', 'key3' => 'value3'}
     assert_equal expected_parameters, request_proxy.parameters_for_signature
     assert_equal 'http://example.com/test', request_proxy.normalized_uri
     assert_equal 'POST', request_proxy.method

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/ruby-oauth.git



More information about the Pkg-ruby-extras-commits mailing list