content-digest: set validate_content_digest default to false; do not try to compute content-digest for requests with no body

This commit is contained in:
HoneyryderChuck 2024-12-02 13:04:57 +00:00
parent 85019e5493
commit ac809d18cc
2 changed files with 6 additions and 4 deletions

View File

@ -31,7 +31,7 @@ module HTTPX
class << self
def extra_options(options)
options.merge(encode_content_digest: true, validate_content_digest: true, content_digest_algorithm: "sha-256")
options.merge(encode_content_digest: true, validate_content_digest: false, content_digest_algorithm: "sha-256")
end
end
@ -41,7 +41,7 @@ module HTTPX
# :encode_content_digest :: whether a <tt>Content-Digest</tt> header should be computed for the request;
# can also be a callable object (i.e. <tt>->(req) { ... }</tt>, defaults to <tt>true</tt>)
# :validate_content_digest :: whether a <tt>Content-Digest</tt> header in the response should be validated;
# can also be a callable object (i.e. <tt>->(res) { ... }</tt>, defaults to <tt>true</tt>)
# can also be a callable object (i.e. <tt>->(res) { ... }</tt>, defaults to <tt>false</tt>)
module OptionsMethods
def option_content_digest_algorithm(value)
raise TypeError, ":content_digest_algorithm must be one of 'sha-256', 'sha-512'" unless SUPPORTED_ALGORITHMS.key?(value)
@ -96,6 +96,8 @@ module HTTPX
def build_request(*)
request = super
return request if request.empty?
return request if request.headers.key?("content-digest")
perform_encoding = @options.encode_content_digest

View File

@ -29,7 +29,7 @@ module Requests
def test_content_digest_missing_validation_always
start_test_servlet(ContentDigestServer) do |server|
http = HTTPX.plugin(:content_digest)
http = HTTPX.plugin(:content_digest, validate_content_digest: true)
response = http.get("#{server.origin}/no_content_digest")
@ -69,7 +69,7 @@ module Requests
def test_content_digest_invalid_validation_always
start_test_servlet(ContentDigestServer) do |server|
http = HTTPX.plugin(:content_digest)
http = HTTPX.plugin(:content_digest, validate_content_digest: true)
response = http.get("#{server.origin}/invalid_content_digest")