MCPcopy Index your code
hub / github.com/imroc/req / writeHeader

Method writeHeader

transfer.go:249–295  ·  view source on GitHub ↗
(writeHeader func(key string, values ...string) error)

Source from the content-addressed store, hash-verified

247}
248
249func (t *transferWriter) writeHeader(writeHeader func(key string, values ...string) error) error {
250 if t.Close && !hasToken(headerGet(t.Header, "Connection"), "close") {
251 err := writeHeader("Connection", "close")
252 if err != nil {
253 return err
254 }
255 }
256
257 // Write Content-Length and/or Transfer-Encoding whose values are a
258 // function of the sanitized field triple (Body, ContentLength,
259 // TransferEncoding)
260 if t.shouldSendContentLength() {
261 err := writeHeader("Content-Length", strconv.FormatInt(t.ContentLength, 10))
262 if err != nil {
263 return err
264 }
265 } else if chunked(t.TransferEncoding) {
266 err := writeHeader("Transfer-Encoding", "chunked")
267 if err != nil {
268 return err
269 }
270 }
271
272 // Write Trailer header
273 if t.Trailer != nil {
274 keys := make([]string, 0, len(t.Trailer))
275 for k := range t.Trailer {
276 k = http.CanonicalHeaderKey(k)
277 switch k {
278 case "Transfer-Encoding", "Trailer", "Content-Length":
279 return badStringError("invalid Trailer key", k)
280 }
281 keys = append(keys, k)
282 }
283 if len(keys) > 0 {
284 slices.Sort(keys)
285 // TODO: could do better allocation-wise here, but trailers are rare,
286 // so being lazy for now.
287 err := writeHeader("Trailer", strings.Join(keys, ","))
288 if err != nil {
289 return err
290 }
291 }
292 }
293
294 return nil
295}
296
297// always closes t.BodyCloser
298func (t *transferWriter) writeBody(w io.Writer, dumps []*dump.Dumper) (err error) {

Callers 1

writeRequestMethod · 0.45

Calls 5

hasTokenFunction · 0.85
headerGetFunction · 0.85
chunkedFunction · 0.85
badStringErrorFunction · 0.85

Tested by

no test coverage detected