Strategy: Create constant for HTTP separator
This commit is contained in:
parent
ccfd01ba38
commit
793ea17749
@ -19,7 +19,15 @@ module Homebrew
|
||||
# the middle of this range. Strategies with a priority of 0 (or lower)
|
||||
# are ignored.
|
||||
DEFAULT_PRIORITY = 5
|
||||
private_constant :DEFAULT_PRIORITY
|
||||
|
||||
# HTTP response head(s) and body are typically separated by a double
|
||||
# `CRLF` (whereas HTTP header lines are separated by a single `CRLF`).
|
||||
# In rare cases, this can also be a double newline (`\n\n`).
|
||||
HTTP_HEAD_BODY_SEPARATOR = "\r\n\r\n"
|
||||
|
||||
# The `#strategies` method expects `Strategy` constants to be strategies,
|
||||
# so constants we create need to be private for this to work properly.
|
||||
private_constant :DEFAULT_PRIORITY, :HTTP_HEAD_BODY_SEPARATOR
|
||||
|
||||
# Creates and/or returns a `@strategies` `Hash`, which maps a snake
|
||||
# case strategy name symbol (e.g. `:page_match`) to the associated
|
||||
@ -166,11 +174,11 @@ module Homebrew
|
||||
max_iterations = 5
|
||||
iterations = 0
|
||||
output = output.lstrip
|
||||
while output.match?(%r{\AHTTP/[\d.]+ \d+}) && output.include?("\r\n\r\n")
|
||||
while output.match?(%r{\AHTTP/[\d.]+ \d+}) && output.include?(HTTP_HEAD_BODY_SEPARATOR)
|
||||
iterations += 1
|
||||
raise "Too many redirects (max = #{max_iterations})" if iterations > max_iterations
|
||||
|
||||
head_text, _, output = output.partition("\r\n\r\n")
|
||||
head_text, _, output = output.partition(HTTP_HEAD_BODY_SEPARATOR)
|
||||
output = output.lstrip
|
||||
|
||||
location = head_text[/^Location:\s*(.*)$/i, 1]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user