From fc1964d47cfb15c6a1b37db7b4c9ce0a27ae2ccb Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Sun, 7 Dec 2008 11:14:49 -0600 Subject: [PATCH] Add experimental TimeZone middleware --- lib/rack/contrib.rb | 1 + lib/rack/time_zone.rb | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 lib/rack/time_zone.rb diff --git a/lib/rack/contrib.rb b/lib/rack/contrib.rb index 2670ed80..4dc77579 100644 --- a/lib/rack/contrib.rb +++ b/lib/rack/contrib.rb @@ -14,4 +14,5 @@ def self.release autoload :MailExceptions, "rack/mailexceptions" autoload :PostBodyContentTypeParser, "rack/post_body_content_type_parser" autoload :Sendfile, "rack/sendfile" + autoload :TimeZone, "rack/time_zone" end diff --git a/lib/rack/time_zone.rb b/lib/rack/time_zone.rb new file mode 100644 index 00000000..bf8a78b6 --- /dev/null +++ b/lib/rack/time_zone.rb @@ -0,0 +1,25 @@ +module Rack + class TimeZone + Javascript = <<-EOJ + function setTimezoneCookie() { + var offset = (new Date()).getTimezoneOffset() + var date = new Date(); + date.setTime(date.getTime()+3600000); + document.cookie = "utc_offset="+offset+"; expires="+date.toGMTString();+"; path=/"; + } +EOJ + + def initialize(app) + @app = app + end + + def call(env) + request = Rack::Request.new(env) + if utc_offset = request.cookies["utc_offset"] + env["rack.timezone.utc_offset"] = -(utc_offset.to_i * 60) + end + + @app.call(env) + end + end +end