Class: Falcon::Adapters::Response
- Inherits:
-
Protocol::HTTP::Response
- Object
- Protocol::HTTP::Response
- Falcon::Adapters::Response
- Defined in:
- lib/falcon/adapters/response.rb
Constant Summary collapse
- IGNORE_HEADERS =
Middleware::Proxy::HOP_HEADERS
Class Method Summary collapse
- .wrap(status, headers, body, request = nil) ⇒ Object
-
.wrap_headers(fields) ⇒ Object
Append a list of newline encoded headers.
Instance Method Summary collapse
-
#initialize(status, headers, body, protocol = nil) ⇒ Response
constructor
A new instance of Response.
Constructor Details
#initialize(status, headers, body, protocol = nil) ⇒ Response
Returns a new instance of Response.
81 82 83 |
# File 'lib/falcon/adapters/response.rb', line 81 def initialize(status, headers, body, protocol = nil) super(nil, status, headers, body, protocol) end |
Class Method Details
.wrap(status, headers, body, request = nil) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/falcon/adapters/response.rb', line 55 def self.wrap(status, headers, body, request = nil) headers, = wrap_headers(headers) if block = ['rack.hijack'] body = Async::HTTP::Body::Hijack.wrap(request, &block) else ignored = headers.extract(IGNORE_HEADERS) unless ignored.empty? Async.logger.warn("Ignoring protocol-level headers: #{ignored.inspect}") end body = Output.wrap(status, headers, body) end protocol = ['rack.protocol'] # https://tools.ietf.org/html/rfc7231#section-7.4.2 headers.add('server', "falcon/#{Falcon::VERSION}") # https://tools.ietf.org/html/rfc7231#section-7.1.1.2 headers.add('date', Time.now.httpdate) return self.new(status, headers, body, protocol) end |
.wrap_headers(fields) ⇒ Object
Append a list of newline encoded headers.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/falcon/adapters/response.rb', line 36 def self.wrap_headers(fields) headers = ::Protocol::HTTP::Headers.new = {} fields.each do |key, value| key = key.downcase if key.start_with?('rack.') [key] = value else value.to_s.split("\n").each do |part| headers.add(key, part) end end end return headers, end |