]> git.openstreetmap.org Git - rails.git/blobdiff - config/initializers/oauth.rb
Move more api-only methods into api_controller
[rails.git] / config / initializers / oauth.rb
index 3b4f06a2e66277c2856ca87650fea36b0b264d59..122c2e6513838eb90b609c15701592193a65c049 100644 (file)
@@ -47,6 +47,26 @@ module OpenStreetMap
       end
     end
   end
       end
     end
   end
+
+  module OAuthFilter
+    def oauth1_verify(request, options = {}, &block)
+      signature = OAuth::Signature.build(request, options, &block)
+      return false unless OauthNonce.remember(signature.request.nonce, signature.request.timestamp)
+
+      value = signature.verify
+      if request.ssl? && !value
+        http_request = request.dup
+        http_request.define_singleton_method(:scheme) { "http" }
+        http_request.define_singleton_method(:port) { 80 }
+        signature = OAuth::Signature.build(http_request, options, &block)
+        value = signature.verify
+      end
+      value
+    rescue OAuth::Signature::UnknownSignatureMethod
+      false
+    end
+  end
 end
 
 OAuth::Controllers::ProviderController.prepend(OpenStreetMap::ProviderController)
 end
 
 OAuth::Controllers::ProviderController.prepend(OpenStreetMap::ProviderController)
+OAuth::Rack::OAuthFilter.prepend(OpenStreetMap::OAuthFilter)