Last Update: 2023-12-05 13:42:13 +0000



HTTP response pattern-matching (ruby 3 only)

You can now apply pattern matching in responses:

case response = HTTPX.get("https://google.com")
in { status: 200..399, headers: [*, ["x-special-token", token], *], body: }
  puts "success: #{body.to_s}"
in { status: 400..499, body: }
  puts "client error: #{body.to_s}"
in { status: 500.., body: }
  puts "server error: #{body.to_s}"
in { error: error }
  puts "error: #{error.message}"
  raise "unexpected: #{response}"

NTLM Authentication

A new plugin, :ntml_authentication, is now available. Like the name suggests, it allows authenticating requests via NTLM.

ntlm_http = HTTPX.plugin(:ntlm_authentication)

ntlm.ntlm_authentication("user", "password").get("http://protected-area-requiring-ntlm.net")
# or for a specific domain
ntlm.ntlm_authentication("user", "password", "Domain\\User").get("http://protected-area-requiring-ntlm.net")


A new timeout option, settings_timeout, is supported for the HTTP/2 handshake; after the TCP and TLS handshakes are complete, and initiating the HTTP/2 handshake, the client terminates the connection with SETTINGS_TIMEOUT error code, if it doesn’t receive the server settings for the amount of seconds set in settings_timeout (by default, 10 seconds).

# if you want to change
HTTPX.with(timeout: {settings_timeout: 5})....

IDNA 2008 support is now possibly, by integrating idnx into your dependencies:

# in Gemfile
gem "httpx"
gem "idnx"