Package org.microproxy.http
Interface HttpObject
- All Known Subinterfaces:
FullHttpMessage,FullHttpRequest,FullHttpResponse,HttpContent,HttpMessage,HttpRequest,HttpResponse,LastHttpContent
- All Known Implementing Classes:
DefaultFullHttpRequest,DefaultFullHttpResponse,DefaultHttpContent,DefaultHttpRequest,DefaultHttpResponse,DefaultLastHttpContent,HttpCache.Answer,ServerReplay.Replayed
Base type of everything that flows through
HttpFilters: a message head
(HttpRequest / HttpResponse), a piece of body (HttpContent), the end of a
body (LastHttpContent), or a whole message (FullHttpRequest / FullHttpResponse).
This mirrors the object model LittleProxy inherited from Netty, so filters port over with little more than an import change.
The hierarchy is sealed: its implementations are the Default* classes, which filters
construct and may subclass. A switch over these types can therefore be exhaustive; put
the FullHttp* cases before HttpRequest/HttpResponse, and
LastHttpContent before HttpContent:
switch (httpObject) {
case FullHttpResponse full -> ...; // a whole buffered response
case HttpResponse head -> ...; // a streamed response's head
case LastHttpContent last -> ...; // the end of a body (with trailers)
case HttpContent piece -> ...; // a piece of a body
case HttpRequest request -> ...;
}