Sha256: 5ab59edbd91b6ad765f8d5c59e77091e4ee066ae69a6567edb2f9bfccedad911

Contents?: true

Size: 1001 Bytes

Versions: 28

Compression:

Stored size: 1001 Bytes

Contents

module Mongrel
  # This class implements a simple way of constructing the HTTP headers dynamically
  # via a Hash syntax.  Think of it as a write-only Hash.  Refer to HttpResponse for
  # information on how this is used.
  #
  # One consequence of this write-only nature is that you can write multiple headers
  # by just doing them twice (which is sometimes needed in HTTP), but that the normal
  # semantics for Hash (where doing an insert replaces) is not there.
  class HeaderOut
    attr_reader :out
    attr_accessor :allowed_duplicates

    def initialize(out)
      @sent = {}
      @allowed_duplicates = {"Set-Cookie" => true, "Set-Cookie2" => true,
        "Warning" => true, "WWW-Authenticate" => true}
      @out = out
    end

    # Simply writes "#{key}: #{value}" to an output buffer.
    def[]=(key,value)
      if not @sent.has_key?(key) or @allowed_duplicates.has_key?(key)
        @sent[key] = true
        @out.write(Const::HEADER_FORMAT % [key, value])
      end
    end
  end
end

Version data entries

28 entries across 28 versions & 8 rubygems

Version Path
engineyard-mongrel-1.1.4 lib/mongrel/header_out.rb
freels-mongrel-1.1.2 lib/mongrel/header_out.rb
headius-mongrel-1.1.6.1 lib/mongrel/header_out.rb
phurley-mongrel-1.1.6.1 lib/mongrel/header_out.rb
mongrel-maglev--1.1.9.0.1 lib/mongrel/header_out.rb
merb-core-1.1.3 spec10/public/webrat/test_app/gems/gems/mongrel-1.1.5/lib/mongrel/header_out.rb
merb-core-1.1.2 spec10/public/webrat/test_app/gems/gems/mongrel-1.1.5/lib/mongrel/header_out.rb
merb-core-1.1.1 spec10/public/webrat/test_app/gems/gems/mongrel-1.1.5/lib/mongrel/header_out.rb
merb-core-1.1.0 spec10/public/webrat/test_app/gems/gems/mongrel-1.1.5/lib/mongrel/header_out.rb
mongrel-1.2.0.pre2-x86-mswin32 lib/mongrel/header_out.rb
mongrel-1.2.0.pre2-x86-mingw32 lib/mongrel/header_out.rb
mongrel-1.2.0.pre2 lib/mongrel/header_out.rb
merb-core-1.1.0.rc1 spec10/public/webrat/test_app/gems/gems/mongrel-1.1.5/lib/mongrel/header_out.rb
sho-mongrel-1.1.5 lib/mongrel/header_out.rb
merb-core-1.1.0.pre spec10/public/webrat/test_app/gems/gems/mongrel-1.1.5/lib/mongrel/header_out.rb
mongrel-1.1.3-java lib/mongrel/header_out.rb
mongrel-1.1.1 lib/mongrel/header_out.rb
mongrel-1.1.3 lib/mongrel/header_out.rb
mongrel-1.1.2-java lib/mongrel/header_out.rb
mongrel-1.1.2 lib/mongrel/header_out.rb