mirror of
https://github.com/valyala/fasthttp.git
synced 2026-06-14 15:56:44 +03:00
RequestHeader support set no default ContentType (#1218)
This commit is contained in:
@@ -59,9 +59,10 @@ type ResponseHeader struct {
|
||||
type RequestHeader struct {
|
||||
noCopy noCopy //nolint:unused,structcheck
|
||||
|
||||
disableNormalizing bool
|
||||
noHTTP11 bool
|
||||
connectionClose bool
|
||||
disableNormalizing bool
|
||||
noHTTP11 bool
|
||||
connectionClose bool
|
||||
noDefaultContentType bool
|
||||
|
||||
// These two fields have been moved close to other bool fields
|
||||
// for reducing RequestHeader object size.
|
||||
@@ -943,9 +944,15 @@ func (h *ResponseHeader) resetSkipNormalize() {
|
||||
h.trailer = h.trailer[:0]
|
||||
}
|
||||
|
||||
// SetNoDefaultContentType allows you to control if a default Content-Type header will be set (false) or not (true).
|
||||
func (h *RequestHeader) SetNoDefaultContentType(noDefaultContentType bool) {
|
||||
h.noDefaultContentType = noDefaultContentType
|
||||
}
|
||||
|
||||
// Reset clears request header.
|
||||
func (h *RequestHeader) Reset() {
|
||||
h.disableNormalizing = false
|
||||
h.SetNoDefaultContentType(false)
|
||||
h.resetSkipNormalize()
|
||||
}
|
||||
|
||||
@@ -2273,7 +2280,7 @@ func (h *RequestHeader) AppendBytes(dst []byte) []byte {
|
||||
}
|
||||
|
||||
contentType := h.ContentType()
|
||||
if len(contentType) == 0 && !h.ignoreBody() {
|
||||
if !h.noDefaultContentType && len(contentType) == 0 && !h.ignoreBody() {
|
||||
contentType = strDefaultContentType
|
||||
}
|
||||
if len(contentType) > 0 {
|
||||
|
||||
@@ -1381,6 +1381,33 @@ func TestRequestContentTypeDefaultNotEmpty(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestRequestContentTypeNoDefault(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
var h RequestHeader
|
||||
h.SetMethod(MethodDelete)
|
||||
h.SetNoDefaultContentType(true)
|
||||
|
||||
w := &bytes.Buffer{}
|
||||
bw := bufio.NewWriter(w)
|
||||
if err := h.Write(bw); err != nil {
|
||||
t.Fatalf("Unexpected error: %s", err)
|
||||
}
|
||||
if err := bw.Flush(); err != nil {
|
||||
t.Fatalf("Unexpected error: %s", err)
|
||||
}
|
||||
|
||||
var h1 RequestHeader
|
||||
br := bufio.NewReader(w)
|
||||
if err := h1.Read(br); err != nil {
|
||||
t.Fatalf("Unexpected error: %s", err)
|
||||
}
|
||||
|
||||
if string(h1.contentType) != "" {
|
||||
t.Fatalf("unexpected Content-Type %q. Expecting %q", h1.contentType, "")
|
||||
}
|
||||
}
|
||||
|
||||
func TestResponseDateNoDefaultNotEmpty(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user