mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-10-05 00:02:38 -04:00
43 lines
979 B
Ruby
43 lines
979 B
Ruby
# frozen_string_literal: true
|
|
|
|
require "zlib"
|
|
require "stringio"
|
|
require_relative "test"
|
|
|
|
class NoContentLengthServer < TestServer
|
|
module NoContentLength
|
|
def self.extended(obj)
|
|
super
|
|
obj.singleton_class.class_eval do
|
|
alias_method(:setup_header_without_clength, :setup_header)
|
|
alias_method(:setup_header, :setup_header_with_clength)
|
|
end
|
|
end
|
|
|
|
def setup_header_with_clength
|
|
setup_header_without_clength
|
|
header.delete("content-length")
|
|
end
|
|
end
|
|
|
|
class NoContentLengthApp < WEBrick::HTTPServlet::AbstractServlet
|
|
def do_GET(_req, res) # rubocop:disable Naming/MethodName
|
|
zipped = StringIO.new
|
|
Zlib::GzipWriter.wrap(zipped) do |gz|
|
|
gz.write("helloworld")
|
|
end
|
|
res.body = zipped.string
|
|
|
|
res.status = 200
|
|
res["Content-Encoding"] = "gzip"
|
|
|
|
res.extend(NoContentLength)
|
|
end
|
|
end
|
|
|
|
def initialize(options = {})
|
|
super
|
|
mount("/", NoContentLengthApp)
|
|
end
|
|
end
|