about summary refs log tree commit
path: root/lib/metropolis/deflate.rb
diff options
context:
space:
mode:
authorEric Wong <e@yhbt.net>2011-01-17 03:17:28 +0000
committerEric Wong <normalperson@yhbt.net>2011-01-17 09:18:31 +0000
commit2c913347a6e5cc8be776b14e1a177adec0fbd5b6 (patch)
tree8d001fa557ef23c66bc56aa6c2fba943e428382e /lib/metropolis/deflate.rb
parent34a18520286313a05edc9a927ac4bed95b05191c (diff)
downloadmetropolis-2c913347a6e5cc8be776b14e1a177adec0fbd5b6.tar.gz
use constants everywhere to reduce GC thrashing
This makes it easier to notice a typo, too.
Diffstat (limited to 'lib/metropolis/deflate.rb')
-rw-r--r--lib/metropolis/deflate.rb17
1 files changed, 10 insertions, 7 deletions
diff --git a/lib/metropolis/deflate.rb b/lib/metropolis/deflate.rb
index 438985e..c965033 100644
--- a/lib/metropolis/deflate.rb
+++ b/lib/metropolis/deflate.rb
@@ -4,28 +4,31 @@ require "zlib"
 # allows storing pre-deflated data on disk and serving it
 # as-is for clients that accept that deflate encoding
 module Metropolis::Deflate
+  include Metropolis::Constants
+  Compression = "deflate"
+
   def get(key, env)
     status, headers, body = r = super
-    if 200 == status && /\bdeflate\b/ !~ env['HTTP_ACCEPT_ENCODING']
+    if 200 == status && /\bdeflate\b/ !~ env[HTTP_ACCEPT_ENCODING]
       inflater = Zlib::Inflate.new(-Zlib::MAX_WBITS)
       body[0] = inflater.inflate(body[0]) << inflater.finish
       inflater.end
-      headers['Content-Length'] = body[0].size.to_s
-      headers.delete('Content-Encoding')
-      headers.delete('Vary')
+      headers[Content_Length] = body[0].size.to_s
+      headers.delete(Content_Encoding)
+      headers.delete(Vary)
     end
     r
   end
 
   def put(key, env)
-    Wrapper.new(env) if 'deflate' != env['HTTP_CONTENT_ENCODING']
+    Wrapper.new(env) if Compression != env[HTTP_CONTENT_ENCODING]
     super(key, env)
   end
 
   def self.extended(obj)
     obj.instance_eval do
-      @headers['Content-Encoding'] = 'deflate'
-      @headers['Vary'] = 'Accept-Encoding'
+      @headers[Content_Encoding] = Compression
+      @headers[Vary] = Accept_Encoding
     end
   end