class Polyphony::HTTP::Server::Request

HTTP request

Attributes

__next__[RW]
adapter[R]
headers[R]

Public Class Methods

new(headers, adapter) click to toggle source
# File lib/polyphony/http/server/request.rb, line 13
def initialize(headers, adapter)
  @headers  = headers
  @adapter  = adapter
end

Public Instance Methods

<<(body, done: false)
Alias for: send_chunk
buffer_body_chunk(chunk) click to toggle source
# File lib/polyphony/http/server/request.rb, line 55
def buffer_body_chunk(chunk)
  @buffered_body_chunks ||= []
  @buffered_body_chunks << chunk
end
complete!(keep_alive = nil) click to toggle source
# File lib/polyphony/http/server/request.rb, line 70
def complete!(keep_alive = nil)
  @message_complete = true
  @keep_alive = keep_alive
end
complete?() click to toggle source
# File lib/polyphony/http/server/request.rb, line 75
def complete?
  @message_complete
end
consume() click to toggle source
# File lib/polyphony/http/server/request.rb, line 79
def consume
  @adapter.consume_request
end
each_chunk() { |chunk| ... } click to toggle source
# File lib/polyphony/http/server/request.rb, line 60
def each_chunk(&block)
  if @buffered_body_chunks
    @buffered_body_chunks.each(&block)
    @buffered_body_chunks = nil
  end
  while !@message_complete && (chunk = @adapter.get_body_chunk)
    yield chunk
  end
end
finish() click to toggle source
# File lib/polyphony/http/server/request.rb, line 114
def finish
  send_headers({}) unless @headers_sent

  @adapter.finish
end
keep_alive?() click to toggle source
# File lib/polyphony/http/server/request.rb, line 83
def keep_alive?
  @keep_alive
end
method() click to toggle source
# File lib/polyphony/http/server/request.rb, line 22
def method
  @method ||= @headers[':method']
end
path() click to toggle source
# File lib/polyphony/http/server/request.rb, line 34
def path
  @path ||= uri.path
end
protocol() click to toggle source
# File lib/polyphony/http/server/request.rb, line 18
def protocol
  @protocol = @adapter.protocol
end
query() click to toggle source
# File lib/polyphony/http/server/request.rb, line 42
def query
  return @query if @query

  @query = (q = uri.query) ? split_query_string(q) : {}
end
query_string() click to toggle source
# File lib/polyphony/http/server/request.rb, line 38
def query_string
  @query_string ||= uri.query
end
read() click to toggle source
# File lib/polyphony/http/server/request.rb, line 87
def read
  buf = @buffered_body_chunks ? @buffered_body_chunks.join : +''
  while (chunk = @adapter.get_body_chunk)
    buf << chunk
  end
  buf
end
respond(body, headers = {}) click to toggle source
# File lib/polyphony/http/server/request.rb, line 95
def respond(body, headers = {})
  @adapter.respond(body, headers)
  @headers_sent = true
end
scheme() click to toggle source
# File lib/polyphony/http/server/request.rb, line 26
def scheme
  @scheme ||= @headers[':scheme']
end
send_chunk(body, done: false) click to toggle source
# File lib/polyphony/http/server/request.rb, line 107
def send_chunk(body, done: false)
  send_headers({}) unless @headers_sent

  @adapter.send_chunk(body, done: done)
end
Also aliased as: <<
send_headers(headers = {}, empty_response = false) click to toggle source
# File lib/polyphony/http/server/request.rb, line 100
def send_headers(headers = {}, empty_response = false)
  return if @headers_sent

  @headers_sent = true
  @adapter.send_headers(headers, empty_response: empty_response)
end
split_query_string(query) click to toggle source
# File lib/polyphony/http/server/request.rb, line 48
def split_query_string(query)
  query.split('&').each_with_object({}) do |kv, h|
    k, v = kv.split('=')
    h[k.to_sym] = URI.decode_www_form_component(v)
  end
end
uri() click to toggle source
# File lib/polyphony/http/server/request.rb, line 30
def uri
  @uri ||= URI.parse(@headers[':path'] || '')
end