# frozen_string_literal: true

# Released under the MIT License.
# Copyright, 2017-2024, by Samuel Williams.

require "protocol/http/request"
require "protocol/http/headers"

require_relative "../body/writable"

module Async
	module HTTP
		module Protocol
			# An incoming HTTP request generated by server protocol implementations.
			class Request < ::Protocol::HTTP::Request
				# @returns [Connection | Nil] The underlying protocol connection.
				def connection
					nil
				end
				
				# @returns [Boolean] Whether this request supports connection hijacking.
				def hijack?
					false
				end
				
				# Write an interim (1xx) response back to the client.
				# @parameter status [Integer] The interim HTTP status code.
				# @parameter headers [Hash | Nil] Optional headers to include.
				def write_interim_response(status, headers = nil)
				end
				
				# @returns [Protocol::HTTP::Peer | Nil] The peer associated with this connection.
				def peer
					self.connection&.peer
				end
				
				# @returns [Addrinfo | Nil] The remote address of the peer.
				def remote_address
					self.peer&.address
				end
				
				# @returns [String] A string representation of the request.
				def inspect
					"#<#{self.class}:0x#{self.object_id.to_s(16)} method=#{method} path=#{path} version=#{version}>"
				end
			end
		end
	end
end
