Skip to content

Commit ff02d2d

Browse files
committedJan 22, 2018
HTTP::Client: execute before_requestcallbacks right before writing the request
1 parent fd55e8d commit ff02d2d

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed
 

Diff for: ‎src/http/client.cr

+14-12
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,6 @@ class HTTP::Client
478478
# response.body # => "..."
479479
# ```
480480
def exec(request : HTTP::Request) : HTTP::Client::Response
481-
execute_callbacks(request)
482481
exec_internal(request)
483482
end
484483

@@ -496,9 +495,7 @@ class HTTP::Client
496495
end
497496

498497
private def exec_internal_single(request)
499-
decompress = set_defaults request
500-
request.to_io(socket)
501-
socket.flush
498+
decompress = send_request(request)
502499
HTTP::Client::Response.from_io?(socket, ignore_body: request.ignore_body?, decompress: decompress)
503500
end
504501

@@ -517,7 +514,6 @@ class HTTP::Client
517514
# end
518515
# ```
519516
def exec(request : HTTP::Request, &block)
520-
execute_callbacks(request)
521517
exec_internal(request) do |response|
522518
yield response
523519
end
@@ -544,9 +540,7 @@ class HTTP::Client
544540
end
545541

546542
private def exec_internal_single(request)
547-
decompress = set_defaults request
548-
request.to_io(socket)
549-
socket.flush
543+
decompress = send_request(request)
550544
HTTP::Client::Response.from_io?(socket, ignore_body: request.ignore_body?, decompress: decompress) do |response|
551545
yield response
552546
end
@@ -559,6 +553,14 @@ class HTTP::Client
559553
value
560554
end
561555

556+
private def send_request(request)
557+
decompress = set_defaults request
558+
run_before_request_callbacks(request)
559+
request.to_io(socket)
560+
socket.flush
561+
decompress
562+
end
563+
562564
private def set_defaults(request)
563565
request.headers["User-Agent"] ||= "Crystal"
564566
{% if flag?(:without_zlib) %}
@@ -573,6 +575,10 @@ class HTTP::Client
573575
{% end %}
574576
end
575577

578+
private def run_before_request_callbacks(request)
579+
@before_request.try &.each &.call(request)
580+
end
581+
576582
# Executes a request.
577583
# The response will have its body as a `String`, accessed via `HTTP::Client::Response#body`.
578584
#
@@ -641,10 +647,6 @@ class HTTP::Client
641647
end
642648
end
643649

644-
private def execute_callbacks(request)
645-
@before_request.try &.each &.call(request)
646-
end
647-
648650
private def socket
649651
socket = @socket
650652
return socket if socket

0 commit comments

Comments
 (0)
Please sign in to comment.