<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/oauth/client.rb</filename>
    </added>
    <added>
      <filename>lib/oauth/client/action_controller_request.rb</filename>
    </added>
    <added>
      <filename>lib/oauth/client/helper.rb</filename>
    </added>
    <added>
      <filename>lib/oauth/client/net_http.rb</filename>
    </added>
    <added>
      <filename>lib/oauth/helper.rb</filename>
    </added>
    <added>
      <filename>lib/oauth/request_proxy.rb</filename>
    </added>
    <added>
      <filename>lib/oauth/request_proxy/action_controller_request.rb</filename>
    </added>
    <added>
      <filename>lib/oauth/request_proxy/base.rb</filename>
    </added>
    <added>
      <filename>lib/oauth/request_proxy/net_http.rb</filename>
    </added>
    <added>
      <filename>lib/oauth/signature/base.rb</filename>
    </added>
    <added>
      <filename>lib/oauth/signature/hmac/base.rb</filename>
    </added>
    <added>
      <filename>lib/oauth/signature/hmac/md5.rb</filename>
    </added>
    <added>
      <filename>lib/oauth/signature/hmac/rmd160.rb</filename>
    </added>
    <added>
      <filename>lib/oauth/signature/hmac/sha1.rb</filename>
    </added>
    <added>
      <filename>lib/oauth/signature/hmac/sha2.rb</filename>
    </added>
    <added>
      <filename>lib/oauth/signature/md5.rb</filename>
    </added>
    <added>
      <filename>lib/oauth/signature/plaintext.rb</filename>
    </added>
    <added>
      <filename>lib/oauth/signature/rsa/sha1.rb</filename>
    </added>
    <added>
      <filename>lib/oauth/signature/sha1.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,3 +1,7 @@
+== 0.2 2007-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
 
 * 1 Fixed a problem where incoming request didn't check whether oauth parameters where missing. While not giving unauthorized access it did cause extra processing where not necessary.</diff>
      <filename>History.txt</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-Copyright (c) 2007 Pelle Braendgaard
+Copyright (c) 2007 Blaine Cook, Larry Halff, Pelle Braendgaard
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the</diff>
      <filename>License.txt</filename>
    </modified>
    <modified>
      <diff>@@ -6,13 +6,28 @@ Rakefile
 config/hoe.rb
 config/requirements.rb
 lib/oauth.rb
+lib/oauth/client.rb
+lib/oauth/client/action_controller_request.rb
+lib/oauth/client/helper.rb
+lib/oauth/client/net_http.rb
 lib/oauth/consumer.rb
-lib/oauth/consumer_credentials.rb
-lib/oauth/key.rb
-lib/oauth/oauth_test_helper.rb
-lib/oauth/request.rb
+lib/oauth/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/net_http.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/version.rb
 script/destroy
@@ -22,12 +37,15 @@ setup.rb
 tasks/deployment.rake
 tasks/environment.rake
 tasks/website.rake
+test/test_action_controller_request_proxy.rb
 test/test_consumer.rb
 test/test_helper.rb
-test/test_oauth.rb
-test/test_request.rb
-test/test_server.rb
+test/test_hmac_sha1.rb
+test/test_net_http_client.rb
+test/test_net_http_request_proxy.rb
 test/test_signature.rb
+test/test_signature_base.rb
+test/test_token.rb
 website/index.html
 website/index.txt
 website/javascripts/rounded_corners_lite.inc.js</diff>
      <filename>Manifest.txt</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 require 'oauth/version'
 
-AUTHOR = 'Pelle Braendgaard'  # can also be an array of Authors
+AUTHOR = ['Pelle Braendgaard','Blaine Cook','Larry Halff']  # can also be an array of Authors
 EMAIL = &quot;pelleb@gmail.com&quot;
 DESCRIPTION = &quot;OAuth Core Ruby implementation&quot;
 GEM_NAME = 'oauth' # what ppl will type to install your gem</diff>
      <filename>config/hoe.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,14 +1,3 @@
 $:.unshift File.dirname(__FILE__)
-require 'rubygems'
-require 'oauth/key'
-require 'oauth/request'
-require 'oauth/signature'
-require 'oauth/consumer_credentials'
-require 'oauth/consumer'
-require 'oauth/server'
-require 'oauth/token'
-require 'oauth/oauth_test_helper'
 
-module OAuth
-  
-end
\ No newline at end of file
+module OAuth; end</diff>
      <filename>lib/oauth.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,9 @@
+require 'net/http'
+require 'oauth/client/net_http'
 module OAuth
-  class Consumer&lt;ConsumerCredentials
+  class Consumer
     
