class Net::HTTPGenericRequest

PATCH: Net::HTTPGenericRequest to allow empty path, so it can be used as ‘webservice’ request in ‘send_webservice_request’ ORIGINAL FROM: Ruby 3.1.0, ‘lib/net/http/generic_request.rb’

Public Class Methods

new(m, reqbody, resbody, uri_or_path, initheader = nil) click to toggle source
# File lax/__internal__/patches/patch-net-http.rb, line 32
def initialize(m, reqbody, resbody, uri_or_path, initheader = nil)
  @method = m
  @request_has_body = reqbody
  @response_has_body = resbody

  if URI === uri_or_path then
    raise ArgumentError, "not an HTTP URI" unless URI::HTTP === uri_or_path
    raise ArgumentError, "no host component for URI" unless uri_or_path.hostname
    @uri = uri_or_path.dup
    host = @uri.hostname.dup
    host << ":".freeze << @uri.port.to_s if @uri.port != @uri.default_port
    @path = uri_or_path.request_uri
    ### PATCHED: COMMENTED ### raise ArgumentError, "no HTTP request path given" unless @path
  else
    @uri = nil
    host = nil
    ### PATCHED: COMMENTED ### raise ArgumentError, "no HTTP request path given" unless uri_or_path
    ### PATCHED: COMMENTED ### raise ArgumentError, "HTTP request path is empty" if uri_or_path.empty?
    ### PATCHED: COMMENTED ### @path = uri_or_path.dup
    ### PATCHED: ADDED ###
    @path = uri_or_path.dup if uri_or_path
  end

  @decode_content = false

  if Net::HTTP::HAVE_ZLIB then
    if !initheader ||
       !initheader.keys.any? { |k|
         %w[accept-encoding range].include? k.downcase
       } then
      @decode_content = true if @response_has_body
      initheader = initheader ? initheader.dup : {}
      initheader["accept-encoding"] =
        "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
    end
  end

  initialize_http_header initheader
  self['Accept'] ||= '*/*'
  self['User-Agent'] ||= 'Ruby'
  self['Host'] ||= host if host
  @body = nil
  @body_stream = nil
  @body_data = nil
end