diff --git a/src/http/client.cr b/src/http/client.cr index 09e1bfea28e0..8b652c52734d 100644 --- a/src/http/client.cr +++ b/src/http/client.cr @@ -478,7 +478,6 @@ class HTTP::Client # response.body # => "..." # ``` def exec(request : HTTP::Request) : HTTP::Client::Response - execute_callbacks(request) exec_internal(request) end @@ -496,9 +495,7 @@ class HTTP::Client end private def exec_internal_single(request) - decompress = set_defaults request - request.to_io(socket) - socket.flush + decompress = send_request(request) HTTP::Client::Response.from_io?(socket, ignore_body: request.ignore_body?, decompress: decompress) end @@ -517,7 +514,6 @@ class HTTP::Client # end # ``` def exec(request : HTTP::Request, &block) - execute_callbacks(request) exec_internal(request) do |response| yield response end @@ -544,9 +540,7 @@ class HTTP::Client end private def exec_internal_single(request) - decompress = set_defaults request - request.to_io(socket) - socket.flush + decompress = send_request(request) HTTP::Client::Response.from_io?(socket, ignore_body: request.ignore_body?, decompress: decompress) do |response| yield response end @@ -559,6 +553,14 @@ class HTTP::Client value end + private def send_request(request) + decompress = set_defaults request + run_before_request_callbacks(request) + request.to_io(socket) + socket.flush + decompress + end + private def set_defaults(request) request.headers["User-Agent"] ||= "Crystal" {% if flag?(:without_zlib) %} @@ -573,6 +575,10 @@ class HTTP::Client {% end %} end + private def run_before_request_callbacks(request) + @before_request.try &.each &.call(request) + end + # Executes a request. # The response will have its body as a `String`, accessed via `HTTP::Client::Response#body`. # @@ -641,10 +647,6 @@ class HTTP::Client end end - private def execute_callbacks(request) - @before_request.try &.each &.call(request) - end - private def socket socket = @socket return socket if socket