-    @@default_params={
+    @@default_options={
       # Signature method used by server. Defaults to HMAC-SHA1
       :oauth_signature_method=&gt;'HMAC-SHA1',
       
@@ -15,10 +17,10 @@ module OAuth
       #
       # Possible values:
       #
-      #   :authorize - via the Authorize header (Default) ( option 1. in spec)
-      #   :post - url form encoded in body of POST request ( option 2. in spec)
-      #   :query - via the query part of the url ( option 3. in spec)
-      :auth_method=&gt;:authorize, 
+      #   :header - via the Authorize header (Default) ( option 1. in spec)
+      #   :body - url form encoded in body of POST request ( option 2. in spec)
+      #   :query_string - via the query part of the url ( option 3. in spec)
+      :scheme=&gt;:header, 
       
       # Default http method used for OAuth Token Requests (defaults to :post)
       :http_method=&gt;:post, 
@@ -26,15 +28,14 @@ module OAuth
       :oauth_version=&gt;&quot;1.0&quot;
     }
     
-    attr_accessor :site,:params
+    attr_accessor :site,:options, :key, :secret,:http
+    
     
     # Create a new consumer instance by passing it a configuration hash:
     #
-    #   @consumer=OAuth::Consumer.new( {
-    #     :consumer_key=&gt;&quot;key&quot;,
-    #     :consumer_secret=&gt;&quot;secret&quot;,
+    #   @consumer=OAuth::Consumer.new( key,secret,{
     #     :site=&gt;&quot;http://term.ie&quot;,
-    #     :auth_method=&gt;:authorize,
+    #     :scheme=&gt;:header,
     #     :http_method=&gt;:post,
     #     :request_token_path=&gt;&quot;/oauth/example/request_token.php&quot;,
     #     :access_token_path=&gt;&quot;/oauth/example/access_token.php&quot;,
@@ -43,81 +44,149 @@ module OAuth
     #
     # Start the process by requesting a token
     #
-    #   @request_token=@consumer.request_token
+    #   @request_token=@consumer.get_request_token
     #   session[:request_token]=@request_token
     #   redirect_to @request_token.authorize_url
     #
     # When user returns create an access_token
     #
-    #   @access_token=@request_token.access_token
-    #   @photos=@access_token.get('http://test.com/photos.xml')
+    #   @access_token=@request_token.get_access_token
+    #   @photos=@access_token.get('/photos.xml')
     #
     #
     
-    def initialize(params)
+    def initialize(consumer_key,consumer_secret,options={})
       # ensure that keys are symbols
-      @params=@@default_params.merge( params.inject({}) do |options, (key, value)|
+      @options=@@default_options.merge( options.inject({}) do |options, (key, value)|
         options[key.to_sym] = value
         options
       end)
-      super @params[:consumer_key],@params[:consumer_secret]
-      @site=@params[:site]
-      raise ArgumentError, 'Missing site URI' unless @site
+      @key = consumer_key
+      @secret = consumer_secret
     end
     
     def http_method
-      @http_method||=@params[:http_method]||:post
+      @http_method||=@options[:http_method]||:post
+    end
+    
+    def http
+      @http ||= Net::HTTP.new(uri.host, uri.port)
+    end
+    
+    # will change
+    def uri(url=nil)
+      @uri||=URI.parse(url||site)
     end
     
     # Get a Request Token
     def get_request_token
-      request=create_request(http_method,request_token_path)
-      response=request.perform_token_request(self.secret)
+      response=token_request(http_method,request_token_path)
       OAuth::RequestToken.new(self,response[:oauth_token],response[:oauth_token_secret])
     end
     
-    def create_request(http_method,path, oauth_params={},*arguments)
-      OAuth::Request.new(http_method,site,path,oauth_params.merge({
-        :oauth_consumer_key=&gt;self.key,
-        :realm=&gt;authorize_url,
-        :oauth_signature_method=&gt;params[:oauth_signature_method],
-        :oauth_version=&gt;params[:oauth_version],
-        :auth_method=&gt;auth_method
-        }),*arguments)
+    # Creates, signs and performs an http request.
+    # It's recommended to use the Token classes to set this up correctly.
+    # The arguments parameters are a hash or string encoded set of parameters if it's a post request as well as optional http headers.
+    # 
+    #   @consumer.request(:get,'/people',@token,{:scheme=&gt;:query_string})
+    #   @consumer.request(:post,'/people',@token,{},@person.to_xml,{ 'Content-Type' =&gt; 'application/xml' })
+    #
+    def request(http_method,path, token=nil,request_options={},*arguments)
+      http.request(create_signed_request(http_method,path,token,request_options,*arguments))
+    end
+    
+    # Creates and signs an http request.
+    # It's recommended to use the Token classes to set this up correctly
+    def create_signed_request(http_method,path, token=nil,request_options={},*arguments)
+      request=create_http_request(http_method,path,*arguments)
+      sign!(request,token,request_options)
+      request
+    end
+    
+    # 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)
+      response=request(http_method,path,token,request_options,*arguments)
+      if response.code==&quot;200&quot;
+        CGI.parse(response.body).inject({}){|h,(k,v)| h[k.to_sym]=v.first;h}
+      else 
+        response.error! 
+      end
     end
 
-    def signed_request(http_method, path, oauth_params={},token_secret=nil,*arguments)
-      request=create_request(http_method,path,oauth_params,*arguments)
-      request.sign(self.secret,token_secret)
-      request
+    # Sign the Request object. Use this if you have an externally generated http request object you want to sign.
+    def sign!(request,token=nil, request_options = {})
+      request.oauth!(http,self,token,{:scheme=&gt;scheme}.merge(request_options))
     end
     
-    def auth_method
-      @params[:auth_method]
+    # Return the signature_base_string
+    def signature_base_string(request,token=nil, request_options = {})
+      request.signature_base_string(http,self,token,{:scheme=&gt;scheme}.merge(request_options))
+    end
+
+    def site
+      @options[:site]
+    end
+
+    def scheme
+      @options[:scheme]
     end
     
     def request_token_path
-      @params[:request_token_path]
+      @options[:request_token_path]
     end
     
     def authorize_path
-      @params[:authorize_path]
+      @options[:authorize_path]
     end
     
     def access_token_path
-      @params[:access_token_path]
+      @options[:access_token_path]
     end
-
+    
+    # TODO this is ugly, rewrite
     def request_token_url
-      site+request_token_path
+      @options[:request_token_url]||site+request_token_path
     end
 
     def authorize_url
-      site+authorize_path
+      @options[:authorize_url]||site+authorize_path
     end
 
     def access_token_url
-      site+access_token_path
+      @options[:access_token_url]||site+access_token_path
     end
+
+    protected
+    
+    # create the http request object for a given http_method and path
+    def create_http_request(http_method,path,*arguments)
+      http_method=http_method.to_sym
+      if [:post,:put].include?(http_method)
+        data=arguments.shift
+      end
+      headers=(arguments.first.is_a?(Hash) ? arguments.shift : {})
+      case http_method
+      when :post
+        request=Net::HTTP::Post.new(path,headers)
+      when :put
+        request=Net::HTTP::Put.new(path,headers)
+      when :get
+        request=Net::HTTP::Get.new(path,headers)
+      when :delete
+        request=Net::HTTP::Delete.new(path,headers)
+      when :head
+        request=Net::HTTP::Head.new(path,headers)
+      else
+        raise ArgumentError, &quot;Don't know how to handle http_method: :#{http_method.to_s}&quot;
+      end
+      if data.is_a?(Hash)
+        request.set_form_data(data)
+      elsif data
+        request.body=data.to_s
+      end
+      request
+    end
+    
+    
   end
 end</diff>
      <filename>lib/oauth/consumer.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,9 @@
+require 'oauth/helper'
+require 'oauth/consumer'
 module OAuth
   # This is mainly used to create consumer credentials and can pretty much be ignored if you want to create your own
   class Server
-    include OAuth::Key
+    include OAuth::Helper
     attr_accessor :base_url
     
     @@server_paths={
@@ -20,19 +22,20 @@ module OAuth
     end
     
     def generate_consumer_credentials(params={})
-      ConsumerCredentials.new( *generate_credentials)
+      Consumer.new( *generate_credentials)
     end
 
     # mainly for testing purposes
     def create_consumer
       credentials=generate_credentials
-      Consumer.new( {
-        :site=&gt;base_url,
-        :consumer_key=&gt;credentials[0],
-        :consumer_secret=&gt;credentials[1],
-        :request_token_path=&gt;request_token_path,
-        :authorize_path=&gt;authorize_path,
-        :access_token_path=&gt;access_token_path
+      Consumer.new( 
+        credentials[0],
+        credentials[1],
+        {
+          :site=&gt;base_url,
+          :request_token_path=&gt;request_token_path,
+          :authorize_path=&gt;authorize_path,
+          :access_token_path=&gt;access_token_path
       })
     end
         </diff>
      <filename>lib/oauth/server.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,155 +1,28 @@
-require 'cgi'
-require 'hmac' # make sure to install: sudo gem install ruby-hmac
-require 'hmac-sha1'
-require 'hmac-md5'
-require 'hmac-sha2'
-require 'hmac-rmd160'
-
-require 'base64'
 module OAuth
-  # Much of this code has been blatantly stolen fron Blaine Cooke of Twitter and Larry Halff of ma.gnolia.com
-  # and lovingly hand modified with the utmost respect.
-  
-  # You should not need to use this directly as the request object encapsulates it in the sign and verify methods
   module Signature
-    def self.create(oauth_request,consumer_secret,token_secret=nil)
-      klass = case oauth_request.signature_method.downcase
-      when 'hmac-md5': OAuth::Signature::HashedMessageAuth::MD5
-      when 'hmac-sha1': OAuth::Signature::HashedMessageAuth::SHA1
-      when 'hmac-sha2': OAuth::Signature::HashedMessageAuth::SHA2
-      when 'hmac-rmd160': OAuth::Signature::HashedMessageAuth::RMD160
-      when 'plaintext': 
-        if oauth_request.uri.scheme==&quot;https&quot;
-          OAuth::Signature::PLAINTEXT
-        else
-          raise InsecureSignatureMethod
-        end
-      when 'rsa-sha1': OAuth::Signature::RSA::SHA1
-      when 'sha1': raise InsecureSignatureMethod, oauth_request.signature_method
-      when 'md5': raise InsecureSignatureMethod, oauth_request.signature_method
-      else
-        raise UnknownSignatureMethod, oauth_request.signature_method
-      end
-
-      klass.new(oauth_request,consumer_secret,token_secret)
+    def self.available_methods
+      @available_methods ||= {}
     end
 
-    class UnknownSignatureMethod &lt; Exception; end
-
-    class InsecureSignatureMethod &lt; Exception; end
-
-    class Base
-      include OAuth::Key
-      
-      attr_accessor :request
-
-      def initialize(request,consumer_secret,token_secret=nil)
-        @request=request
-        @consumer_secret=consumer_secret
-        @token_secret=token_secret
-      end
-    
-      def base_string
-        [@request.http_method,@request.normalized_url,@request.to_query_without_signature].collect{|p| @request.escape(p)}.join('&amp;')
-      end
-    
-      def key
-        &quot;#{@consumer_secret}&amp;#{@token_secret}&quot;
-      end
-    
-      def consumer_secret
-        @consumer_secret||=&quot;&quot;
-      end
-
-      def token_secret
-        @token_secret||=&quot;&quot;
-      end
-    
-      def sign
-        Base64.encode64(digest).chomp
-      end
-    
-      def sign!
-        @request.signature=sign
-      end
-    
-      def verify?
-        return false unless @request.signed?
-        @request.signature==sign
-      end
-      
-      protected
-      
-      def digest
-        digest_class.digest(base_string)
-      end
+    def self.build(request, options = {}, &amp;block)
+      request = OAuth::RequestProxy.proxy(request, options)
+      klass = available_methods[(request.signature_method || &quot;&quot;).downcase]
+      raise UnknownSignatureMethod, request.signature_method unless klass
+      klass.new(request, options, &amp;block)
     end
-    
-    class PLAINTEXT &lt; Base
-
-      def sign
-        base_string
-      end
-
-      def base_string
-        &quot;#{escape(consumer_secret)}&amp;#{escape(token_secret)}&quot;
-      end
-
-      private
 
-      def digest; signature_base_string; end
+    def self.sign(request, options = {}, &amp;block)
+      self.build(request, options, &amp;block).signature
     end
-    
-    module HashedMessageAuth
-      class Base &lt; OAuth::Signature::Base
 
-        private
-
-        def digest
-          hmac_class.digest(secret, base_string)
-        end
-
-        def secret
-          &quot;#{escape(consumer_secret)}&amp;#{escape(token_secret)}&quot;
-        end
-      end
-
-      class MD5 &lt; Base
-        private
-        def hmac_class; HMAC::MD5; end
-      end
-
-      class RMD160 &lt; Base
-        private
-        def hmac_class; HMAC::RMD160; end
-      end
-
-      class SHA1 &lt; Base
-        private
-        def hmac_class; HMAC::SHA1; end
-      end
-
-      class SHA2 &lt; Base
-        private
-        def hmac_class; HMAC::SHA1; end
-      end
+    def self.verify(request, options = {}, &amp;block)
+      self.build(request, options, &amp;block).verify
     end
 
-    module RSA
-      class SHA1 &lt; OAuth::Signature::Base
-        def ==(cmp_signature)
-          public_key = OpenSSL::PKey::RSA.new(consumer_secret)
-          public_key.verify(OpenSSL::Digest::SHA1.new, cmp_signature, base_string)
-        end
-
-        private
-
-        def digest
-          private_key = OpenSSL::PKey::RSA.new(consumer_secret)
-          private_key.sign(OpenSSL::Digest::SHA1.new, base_string)
-        end
-      end
+    def self.signature_base_string(request, options = {}, &amp;block)
+      self.build(request, options, &amp;block).signature_base_string
     end
-    
+
+    class UnknownSignatureMethod &lt; Exception; end
   end
 end</diff>
      <filename>lib/oauth/signature.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,9 +1,10 @@
+require 'oauth/helper'
 module OAuth
   
   # Superclass for the various tokens used by OAuth
   
   class Token
-    include OAuth::Key
+    include OAuth::Helper
     
     attr_accessor :token, :secret
 
@@ -33,6 +34,21 @@ module OAuth
       super token,secret
       @consumer=consumer
     end
+    
+    # Make a signed request using given http_method to the path
+    #
+    #   @token.request(:get,'/people')
+    #   @token.request(:post,'/people',@person.to_xml,{ 'Content-Type' =&gt; 'application/xml' })
+    #
+    def request(http_method,path,*arguments)
+      response=consumer.request(http_method,path,self,{},*arguments)
+    end
+    
+    # Sign a request generated elsewhere using Net:HTTP::Post.new or friends
+    def sign!(request,options = {})
+      consumer.sign!(request,self,options)
+    end
+    
   end
 
   # The RequestToken is used for the initial Request.
@@ -45,9 +61,8 @@ module OAuth
     end
     
     # exchange for AccessToken on server
-    def get_access_token
-      request=consumer.create_request(consumer.http_method,consumer.access_token_path,{:oauth_token=&gt;self.token})
-      response=request.perform_token_request(consumer.secret,self.secret)
+    def get_access_token(options={})
+      response=consumer.token_request(consumer.http_method,consumer.access_token_path,self,options)
       OAuth::AccessToken.new(consumer,response[:oauth_token],response[:oauth_token_secret])
     end
   end
@@ -55,29 +70,54 @@ module OAuth
   # The Access Token is used for the actual &quot;real&quot; web service calls thatyou perform against the server
   class AccessToken&lt;ConsumerToken
     
+    # Make a regular get request using AccessToken
+    #
+    #   @response=@token.get('/people')
+    #   @response=@token.get('/people',{'Accept'=&gt;'application/xml'})
+    #
     def get(path,headers={})
-      perform(:get,path,headers)
+      request(:get,path,headers)
     end
     
+    # Make a regular head request using AccessToken
+    #
+    #   @response=@token.head('/people')
+    #
     def head(path,headers={})
-      perform(:head,path,headers)
+      request(:head,path,headers)
     end
 
+    # Make a regular post request using AccessToken
+    #
+    #   @response=@token.post('/people')
+    #   @response=@token.post('/people',{:name=&gt;'Bob',:email=&gt;'bob@mailinator.com'})
+    #   @response=@token.post('/people',{:name=&gt;'Bob',:email=&gt;'bob@mailinator.com'},{'Accept'=&gt;'application/xml'})
+    #   @response=@token.post('/people',nil,{'Accept'=&gt;'application/xml'})
+    #   @response=@token.post('/people',@person.to_xml,{'Accept'=&gt;'application/xml','Content-Type' =&gt; 'application/xml'})
+    #
     def post(path, body = '',headers={})
-      perform(:post,path,body,headers)
+      request(:post,path,body,headers)
     end
 
+    # Make a regular put request using AccessToken
+    #
+    #   @response=@token.put('/people/123')
+    #   @response=@token.put('/people/123',{:name=&gt;'Bob',:email=&gt;'bob@mailinator.com'})
+    #   @response=@token.put('/people/123',{:name=&gt;'Bob',:email=&gt;'bob@mailinator.com'},{'Accept'=&gt;'application/xml'})
+    #   @response=@token.put('/people/123',nil,{'Accept'=&gt;'application/xml'})
+    #   @response=@token.put('/people/123',@person.to_xml,{'Accept'=&gt;'application/xml','Content-Type' =&gt; 'application/xml'})
+    #
     def put(path, body = '', headers={})
-      perform(:put,path,body,headers)
+      request(:put,path,body,headers)
     end
     
+    # Make a regular delete request using AccessToken
+    #
+    #   @response=@token.delete('/people/123')
+    #   @response=@token.delete('/people/123',{'Accept'=&gt;'application/xml'})
+    #
     def delete(path,headers={})
-      perform(:delete,path,headers)
-    end
-
-    def perform(http_method,path,*arguments)
-      request=consumer.create_request(http_method,path,{:oauth_token=&gt;self.token},*arguments)
-      response=request.perform(consumer.secret,self.secret)
+      request(:delete,path,headers)
     end
   end
 end</diff>
      <filename>lib/oauth/token.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,8 @@
 module Oauth #:nodoc:
   module VERSION #:nodoc:
     MAJOR = 0
-    MINOR = 1
-    TINY  = 2
+    MINOR = 2
+    TINY  = 0
 
     STRING = [MAJOR, MINOR, TINY].join('.')
   end</diff>
      <filename>lib/oauth/version.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,41 +1,49 @@
 require 'test/unit'
-require 'oauth'
+require 'oauth/consumer'
 
 # 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 &lt; Test::Unit::TestCase
   def setup
-    @consumer=OAuth::Consumer.new( {
-        :consumer_key=&gt;&quot;key&quot;,
-        :consumer_secret=&gt;&quot;secret&quot;,
-        :site=&gt;&quot;http://term.ie&quot;,
+    @consumer=OAuth::Consumer.new( 
+        'consumer_key_86cad9', '5888bf0345e5d237',
+        {
+        :site=&gt;&quot;http://blabla.bla&quot;,
         :request_token_path=&gt;&quot;/oauth/example/request_token.php&quot;,
         :access_token_path=&gt;&quot;/oauth/example/access_token.php&quot;,
         :authorize_path=&gt;&quot;/oauth/example/authorize.php&quot;,
-        :auth_method=&gt;:query,
+        :scheme=&gt;:header,
         :http_method=&gt;:get
         })
+    @token = OAuth::ConsumerToken.new(@consumer,'token_411a7f', '3196ffd991c8ebdb')
+    @request_uri = URI.parse('http://example.com/test?key=value')
+    @request_parameters = { 'key' =&gt; 'value' }
+    @nonce = 225579211881198842005988698334675835446
+    @timestamp = &quot;1199645624&quot;
+    @consumer.http=Net::HTTP.new(@request_uri.host, @request_uri.port)
   end
   
   def test_initializer
-    assert_equal &quot;key&quot;,@consumer.key
-    assert_equal &quot;secret&quot;,@consumer.secret
-    assert_equal &quot;http://term.ie&quot;,@consumer.site
+    assert_equal &quot;consumer_key_86cad9&quot;,@consumer.key
+    assert_equal &quot;5888bf0345e5d237&quot;,@consumer.secret
+    assert_equal &quot;http://blabla.bla&quot;,@consumer.site
     assert_equal &quot;/oauth/example/request_token.php&quot;,@consumer.request_token_path
     assert_equal &quot;/oauth/example/access_token.php&quot;,@consumer.access_token_path
-    assert_equal &quot;http://term.ie/oauth/example/request_token.php&quot;,@consumer.request_token_url
-    assert_equal &quot;http://term.ie/oauth/example/access_token.php&quot;,@consumer.access_token_url
-    assert_equal :query,@consumer.auth_method
+    assert_equal &quot;http://blabla.bla/oauth/example/request_token.php&quot;,@consumer.request_token_url
+    assert_equal &quot;http://blabla.bla/oauth/example/access_token.php&quot;,@consumer.access_token_url
+    assert_equal &quot;http://blabla.bla/oauth/example/authorize.php&quot;,@consumer.authorize_url
+    assert_equal :header,@consumer.scheme
     assert_equal :get,@consumer.http_method
   end
 
   def test_defaults
-    @consumer=OAuth::Consumer.new( {
-        :consumer_key=&gt;&quot;key&quot;,
-        :consumer_secret=&gt;&quot;secret&quot;,
-        :site=&gt;&quot;http://twitter.com&quot;
-    })
+    @consumer=OAuth::Consumer.new(
+      &quot;key&quot;,
+      &quot;secret&quot;,
+      {
+          :site=&gt;&quot;http://twitter.com&quot;
+      })
     assert_equal &quot;key&quot;,@consumer.key
     assert_equal &quot;secret&quot;,@consumer.secret
     assert_equal &quot;http://twitter.com&quot;,@consumer.site
@@ -43,54 +51,126 @@ class ConsumerTest &lt; Test::Unit::TestCase
     assert_equal &quot;/oauth/access_token&quot;,@consumer.access_token_path
     assert_equal &quot;http://twitter.com/oauth/request_token&quot;,@consumer.request_token_url
     assert_equal &quot;http://twitter.com/oauth/access_token&quot;,@consumer.access_token_url
-    assert_equal :authorize,@consumer.auth_method
+    assert_equal &quot;http://twitter.com/oauth/authorize&quot;,@consumer.authorize_url
+    assert_equal :header,@consumer.scheme
     assert_equal :post,@consumer.http_method 
   end
-  
-  def test_create_request
-    request=@consumer.create_request :get,'/oauth/example/request_token.php'
-    assert_equal 'http://term.ie/oauth/example/request_token.php',request.url
-    assert &quot;key&quot;,request[:consumer_key]
-    assert !request.signed?
+
+  def test_override_paths
+    @consumer=OAuth::Consumer.new(
+      &quot;key&quot;,
+      &quot;secret&quot;,
+      {
+          :site=&gt;&quot;http://twitter.com&quot;,
+          :request_token_url=&gt;&quot;http://oauth.twitter.com/request_token&quot;,
+          :access_token_url=&gt;&quot;http://oauth.twitter.com/access_token&quot;,
+          :authorize_url=&gt;&quot;http://site.twitter.com/authorize&quot;
+      })
+    assert_equal &quot;key&quot;,@consumer.key
+    assert_equal &quot;secret&quot;,@consumer.secret
+    assert_equal &quot;http://twitter.com&quot;,@consumer.site
+    assert_equal &quot;/oauth/request_token&quot;,@consumer.request_token_path
+    assert_equal &quot;/oauth/access_token&quot;,@consumer.access_token_path
+    assert_equal &quot;http://oauth.twitter.com/request_token&quot;,@consumer.request_token_url
+    assert_equal &quot;http://oauth.twitter.com/access_token&quot;,@consumer.access_token_url
+    assert_equal &quot;http://site.twitter.com/authorize&quot;,@consumer.authorize_url
+    assert_equal :header,@consumer.scheme
+    assert_equal :post,@consumer.http_method 
   end
-  
-  def test_create_post_request
-    request=@consumer.create_request(:post,'/oauth/example',{:oauth_token=&gt;&quot;token&quot;},&quot;BODY&quot;)
-    assert_equal &quot;token&quot;,request[:oauth_token]
-    assert_equal &quot;BODY&quot;,request.body
+
+  def test_that_signing_auth_headers_on_get_requests_works
+    request = Net::HTTP::Get.new(@request_uri.path + &quot;?&quot; + request_parameters_to_s)
+    @token.sign!(request, {:nonce =&gt; @nonce, :timestamp =&gt; @timestamp})
+    
+    assert_equal 'GET', request.method
+    assert_equal '/test?key=value', request.path
+    assert_equal &quot;OAuth realm=\&quot;\&quot;, oauth_nonce=\&quot;225579211881198842005988698334675835446\&quot;, oauth_signature_method=\&quot;HMAC-SHA1\&quot;, oauth_token=\&quot;token_411a7f\&quot;, oauth_timestamp=\&quot;1199645624\&quot;, oauth_consumer_key=\&quot;consumer_key_86cad9\&quot;, oauth_signature=\&quot;1oO2izFav1GP4kEH2EskwXkCRFg%3D\&quot;, oauth_version=\&quot;1.0\&quot;&quot;, request['authorization']
   end
 
-  def test_create_put_request
-    request=@consumer.create_request(:put,'/oauth/example',{:oauth_token=&gt;&quot;token&quot;},&quot;BODY&quot;)
-    assert_equal &quot;token&quot;,request[:oauth_token]
-    assert_equal &quot;BODY&quot;,request.body
+  def test_that_signing_auth_headers_on_post_requests_works
+    request = Net::HTTP::Post.new(@request_uri.path)
+    request.set_form_data( @request_parameters )
+    @token.sign!(request, {:nonce =&gt; @nonce, :timestamp =&gt; @timestamp})
+#    assert_equal &quot;&quot;,request.oauth_helper.signature_base_string
+
+    assert_equal 'POST', request.method
+    assert_equal '/test', request.path
+    assert_equal 'key=value', request.body
+    assert_equal &quot;OAuth realm=\&quot;\&quot;, oauth_nonce=\&quot;225579211881198842005988698334675835446\&quot;, oauth_signature_method=\&quot;HMAC-SHA1\&quot;, oauth_token=\&quot;token_411a7f\&quot;, oauth_timestamp=\&quot;1199645624\&quot;, oauth_consumer_key=\&quot;consumer_key_86cad9\&quot;, oauth_signature=\&quot;26g7wHTtNO6ZWJaLltcueppHYiI%3D\&quot;, oauth_version=\&quot;1.0\&quot;&quot;, request['authorization']
   end
-  
-  def test_signed_request
-    request=@consumer.signed_request :get,'/oauth/example/request_token.php'
-    assert_equal 'http://term.ie/oauth/example/request_token.php',request.url
-    assert &quot;key&quot;,request[:consumer_key]
-    assert request.signed?
-    assert request.verify?(@consumer.secret)        
+ 
+  def test_that_signing_post_params_works
+    request = Net::HTTP::Post.new(@request_uri.path)
+    request.set_form_data( @request_parameters )
+    @token.sign!(request, {:scheme =&gt; 'body', :nonce =&gt; @nonce, :timestamp =&gt; @timestamp})
+
+    assert_equal 'POST', request.method
+    assert_equal '/test', request.path
+    assert_equal &quot;key=value&amp;oauth_consumer_key=consumer_key_86cad9&amp;oauth_nonce=225579211881198842005988698334675835446&amp;oauth_signature=iMZaUTbQof%2fHMFyIde%2bOIkhW5is%3d&amp;oauth_signature_method=HMAC-SHA1&amp;oauth_timestamp=1199645624&amp;oauth_token=token_411a7f&amp;oauth_version=1.0&quot;, request.body.split(&quot;&amp;&quot;).sort.join(&quot;&amp;&quot;)
+    assert_equal nil, request['authorization']
   end
-  
-  def test_create_signed_post_request
-    request=@consumer.signed_request(:post,'/oauth/example',{:oauth_token=&gt;&quot;token&quot;},'token secret',&quot;BODY&quot;)
-    assert_equal &quot;token&quot;,request[:oauth_token]
-    assert_equal &quot;BODY&quot;,request.body
-    assert request.signed?
-    assert request.verify?(@consumer.secret,'token secret')        
+
+  def test_that_using_auth_headers_on_get_on_create_signed_requests_works
+    request=@consumer.create_signed_request(:get,@request_uri.path+ &quot;?&quot; + request_parameters_to_s,@token,{:nonce =&gt; @nonce, :timestamp =&gt; @timestamp},@request_parameters)
+    
+    assert_equal 'GET', request.method
+    assert_equal '/test?key=value', request.path
+    assert_equal &quot;OAuth realm=\&quot;\&quot;, oauth_nonce=\&quot;225579211881198842005988698334675835446\&quot;, oauth_signature_method=\&quot;HMAC-SHA1\&quot;, oauth_token=\&quot;token_411a7f\&quot;, oauth_timestamp=\&quot;1199645624\&quot;, oauth_consumer_key=\&quot;consumer_key_86cad9\&quot;, oauth_signature=\&quot;1oO2izFav1GP4kEH2EskwXkCRFg%3D\&quot;, oauth_version=\&quot;1.0\&quot;&quot;, request['authorization']
+  end
+
+  def test_that_using_auth_headers_on_post_on_create_signed_requests_works
+    request=@consumer.create_signed_request(:post,@request_uri.path,@token,{:nonce =&gt; @nonce, :timestamp =&gt; @timestamp},@request_parameters,{})
+    assert_equal 'POST', request.method
+    assert_equal '/test', request.path
+    assert_equal 'key=value', request.body
+    assert_equal &quot;OAuth realm=\&quot;\&quot;, oauth_nonce=\&quot;225579211881198842005988698334675835446\&quot;, oauth_signature_method=\&quot;HMAC-SHA1\&quot;, oauth_token=\&quot;token_411a7f\&quot;, oauth_timestamp=\&quot;1199645624\&quot;, oauth_consumer_key=\&quot;consumer_key_86cad9\&quot;, oauth_signature=\&quot;26g7wHTtNO6ZWJaLltcueppHYiI%3D\&quot;, oauth_version=\&quot;1.0\&quot;&quot;, request['authorization']
+  end
+
+  def test_that_signing_post_params_works
+    request=@consumer.create_signed_request(:post,@request_uri.path,@token,{:scheme =&gt; 'body', :nonce =&gt; @nonce, :timestamp =&gt; @timestamp},@request_parameters,{})
+
+    assert_equal 'POST', request.method
+    assert_equal '/test', request.path
+    assert_equal &quot;key=value&amp;oauth_consumer_key=consumer_key_86cad9&amp;oauth_nonce=225579211881198842005988698334675835446&amp;oauth_signature=26g7wHTtNO6ZWJaLltcueppHYiI%3d&amp;oauth_signature_method=HMAC-SHA1&amp;oauth_timestamp=1199645624&amp;oauth_token=token_411a7f&amp;oauth_version=1.0&quot;, request.body.split(&quot;&amp;&quot;).sort.join(&quot;&amp;&quot;)
+    assert_equal nil, request['authorization']
   end
   
-  def test_create_signed_put_request
-    request=@consumer.signed_request(:put,'/oauth/example',{:oauth_token=&gt;&quot;token&quot;},'token secret',&quot;BODY&quot;)
-    assert_equal &quot;token&quot;,request[:oauth_token]
-    assert_equal &quot;BODY&quot;,request.body
-    assert request.signed?
-    assert request.verify?(@consumer.secret,'token secret')        
+  def test_step_by_step_token_request
+    @consumer=OAuth::Consumer.new( 
+        &quot;key&quot;,
+        &quot;secret&quot;,
+        {
+        :site=&gt;&quot;http://term.ie&quot;,
+        :request_token_path=&gt;&quot;/oauth/example/request_token.php&quot;,
+        :access_token_path=&gt;&quot;/oauth/example/access_token.php&quot;,
+        :authorize_path=&gt;&quot;/oauth/example/authorize.php&quot;,
+        :scheme=&gt;:header
+        })
+    options={:nonce=&gt;'nonce',:timestamp=&gt;Time.now.to_i.to_s}
+ 
+    request = Net::HTTP::Get.new(&quot;/oauth/example/request_token.php&quot;)
+    signature_base_string=@consumer.signature_base_string(request,nil,options)
+    assert_equal &quot;GET&amp;http%3A%2F%2Fterm.ie%2Foauth%2Fexample%2Frequest_token.php&amp;oauth_consumer_key%3Dkey%26oauth_nonce%3D#{options[:nonce]}%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D#{options[:timestamp]}%26oauth_token%3D%26oauth_version%3D1.0&quot;,signature_base_string
+    @consumer.sign!(request, nil,options)
+
+    assert_equal 'GET', request.method
+    assert_equal nil, request.body
+    response=@consumer.http.request(request)
+    assert_equal &quot;200&quot;,response.code
+    assert_equal &quot;oauth_token=requestkey&amp;oauth_token_secret=requestsecret&quot;,response.body
   end
   
-  def test_get_token_sequence
+  def test_get_token_sequence  
+    @consumer=OAuth::Consumer.new( 
+        &quot;key&quot;,
+        &quot;secret&quot;,
+        {
+        :site=&gt;&quot;http://term.ie&quot;,
+        :request_token_path=&gt;&quot;/oauth/example/request_token.php&quot;,
+        :access_token_path=&gt;&quot;/oauth/example/access_token.php&quot;,
+        :authorize_path=&gt;&quot;/oauth/example/authorize.php&quot;
+        })
+    
     @request_token=@consumer.get_request_token
     assert_not_nil @request_token
     assert_equal &quot;requestkey&quot;,@request_token.token
@@ -107,10 +187,17 @@ class ConsumerTest &lt; Test::Unit::TestCase
     assert_equal &quot;200&quot;,@response.code
     assert_equal( &quot;ok=hello&amp;test=this&quot;,@response.body)
     
-    @response=@access_token.post(&quot;/oauth/example/echo_api.php&quot;,&quot;ok=hello&amp;test=this&quot;)
+    @response=@access_token.post(&quot;/oauth/example/echo_api.php&quot;,{'ok'=&gt;'hello','test'=&gt;'this'})
     assert_not_nil @response
     assert_equal &quot;200&quot;,@response.code
-    assert_equal( &quot;ok=hello&amp;test=this&quot;,@response.body)
-    
+    assert_equal( &quot;ok=hello&amp;test=this&quot;,@response.body)    
   end
+  protected
+
+  def request_parameters_to_s
+    @request_parameters.map { |k,v| &quot;#{k}=#{v}&quot; }.join(&quot;&amp;&quot;)
+  end
+
+  
 end
+</diff>
      <filename>test/test_consumer.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,2 +1,6 @@
 require 'test/unit'
 require File.dirname(__FILE__) + '/../lib/oauth'
+
+def requests(request)
+  Marshal.load(File.read(File.dirname(__FILE__) + '/fixtures/' + request))
+end</diff>
      <filename>test/test_helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 require 'test/unit'
-require 'oauth'
+require 'oauth/server'
 class ServerTest &lt; Test::Unit::TestCase
   def setup
     @server=OAuth::Server.new &quot;http://test.com&quot;
@@ -37,11 +37,4 @@ class ServerTest &lt; Test::Unit::TestCase
     assert_equal &quot;http://test.com/oauth/access_token&quot;,@consumer.access_token_url
   end  
   
-  def test_verify_request
-    @consumer=@server.create_consumer 
-    @request=@consumer.signed_request :get,@consumer.request_token_path
-    assert @request.signed?
-    
-    assert @request.verify?(@consumer.secret)
-  end
 end</diff>
      <filename>test/test_server.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,113 +1,11 @@
-require 'test/unit'
-require 'oauth'
-class SignatureTest &lt; Test::Unit::TestCase
-  def setup
-    # From example in Apendix A of the spec
-    @consumer_secret=&quot;kd94hf93k423kf44&quot;
-    @token_secret=&quot;pfkkdhi9sl3r4s00&quot;
-    @test_params={
-      :oauth_consumer_key=&gt;&quot;dpf43f3p2l4k3l03&quot;,
-      :oauth_token=&gt;&quot;nnch734d00sl2jdk&quot;,
-      :oauth_timestamp=&gt;&quot;1191242096&quot;,
-      :oauth_nonce=&gt;&quot;kllo9940pd9333jh&quot;
-    }
-    
-    @request=OAuth::Request.new( :get,'http://photos.example.net','/photos?file=vacation.jpg&amp;size=original', @test_params)
-    @signature=OAuth::Signature.create(@request,@consumer_secret,@token_secret)
-  end
-  
-  def test_base_string
-    from_spec=&quot;GET&amp;http%3A%2F%2Fphotos.example.net%2Fphotos&amp;file%3Dvacation.jpg%26oauth_consumer_key%3Ddpf43f3p2l4k3l03%26oauth_nonce%3Dkllo9940pd9333jh%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1191242096%26oauth_token%3Dnnch734d00sl2jdk%26oauth_version%3D1.0%26size%3Doriginal&quot;
-    assert_equal from_spec,@signature.base_string
-  end
-
-  def test_base_string_with_post_params
-    @request=OAuth::Request.new( :post,'http://photos.example.net','/photos', @test_params,'file=vacation.jpg&amp;size=original')
-    @signature=OAuth::Signature.create(@request,@consumer_secret,@token_secret)
-    from_spec=&quot;POST&amp;http%3A%2F%2Fphotos.example.net%2Fphotos&amp;file%3Dvacation.jpg%26oauth_consumer_key%3Ddpf43f3p2l4k3l03%26oauth_nonce%3Dkllo9940pd9333jh%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1191242096%26oauth_token%3Dnnch734d00sl2jdk%26oauth_version%3D1.0%26size%3Doriginal&quot;
-    assert_equal from_spec,@signature.base_string
-  end
-  
-  def test_signature_key
-    assert_equal &quot;kd94hf93k423kf44&amp;pfkkdhi9sl3r4s00&quot;,@signature.key
-  end
-  
-  def test_signature
-    assert_equal &quot;tR3+Ty81lMeYAr/Fid0kMTYa/WM=&quot;,@signature.sign
-  end
-  
-  def test_sign_hmac_sha1  
-    assert !@request.signed?
-    assert !@signature.verify?
-    @signature.sign!
-    assert @request.signed?
-    assert @signature.verify?
-  end
-
-  def test_sign_hmac_md5
-    @request.signature_method=&quot;hmac-md5&quot;
-    @signature=OAuth::Signature.create(@request,@consumer_secret,@token_secret)
-    
-    assert !@request.signed?
-    assert !@signature.verify?
-    @signature.sign!
-    assert @request.signed?
-    assert @signature.verify?
-  end
-
-  def test_sign_hmac_sha2
-    @request.signature_method=&quot;hmac-sha2&quot;
-    @signature=OAuth::Signature.create(@request,@consumer_secret,@token_secret)
-    
-    assert !@request.signed?
-    assert !@signature.verify?
-    @signature.sign!
-    assert @request.signed?
-    assert @signature.verify?
-  end
-
-  def test_sign_hmac_rmd160
-    @request.signature_method=&quot;hmac-rmd160&quot;
-    @signature=OAuth::Signature.create(@request,@consumer_secret,@token_secret)
-    
-    assert !@request.signed?
-    assert !@signature.verify?
-    @signature.sign!
-    assert @request.signed?
-    assert @signature.verify?
-  end
-
-  def test_sign_plain_with_https
-    @request.site='https://photos.example.net'
-    @request.signature_method=&quot;plaintext&quot;
-    @signature=OAuth::Signature.create(@request,@consumer_secret,@token_secret)
-    
-    assert !@request.signed?
-    assert !@signature.verify?
-    @signature.sign!
-    assert @request.signed?
-    assert @signature.verify?
-  end
-
-  def test_sign_plain_with_http
-    @request.signature_method=&quot;plaintext&quot;
-    assert_raise(OAuth::Signature::InsecureSignatureMethod) do
-      OAuth::Signature.create(@request,@consumer_secret,@token_secret)
-    end
-  end
-
-  def test_sign_sha1
-    @request.signature_method=&quot;sha1&quot;
-    assert_raise(OAuth::Signature::InsecureSignatureMethod) do
-      OAuth::Signature.create(@request,@consumer_secret,@token_secret)
-    end
-  end
-
-  def test_sign_md5
-    @request.signature_method=&quot;md5&quot;
-    assert_raise(OAuth::Signature::InsecureSignatureMethod) do
-      OAuth::Signature.create(@request,@consumer_secret,@token_secret)
-    end
-  end
-
-end
+require File.dirname(__FILE__) + '/test_helper.rb'
+
+class TestOauth &lt; Test::Unit::TestCase
+
+  def setup
+  end
+  
+  def test_truth
+    assert true
+  end
+end</diff>
      <filename>test/test_signature.rb</filename>
    </modified>
    <modified>
      <diff>@@ -33,7 +33,7 @@
     &lt;h1&gt;Ruby OAuth GEM&lt;/h1&gt;
     &lt;div id=&quot;version&quot; class=&quot;clickable&quot; onclick='document.location = &quot;http://rubyforge.org/projects/oauth&quot;; return false'&gt;
       &lt;p&gt;Get Version&lt;/p&gt;
-      &lt;a href=&quot;http://rubyforge.org/projects/oauth&quot; class=&quot;numbers&quot;&gt;0.1.1&lt;/a&gt;
+      &lt;a href=&quot;http://rubyforge.org/projects/oauth&quot; class=&quot;numbers&quot;&gt;0.2.0&lt;/a&gt;
     &lt;/div&gt;
     &lt;h2&gt;What&lt;/h2&gt;
 
@@ -41,7 +41,7 @@
 	&lt;p&gt;This is a RubyGem for implementing both OAuth clients and servers in Ruby applications.&lt;/p&gt;
 
 
-	&lt;p&gt;See the &lt;a href=&quot;http://oauth.googlecode.com/svn/spec/branches/1.0/drafts/7/spec.html&quot;&gt;OAuth specs&lt;/a&gt;&lt;/p&gt;
+	&lt;p&gt;See the &lt;a href=&quot;http://oauth.net/core/1.0/&quot;&gt;OAuth specs&lt;/a&gt;&lt;/p&gt;
 
 
 	&lt;h2&gt;Installing&lt;/h2&gt;
@@ -50,6 +50,9 @@
 	&lt;p&gt;&lt;pre class='syntax'&gt;&lt;span class=&quot;ident&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;gem&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;oauth&lt;/span&gt;&lt;/pre&gt;&lt;/p&gt;
 
 
+	&lt;p&gt;You can also install it from the &lt;a href=&quot;http://rubyforge.org/projects/oauth/&quot;&gt;oauth rubyforge project&lt;/a&gt;.&lt;/p&gt;
+
+
 	&lt;h2&gt;The basics&lt;/h2&gt;
 
 
@@ -65,9 +68,7 @@
 	&lt;p&gt;Create a new consumer instance by passing it a configuration hash:&lt;/p&gt;
 
 
-&lt;pre&gt;&lt;code&gt;@consumer=OAuth::Consumer.new( {
-    :consumer_key=&amp;gt;&quot;key&quot;,
-    :consumer_secret=&amp;gt;&quot;secret&quot;,
+&lt;pre&gt;&lt;code&gt;@consumer=OAuth::Consumer.new( &quot;key&quot;,&quot;secret&quot;, {
     :site=&amp;gt;&quot;https://agree2&quot; 
     })&lt;/code&gt;&lt;/pre&gt;
 
@@ -108,7 +109,7 @@ redirect_to @request_token.authorize_url&lt;/code&gt;&lt;/pre&gt;
 	&lt;p&gt;Read the &lt;a href=&quot;http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/&quot;&gt;8 steps for fixing other people&amp;#8217;s code&lt;/a&gt; and for section &lt;a href=&quot;http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups&quot;&gt;8b: Submit patch to Google Groups&lt;/a&gt;, use the Google Group above.&lt;/p&gt;
 
 
-	&lt;p&gt;The trunk repository is &lt;code&gt;svn://rubyforge.org/var/svn/oauth/trunk&lt;/code&gt; for anonymous access.&lt;/p&gt;
+	&lt;p&gt;The trunk repository is &lt;code&gt;http://oauth.rubyforge.org/svn/trunk/&lt;/code&gt; for anonymous access.&lt;/p&gt;
 
 
 	&lt;h2&gt;License&lt;/h2&gt;
@@ -120,9 +121,9 @@ redirect_to @request_token.authorize_url&lt;/code&gt;&lt;/pre&gt;
 	&lt;h2&gt;Contact&lt;/h2&gt;
 
 
-	&lt;p&gt;Comments are welcome. Send an email to &lt;a href=&quot;mailto:pelleb@gmail.com&quot;&gt;Pelle Braendgaard&lt;/a&gt; email via the &lt;a href=&quot;http://groups.google.com/group/oauth&quot;&gt;forum&lt;/a&gt;&lt;/p&gt;
+	&lt;p&gt;Comments are welcome. Send an email to &lt;a href=&quot;mailto:pelleb@gmail.com&quot;&gt;Pelle Braendgaard&lt;/a&gt; email via the &lt;a href=&quot;http://groups.google.com/group/oauth-ruby&quot;&gt;OAuth Ruby mailing list&lt;/a&gt;&lt;/p&gt;
     &lt;p class=&quot;coda&quot;&gt;
-      &lt;a href=&quot;FIXME email&quot;&gt;FIXME full name&lt;/a&gt;, 26th November 2007&lt;br&gt;
+      &lt;a href=&quot;FIXME email&quot;&gt;FIXME full name&lt;/a&gt;, 21st January 2008&lt;br&gt;
       Theme extended from &lt;a href=&quot;http://rb2js.rubyforge.org/&quot;&gt;Paul Battley&lt;/a&gt;
     &lt;/p&gt;
 &lt;/div&gt;</diff>
      <filename>website/index.html</filename>
    </modified>
    <modified>
      <diff>@@ -4,7 +4,7 @@ h2. What
 
 This is a RubyGem for implementing both OAuth clients and servers in Ruby applications.
 
-See the &quot;OAuth specs&quot;:http://oauth.googlecode.com/svn/spec/branches/1.0/drafts/7/spec.html
+See the &quot;OAuth specs&quot;:http://oauth.net/core/1.0/
 
 h2. Installing
 
@@ -22,9 +22,7 @@ h2. Demonstration of usage
 
 Create a new consumer instance by passing it a configuration hash:
 
-&lt;pre&gt;&lt;code&gt;@consumer=OAuth::Consumer.new( {
-    :consumer_key=&gt;&quot;key&quot;,
-    :consumer_secret=&gt;&quot;secret&quot;,
+&lt;pre&gt;&lt;code&gt;@consumer=OAuth::Consumer.new( &quot;key&quot;,&quot;secret&quot;, {
     :site=&gt;&quot;https://agree2&quot;
     })&lt;/code&gt;&lt;/pre&gt;
 
@@ -55,7 +53,7 @@ h2. How to submit patches
 
 Read the &quot;8 steps for fixing other people's code&quot;:http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/ and for section &quot;8b: Submit patch to Google Groups&quot;:http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups, use the Google Group above.
 
-The trunk repository is &lt;code&gt;svn://rubyforge.org/var/svn/oauth/trunk&lt;/code&gt; for anonymous access.
+The trunk repository is &lt;code&gt;http://oauth.rubyforge.org/svn/trunk/&lt;/code&gt; for anonymous access.
 
 h2. License
 
@@ -63,5 +61,5 @@ This code is free to use under the terms of the MIT license.
 
 h2. Contact
 
-Comments are welcome. Send an email to &quot;Pelle Braendgaard&quot;:mailto:pelleb@gmail.com email via the &quot;forum&quot;:http://groups.google.com/group/oauth
+Comments are welcome. Send an email to &quot;Pelle Braendgaard&quot;:mailto:pelleb@gmail.com email via the &quot;OAuth Ruby mailing list&quot;:http://groups.google.com/group/oauth-ruby
 </diff>
      <filename>website/index.txt</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>lib/oauth/consumer_credentials.rb</filename>
    </removed>
    <removed>
      <filename>lib/oauth/key.rb</filename>
    </removed>
    <removed>
      <filename>lib/oauth/request.rb</filename>
    </removed>
    <removed>
      <filename>test/test_oauth.rb</filename>
    </removed>
    <removed>
      <filename>test/test_request.rb</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>fe1a4ab84c19a41d31b855646f1584f93082baac</id>
    </parent>
  </parents>
  <author>
    <name>Pelle Braendgaard</name>
    <email>pelleb@gmail.com</email>
  </author>
  <url>http://github.com/pelle/oauth/commit/51a95e48501618fc9b12858f7078cee8a367672f</url>
  <id>51a95e48501618fc9b12858f7078cee8a367672f</id>
  <committed-date>2008-01-21T11:13:42-08:00</committed-date>
  <authored-date>2008-01-21T11:13:42-08:00</authored-date>
  <message>Changes from http://oauth.googlecode.com/svn/code/ruby/oauth/ merged in</message>
  <tree>ff0ddd97f24999908e6dbf21401c5a8d6c2eaf01</tree>
  <committer>
    <name>Pelle Braendgaard</name>
    <email>pelleb@gmail.com</email>
  </committer>
</commit>
