MCPcopy Index your code
hub / github.com/subtrace/subtrace / UseRequest

Method UseRequest

tracer/parser.go:200–276  ·  view source on GitHub ↗
(req *http.Request)

Source from the content-addressed store, hash-verified

198}
199
200func (p *Parser) UseRequest(req *http.Request) {
201 sampler := newSampler(req.Body)
202 req.Body = sampler
203
204 p.wg.Add(1)
205 go func() {
206 defer p.wg.Done()
207
208 h, err := har.NewRequest(req, false)
209 if err != nil {
210 p.errs <- fmt.Errorf("parse HAR request: %w", err)
211 return
212 }
213
214 for i := range h.Headers {
215 switch strings.ToLower(h.Headers[i].Name) {
216 case "authorization", "cookie":
217 h.Headers[i].Value = p.global.Config.SantizeCredential(h.Headers[i].Value)
218 }
219 }
220
221 for i := range h.Cookies {
222 h.Cookies[i].Value = p.global.Config.SantizeCredential(h.Cookies[i].Value)
223 }
224
225 start := time.Now()
226 if err := <-sampler.errs; err != nil {
227 p.errs <- fmt.Errorf("read request body: %w", err)
228 return
229 }
230 p.timings.Send = time.Since(start).Milliseconds()
231
232 text := sampler.data[:sampler.used]
233 if !sampler.over {
234 switch req.Header.Get("content-encoding") {
235 case "gzip":
236 gr, err := gzip.NewReader(bytes.NewBuffer(text))
237 if err != nil {
238 p.errs <- fmt.Errorf("create gzip reader: %w", err)
239 return
240 }
241 if raw, err := io.ReadAll(gr); err != nil {
242 p.errs <- fmt.Errorf("read gzip: %w", err)
243 return
244 } else {
245 text = raw
246 }
247 case "br":
248 if raw, err := io.ReadAll(brotli.NewReader(bytes.NewBuffer(text))); err != nil {
249 p.errs <- fmt.Errorf("decode brotli: %w", err)
250 return
251 } else {
252 text = raw
253 }
254 }
255 }
256
257 h.PostData = &har.PostData{

Callers 4

RoundTripMethod · 0.95
proxyHTTP1Method · 0.95
RoundTripMethod · 0.95
proxyHTTP2Method · 0.80

Calls 6

newSamplerFunction · 0.85
jsonifyFunction · 0.85
AddMethod · 0.80
SantizeCredentialMethod · 0.80
DoneMethod · 0.65
GetMethod · 0.45

Tested by

no test coverage detected