Class HttpConversionUtil


  • @UnstableApi
    public final class HttpConversionUtil
    extends java.lang.Object
    Provides utility methods and constants for the HTTP/2 to HTTP conversion
    • Field Detail

      • HTTP_TO_HTTP2_HEADER_BLACKLIST

        private static final CharSequenceMap<AsciiString> 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

        public static final HttpMethod OUT_OF_MESSAGE_SEQUENCE_METHOD
        This will be the method used for HttpRequest objects generated out of the HTTP message flow defined in [RFC 7540], Section 8.1
      • EMPTY_REQUEST_PATH

        private static final AsciiString EMPTY_REQUEST_PATH
        [RFC 7540], 8.1.2.3 states the path must not be empty, and instead should be /.
    • Constructor Detail

      • HttpConversionUtil

        private HttpConversionUtil()
    • Method Detail

      • parseStatus

        public static HttpResponseStatus parseStatus​(java.lang.CharSequence status)
                                              throws Http2Exception
        Apply HTTP/2 rules while translating status code to HttpResponseStatus
        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
      • 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 request
        http2Headers - The initial set of HTTP/2 headers to create the request with
        validateHttpHeaders -
        • true to validate HTTP headers in the http-codec
        • false not to validate HTTP headers in the http-codec
        Returns:
        A new request object which represents headers for a chunked request
        Throws:
        Http2Exception - see addHttp2ToHttpHeaders(int, Http2Headers, FullHttpMessage, boolean)
      • addHttp2ToHttpHeaders

        public static void addHttp2ToHttpHeaders​(int streamId,
                                                 Http2Headers sourceHeaders,
                                                 FullHttpMessage destinationMessage,
                                                 boolean addToTrailer)
                                          throws Http2Exception
        Translate and add HTTP/2 headers to HTTP/1.x headers.
        Parameters:
        streamId - The stream associated with sourceHeaders.
        sourceHeaders - The HTTP/2 headers to convert.
        destinationMessage - The object which will contain the resulting HTTP/1.x headers.
        addToTrailer - true to add to trailing headers. false to add to initial headers.
        Throws:
        Http2Exception - If not all HTTP/2 headers can be translated to HTTP/1.x.
        See Also:
        addHttp2ToHttpHeaders(int, Http2Headers, HttpHeaders, HttpVersion, boolean, boolean)
      • 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 with sourceHeaders.
        inputHeaders - The HTTP/2 headers to convert.
        outputHeaders - The object which will contain the resulting HTTP/1.x headers..
        httpVersion - What HTTP/1.x version outputHeaders should be treated as when doing the conversion.
        isTrailer - true if outputHeaders should be treated as trailing headers. false otherwise.
        isRequest - true if the outputHeaders will be used in a request message. false for response message.
        Throws:
        Http2Exception - If not all HTTP/2 headers can be translated to HTTP/1.x.
      • toLowercaseMap

        private static CharSequenceMap<AsciiString> toLowercaseMap​(java.util.Iterator<? extends java.lang.CharSequence> valuesIter,
                                                                   int arraySizeHint)
      • toHttp2Path

        private static AsciiString toHttp2Path​(java.net.URI uri)
        Generate an HTTP/2 {code :path} from a URI in accordance with rfc7230, 5.3.
      • setHttp2Authority

        static void setHttp2Authority​(java.lang.String authority,
                                      Http2Headers out)