Add ByteBuf parameter HttpConversionUtil (#10785)
Motivation: `HttpConversionUtil#toFullHttpResponse` and `HttpConversionUtil#toFullHttpRequest` has `ByteBufAllocator` which is used for building `FullHttpMessage` and then data can be appended with `FullHttpMessage#content`. However, there can be cases when we already have `ByteBuf` ready with data. So we need a parameter to add `ByteBuf` directly into `FullHttpMessage` while creating it. Modification: Added `ByteBuf` parameter, Result: More functionality for handling `FullHttpMessage` content.
This commit is contained in:
parent
70cbe74367
commit
884800221f
@ -14,6 +14,7 @@
|
||||
*/
|
||||
package io.netty.handler.codec.http2;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.ByteBufAllocator;
|
||||
import io.netty.handler.codec.UnsupportedValueConverter;
|
||||
import io.netty.handler.codec.http.DefaultFullHttpRequest;
|
||||
@ -212,12 +213,30 @@ public final class HttpConversionUtil {
|
||||
* @throws Http2Exception see {@link #addHttp2ToHttpHeaders(int, Http2Headers, FullHttpMessage, boolean)}
|
||||
*/
|
||||
public static FullHttpResponse toFullHttpResponse(int streamId, Http2Headers http2Headers, ByteBufAllocator alloc,
|
||||
boolean validateHttpHeaders) throws Http2Exception {
|
||||
return toFullHttpResponse(streamId, http2Headers, alloc.buffer(), validateHttpHeaders);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new object to contain the response data
|
||||
*
|
||||
* @param streamId The stream associated with the response
|
||||
* @param http2Headers The initial set of HTTP/2 headers to create the response with
|
||||
* @param content {@link ByteBuf} content to put in {@link FullHttpResponse}
|
||||
* @param validateHttpHeaders <ul>
|
||||
* <li>{@code true} to validate HTTP headers in the http-codec</li>
|
||||
* <li>{@code false} not to validate HTTP headers in the http-codec</li>
|
||||
* </ul>
|
||||
* @return A new response object which represents headers/data
|
||||
* @throws Http2Exception see {@link #addHttp2ToHttpHeaders(int, Http2Headers, FullHttpMessage, boolean)}
|
||||
*/
|
||||
public static FullHttpResponse toFullHttpResponse(int streamId, Http2Headers http2Headers, ByteBuf content,
|
||||
boolean validateHttpHeaders)
|
||||
throws Http2Exception {
|
||||
HttpResponseStatus status = parseStatus(http2Headers.status());
|
||||
// HTTP/2 does not define a way to carry the version or reason phrase that is included in an
|
||||
// HTTP/1.1 status line.
|
||||
FullHttpResponse msg = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, status, alloc.buffer(),
|
||||
FullHttpResponse msg = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, status, content,
|
||||
validateHttpHeaders);
|
||||
try {
|
||||
addHttp2ToHttpHeaders(streamId, http2Headers, msg, false);
|
||||
@ -245,15 +264,32 @@ public final class HttpConversionUtil {
|
||||
* @throws Http2Exception see {@link #addHttp2ToHttpHeaders(int, Http2Headers, FullHttpMessage, boolean)}
|
||||
*/
|
||||
public static FullHttpRequest toFullHttpRequest(int streamId, Http2Headers http2Headers, ByteBufAllocator alloc,
|
||||
boolean validateHttpHeaders)
|
||||
throws Http2Exception {
|
||||
boolean validateHttpHeaders) throws Http2Exception {
|
||||
return toFullHttpRequest(streamId, http2Headers, alloc.buffer(), validateHttpHeaders);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new object to contain the request data
|
||||
*
|
||||
* @param streamId The stream associated with the request
|
||||
* @param http2Headers The initial set of HTTP/2 headers to create the request with
|
||||
* @param content {@link ByteBuf} content to put in {@link FullHttpRequest}
|
||||
* @param validateHttpHeaders <ul>
|
||||
* <li>{@code true} to validate HTTP headers in the http-codec</li>
|
||||
* <li>{@code false} not to validate HTTP headers in the http-codec</li>
|
||||
* </ul>
|
||||
* @return A new request object which represents headers/data
|
||||
* @throws Http2Exception see {@link #addHttp2ToHttpHeaders(int, Http2Headers, FullHttpMessage, boolean)}
|
||||
*/
|
||||
public static FullHttpRequest toFullHttpRequest(int streamId, Http2Headers http2Headers, ByteBuf content,
|
||||
boolean validateHttpHeaders) throws Http2Exception {
|
||||
// HTTP/2 does not define a way to carry the version identifier that is included in the HTTP/1.1 request line.
|
||||
final CharSequence method = requireNonNull(http2Headers.method(),
|
||||
"method header cannot be null in conversion to HTTP/1.x");
|
||||
final CharSequence path = requireNonNull(http2Headers.path(),
|
||||
"path header cannot be null in conversion to HTTP/1.x");
|
||||
FullHttpRequest msg = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.valueOf(method
|
||||
.toString()), path.toString(), alloc.buffer(), validateHttpHeaders);
|
||||
.toString()), path.toString(), content, validateHttpHeaders);
|
||||
try {
|
||||
addHttp2ToHttpHeaders(streamId, http2Headers, msg, false);
|
||||
} catch (Http2Exception e) {
|
||||
|
Loading…
Reference in New Issue
Block a user