Package io.netty.handler.codec.http2
Class HttpConversionUtil
java.lang.Object
io.netty.handler.codec.http2.HttpConversionUtil
Provides utility methods and constants for the HTTP/2 to HTTP conversion
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumProvides the HTTP header extensions used to carry HTTP/2 information in HTTP objectsprivate static final classUtility which translates HTTP/2 headers to HTTP/1 headers. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final AsciiString[RFC 7540], 8.1.2.3 states the path must not be empty, and instead should be/.private static final CharSequenceMap<AsciiString> The set of headers that should not be directly copied when converting headers from HTTP to HTTP/2.static final HttpMethodThis will be the method used forHttpRequestobjects generated out of the HTTP message flow defined in [RFC 7540], Section 8.1static final StringThis will be the path used forHttpRequestobjects generated out of the HTTP message flow defined in [RFC 7540], Section 8.1static final HttpResponseStatusThis will be the status code used forHttpResponseobjects generated out of the HTTP message flow defined in [RFC 7540], Section 8.1 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic voidaddHttp2ToHttpHeaders(int streamId, Http2Headers inputHeaders, FullHttpMessage destinationMessage, boolean addToTrailer) Translate and add HTTP/2 headers to HTTP/1.x headers.static voidaddHttp2ToHttpHeaders(int streamId, Http2Headers inputHeaders, HttpHeaders outputHeaders, HttpVersion httpVersion, boolean isTrailer, boolean isRequest) Translate and add HTTP/2 headers to HTTP/1.x headers.private static StringextractPath(CharSequence method, Http2Headers headers) static HttpResponseStatusparseStatus(CharSequence status) Apply HTTP/2 rules while translating status code toHttpResponseStatus(package private) static voidsetHttp2Authority(String authority, Http2Headers out) private static voidsetHttp2Scheme(HttpHeaders in, Http2Headers out) private static voidsetHttp2Scheme(HttpHeaders in, URI uri, Http2Headers out) private static voidsplitValidCookieHeader(Http2Headers out, CharSequence valueCs) static FullHttpRequesttoFullHttpRequest(int streamId, Http2Headers http2Headers, ByteBufAllocator alloc, boolean validateHttpHeaders) Create a new object to contain the request datastatic FullHttpRequesttoFullHttpRequest(int streamId, Http2Headers http2Headers, ByteBuf content, boolean validateHttpHeaders) Create a new object to contain the request datastatic FullHttpResponsetoFullHttpResponse(int streamId, Http2Headers http2Headers, ByteBufAllocator alloc, boolean validateHttpHeaders) Create a new object to contain the response datastatic FullHttpResponsetoFullHttpResponse(int streamId, Http2Headers http2Headers, ByteBuf content, boolean validateHttpHeaders) Create a new object to contain the response datastatic Http2HeaderstoHttp2Headers(HttpHeaders inHeaders, boolean validateHeaders) static voidtoHttp2Headers(HttpHeaders inHeaders, Http2Headers out) static Http2HeaderstoHttp2Headers(HttpMessage in, boolean validateHeaders) Converts the given HTTP/1.x headers into HTTP/2 headers.private static voidtoHttp2HeadersFilterTE(Map.Entry<CharSequence, CharSequence> entry, Http2Headers out) Filter theHttpHeaderNames.TEheader according to the special rules in the HTTP/2 RFC.private static AsciiStringtoHttp2Path(URI uri) Generate an HTTP/2 {code :path} from a URI in accordance with rfc7230, 5.3.static HttpRequesttoHttpRequest(int streamId, Http2Headers http2Headers, boolean validateHttpHeaders) Create a new object to contain the request data.static HttpResponsetoHttpResponse(int streamId, Http2Headers http2Headers, boolean validateHttpHeaders) Create a new object to contain the response data.private static CharSequenceMap<AsciiString> toLowercaseMap(Iterator<? extends CharSequence> valuesIter, int arraySizeHint)
-
Field Details
-
HTTP_TO_HTTP2_HEADER_BLACKLIST
The set of headers that should not be directly copied when converting headers from HTTP to HTTP/2. -
OUT_OF_MESSAGE_SEQUENCE_METHOD
This will be the method used forHttpRequestobjects generated out of the HTTP message flow defined in [RFC 7540], Section 8.1 -
OUT_OF_MESSAGE_SEQUENCE_PATH
This will be the path used forHttpRequestobjects generated out of the HTTP message flow defined in [RFC 7540], Section 8.1- See Also:
-
OUT_OF_MESSAGE_SEQUENCE_RETURN_CODE
This will be the status code used forHttpResponseobjects generated out of the HTTP message flow defined in [RFC 7540], Section 8.1 -
EMPTY_REQUEST_PATH
[RFC 7540], 8.1.2.3 states the path must not be empty, and instead should be/.
-
-
Constructor Details
-
HttpConversionUtil
private HttpConversionUtil()
-
-
Method Details
-
parseStatus
Apply HTTP/2 rules while translating status code toHttpResponseStatus- Parameters:
status- The status from an HTTP/2 frame- Returns:
- The HTTP/1.x status
- Throws:
Http2Exception- If there is a problem translating from HTTP/2 to HTTP/1.x
-
toFullHttpResponse
public static FullHttpResponse toFullHttpResponse(int streamId, Http2Headers http2Headers, ByteBufAllocator alloc, boolean validateHttpHeaders) throws Http2Exception Create a new object to contain the response data- Parameters:
streamId- The stream associated with the responsehttp2Headers- The initial set of HTTP/2 headers to create the response withalloc- TheByteBufAllocatorto use to generate the content of the messagevalidateHttpHeaders-trueto validate HTTP headers in the http-codecfalsenot to validate HTTP headers in the http-codec
- Returns:
- A new response object which represents headers/data
- Throws:
Http2Exception- seeaddHttp2ToHttpHeaders(int, Http2Headers, FullHttpMessage, boolean)
-
toFullHttpResponse
public static FullHttpResponse toFullHttpResponse(int streamId, Http2Headers http2Headers, ByteBuf content, boolean validateHttpHeaders) throws Http2Exception Create a new object to contain the response data- Parameters:
streamId- The stream associated with the responsehttp2Headers- The initial set of HTTP/2 headers to create the response withcontent-ByteBufcontent to put inFullHttpResponsevalidateHttpHeaders-trueto validate HTTP headers in the http-codecfalsenot to validate HTTP headers in the http-codec
- Returns:
- A new response object which represents headers/data
- Throws:
Http2Exception- seeaddHttp2ToHttpHeaders(int, Http2Headers, FullHttpMessage, boolean)
-
toFullHttpRequest
public static FullHttpRequest toFullHttpRequest(int streamId, Http2Headers http2Headers, ByteBufAllocator alloc, boolean validateHttpHeaders) throws Http2Exception Create a new object to contain the request data- Parameters:
streamId- The stream associated with the requesthttp2Headers- The initial set of HTTP/2 headers to create the request withalloc- TheByteBufAllocatorto use to generate the content of the messagevalidateHttpHeaders-trueto validate HTTP headers in the http-codecfalsenot to validate HTTP headers in the http-codec
- Returns:
- A new request object which represents headers/data
- Throws:
Http2Exception- seeaddHttp2ToHttpHeaders(int, Http2Headers, FullHttpMessage, boolean)
-
extractPath
-
toFullHttpRequest
public static FullHttpRequest toFullHttpRequest(int streamId, Http2Headers http2Headers, ByteBuf content, boolean validateHttpHeaders) throws Http2Exception Create a new object to contain the request data- Parameters:
streamId- The stream associated with the requesthttp2Headers- The initial set of HTTP/2 headers to create the request withcontent-ByteBufcontent to put inFullHttpRequestvalidateHttpHeaders-trueto validate HTTP headers in the http-codecfalsenot to validate HTTP headers in the http-codec
- Returns:
- A new request object which represents headers/data
- Throws:
Http2Exception- seeaddHttp2ToHttpHeaders(int, Http2Headers, FullHttpMessage, boolean)
-
toHttpRequest
public static HttpRequest toHttpRequest(int streamId, Http2Headers http2Headers, boolean validateHttpHeaders) throws Http2Exception Create a new object to contain the request data.- Parameters:
streamId- The stream associated with the requesthttp2Headers- The initial set of HTTP/2 headers to create the request withvalidateHttpHeaders-trueto validate HTTP headers in the http-codecfalsenot to validate HTTP headers in the http-codec
- Returns:
- A new request object which represents headers for a chunked request
- Throws:
Http2Exception- seeaddHttp2ToHttpHeaders(int, Http2Headers, FullHttpMessage, boolean)
-
toHttpResponse
public static HttpResponse toHttpResponse(int streamId, Http2Headers http2Headers, boolean validateHttpHeaders) throws Http2Exception Create a new object to contain the response data.- Parameters:
streamId- The stream associated with the responsehttp2Headers- The initial set of HTTP/2 headers to create the response withvalidateHttpHeaders-trueto validate HTTP headers in the http-codecfalsenot to validate HTTP headers in the http-codec
- Returns:
- A new response object which represents headers for a chunked response
- Throws:
Http2Exception- seeaddHttp2ToHttpHeaders(int, Http2Headers, HttpHeaders, HttpVersion, boolean, boolean)
-
addHttp2ToHttpHeaders
public static void addHttp2ToHttpHeaders(int streamId, Http2Headers inputHeaders, FullHttpMessage destinationMessage, boolean addToTrailer) throws Http2Exception Translate and add HTTP/2 headers to HTTP/1.x headers.- Parameters:
streamId- The stream associated withsourceHeaders.inputHeaders- The HTTP/2 headers to convert.destinationMessage- The object which will contain the resulting HTTP/1.x headers.addToTrailer-trueto add to trailing headers.falseto add to initial headers.- Throws:
Http2Exception- If not all HTTP/2 headers can be translated to HTTP/1.x.- See Also:
-
addHttp2ToHttpHeaders
public static void addHttp2ToHttpHeaders(int streamId, Http2Headers inputHeaders, HttpHeaders outputHeaders, HttpVersion httpVersion, boolean isTrailer, boolean isRequest) throws Http2Exception Translate and add HTTP/2 headers to HTTP/1.x headers.- Parameters:
streamId- The stream associated withsourceHeaders.inputHeaders- The HTTP/2 headers to convert.outputHeaders- The object which will contain the resulting HTTP/1.x headers..httpVersion- What HTTP/1.x versionoutputHeadersshould be treated as when doing the conversion.isTrailer-trueifoutputHeadersshould be treated as trailing headers.falseotherwise.isRequest-trueif theoutputHeaderswill be used in a request message.falsefor response message.- Throws:
Http2Exception- If not all HTTP/2 headers can be translated to HTTP/1.x.
-
toHttp2Headers
Converts the given HTTP/1.x headers into HTTP/2 headers. The following headers are only used if they can not be found in from theHOSTheader or theRequest-Lineas defined by rfc7230HttpConversionUtil.ExtensionHeaderNames.PATHis ignored and instead extracted from theRequest-Line. -
toHttp2Headers
-
toLowercaseMap
private static CharSequenceMap<AsciiString> toLowercaseMap(Iterator<? extends CharSequence> valuesIter, int arraySizeHint) -
toHttp2HeadersFilterTE
private static void toHttp2HeadersFilterTE(Map.Entry<CharSequence, CharSequence> entry, Http2Headers out) Filter theHttpHeaderNames.TEheader according to the special rules in the HTTP/2 RFC.- Parameters:
entry- An entry whose name isHttpHeaderNames.TE.out- the resulting HTTP/2 headers.
-
toHttp2Headers
-
splitValidCookieHeader
-
toHttp2Path
Generate an HTTP/2 {code :path} from a URI in accordance with rfc7230, 5.3. -
setHttp2Authority
-
setHttp2Scheme
-
setHttp2Scheme
-