summary refs log tree commit
diff options
context:
space:
mode:
authorJoshua Peek <josh@joshpeek.com>2009-12-20 20:22:45 -0600
committerJoshua Peek <josh@joshpeek.com>2009-12-20 20:22:45 -0600
commite2a1a644efda64614e2b5cab3a4ff89e5fc6d642 (patch)
tree407b38859d4dba74d31c81f655fb24f8b7fc9f8a
parente1b3b3d278237f7c1c81aa6042a1d2ac28ab93bf (diff)
downloadrack-e2a1a644efda64614e2b5cab3a4ff89e5fc6d642.tar.gz
Request#user_agent
-rw-r--r--lib/rack/request.rb3
-rw-r--r--test/spec_rack_request.rb10
2 files changed, 13 insertions, 0 deletions
diff --git a/lib/rack/request.rb b/lib/rack/request.rb
index d5070257..e755d5c0 100644
--- a/lib/rack/request.rb
+++ b/lib/rack/request.rb
@@ -178,6 +178,9 @@ module Rack
     end
     alias referrer referer
 
+    def user_agent
+      @env['HTTP_USER_AGENT']
+    end
 
     def cookies
       return {}  unless @env["HTTP_COOKIE"]
diff --git a/test/spec_rack_request.rb b/test/spec_rack_request.rb
index fe000c24..2e6bb6b2 100644
--- a/test/spec_rack_request.rb
+++ b/test/spec_rack_request.rb
@@ -152,6 +152,16 @@ context "Rack::Request" do
     req.referer.should.equal "/"
   end
 
+  specify "user agent should be extracted correct" do
+    req = Rack::Request.new \
+      Rack::MockRequest.env_for("/", "HTTP_USER_AGENT" => "Mozilla/4.0 (compatible)")
+    req.user_agent.should.equal "Mozilla/4.0 (compatible)"
+
+    req = Rack::Request.new \
+      Rack::MockRequest.env_for("/")
+    req.user_agent.should.equal nil
+  end
+
   specify "can cache, but invalidates the cache" do
     req = Rack::Request.new \
       Rack::MockRequest.env_for("/?foo=quux", :input => "foo=bar&quux=bla")