mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-10-05 00:02:38 -04:00
38 lines
890 B
Ruby
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
|