httpx/test/support/servlets/trailers.rb
2021-05-29 15:50:23 +01:00

38 lines
890 B
Ruby

# frozen_string_literal: true
require_relative "test"
class HTTPTrailersServer < TestServer
module Trailers
def self.extended(obj)
super
obj.singleton_class.class_eval do
alias_method(:send_body_without_trailers, :send_body)
alias_method(:send_body, :send_body_with_trailers)
end
end
def send_body_with_trailers(socket)
send_body_without_trailers(socket)
socket.write(+"x-trailer: hello" << "\r\n")
socket.write(+"x-trailer-2: world" << "\r\n" << "\r\n")
end
end
class HTTPTrailersApp < WEBrick::HTTPServlet::AbstractServlet
def do_GET(_req, res) # rubocop:disable Naming/MethodName
res.status = 200
res["trailer"] = "x-trailer,x-trailer-2"
res.body = "trailers"
res.extend(Trailers)
end
end
def initialize(options = {})
super
mount("/", HTTPTrailersApp)
end
end