Class: Mongrel::HeaderOut

Inherits:
Object
  • Object
show all
Defined in:
lib/mongrel.rb

Overview

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.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(out) ⇒ HeaderOut

Returns a new instance of HeaderOut.



339
340
341
342
343
344
# File 'lib/mongrel.rb', line 339

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

Instance Attribute Details

#allowed_duplicatesObject

Returns the value of attribute allowed_duplicates.



337
338
339
# File 'lib/mongrel.rb', line 337

def allowed_duplicates
  @allowed_duplicates
end

#outObject (readonly)

Returns the value of attribute out.



336
337
338
# File 'lib/mongrel.rb', line 336

def out
  @out
end

Instance Method Details

#[]=(key, value) ⇒ Object

Simply writes “#key: #value” to an output buffer.



347
348
349
350
351
352
# File 'lib/mongrel.rb', line 347

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