diff options
author | Joshua Peek <josh@joshpeek.com> | 2011-01-03 18:08:18 -0600 |
---|---|---|
committer | Joshua Peek <josh@joshpeek.com> | 2011-01-03 18:08:18 -0600 |
commit | d7a3bb21684557b55920cc48d6011be528279421 (patch) | |
tree | e4ec9f8aba15151c8d76a0e5cf27dc34eb780d53 | |
parent | 66ef0e47ea4ea2958c25aa33370b7d74a286a22c (diff) | |
download | rack-d7a3bb21684557b55920cc48d6011be528279421.tar.gz |
Extract Request#base_url
-rw-r--r-- | lib/rack/request.rb | 10 | ||||
-rw-r--r-- | test/spec_request.rb | 9 |
2 files changed, 14 insertions, 5 deletions
diff --git a/lib/rack/request.rb b/lib/rack/request.rb index 5a36d4d6..49240f17 100644 --- a/lib/rack/request.rb +++ b/lib/rack/request.rb @@ -248,8 +248,7 @@ module Rack @env["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest" end - # Tries to return a remake of the original request URL as a string. - def url + def base_url url = scheme + "://" url << host @@ -258,11 +257,14 @@ module Rack url << ":#{port}" end - url << fullpath - url end + # Tries to return a remake of the original request URL as a string. + def url + base_url + fullpath + end + def path script_name + path_info end diff --git a/test/spec_request.rb b/test/spec_request.rb index f3339669..6765edca 100644 --- a/test/spec_request.rb +++ b/test/spec_request.rb @@ -360,6 +360,13 @@ describe Rack::Request do req.env.should == e end + should "restore the base URL" do + Rack::Request.new(Rack::MockRequest.env_for("")).base_url. + should.equal "http://example.org" + Rack::Request.new(Rack::MockRequest.env_for("", "SCRIPT_NAME" => "/foo")).base_url. + should.equal "http://example.org" + end + should "restore the URL" do Rack::Request.new(Rack::MockRequest.env_for("")).url. should.equal "http://example.org/" @@ -550,7 +557,7 @@ EOF lambda { req.POST }.should.raise(EOFError) end - + should "correctly parse the part name from Content-Id header" do input = <<EOF --AaB03x\r |