use Rack::Request#base_url for server_root
authorEric Wong <normalperson@yhbt.net>
Tue, 5 Mar 2013 03:48:44 +0000 (5 03:48 +0000)
committerEric Wong <normalperson@yhbt.net>
Tue, 5 Mar 2013 04:04:58 +0000 (5 04:04 +0000)
Nathan Paul Simons reported the need to include the port for
certain consumers.  Since we don't want to blindly add the port
for users on standard HTTP/HTTPS ports, we can use
Rack::Request#base_url to generate the URL for us.

Rack::Request#base_url is available since Rack 1.3.0

lib/local_openid.rb
local-openid.gemspec

index ab342a9..0edbf37 100644 (file)
@@ -160,11 +160,8 @@ class LocalOpenID < Sinatra::Base
     finalize_response(oidresp)
   end
 
-  # we're the provider for exactly one identity.  However, we do rely on
-  # being proxied and being hit with an appropriate HTTP Host: header.
-  # Don't expect OpenID consumers to handle port != 80.
   def server_root
-    "http://#{request.host}/"
+    "#{request.base_url}/"
   end
 
   def server
index 8b129db..da872b6 100644 (file)
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
   s.summary = summary
   s.rdoc_options = rdoc_options
   s.rubyforge_project = %q{qrp}
+  s.add_dependency(%q<rack>, ["~> 1.3"])
   s.add_dependency(%q<sinatra>, ["~> 1.0"])
   s.add_dependency(%q<ruby-openid>, ["~> 2.1.7"])
   # s.licenses = %w(AGPLv3) # accessor not compatible with older RubyGems