From 36ce3851d1edf516b69843d6931f06b02b3792bb Mon Sep 17 00:00:00 2001 From: HoneyryderChuck Date: Wed, 20 Dec 2017 18:57:50 +0200 Subject: [PATCH] parser: isolating some logic, so that it can be more easily overridden; these have to make sense, obviously --- lib/httpx/channel/http1.rb | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/httpx/channel/http1.rb b/lib/httpx/channel/http1.rb index 982ea453..a3f2a39f 100644 --- a/lib/httpx/channel/http1.rb +++ b/lib/httpx/channel/http1.rb @@ -114,9 +114,18 @@ module HTTPX private + def set_request_headers(request) + request.headers["host"] ||= request.authority + request.headers["connection"] ||= "keep-alive" + end + + def headline(request) + "#{request.verb.to_s.upcase} #{request.path} HTTP/#{@version.join(".")}" + end + def handle(request) + set_request_headers(request) catch(:buffer_full) do - request.headers["connection"] ||= "keep-alive" request.transition(:headers) join_headers(request) if request.state == :headers request.transition(:body) @@ -126,9 +135,8 @@ module HTTPX end def join_headers(request) - request.headers["host"] ||= request.authority buffer = +"" - buffer << "#{request.verb.to_s.upcase} #{request.path} HTTP/#{@version.join(".")}" << CRLF + buffer << headline(request) << CRLF log { "<- HEADLINE: #{buffer.chomp.inspect}" } @buffer << buffer buffer.clear