MCPcopy Index your code
hub / github.com/dreadl0ck/netcap / newHTTPFromResponse

Function newHTTPFromResponse

decoder/stream/http/utils.go:132–182  ·  view source on GitHub ↗
(res *http.Response)

Source from the content-addressed store, hash-verified

130}
131
132func newHTTPFromResponse(res *http.Response) *types.HTTP {
133 var (
134 detected string
135 contentLength = int32(res.ContentLength)
136 )
137
138 // read body data
139 body, err := ioutil.ReadAll(res.Body)
140 if err == nil {
141
142 if contentLength == -1 {
143 // determine length manually
144 contentLength = int32(len(body))
145 }
146
147 // decompress payload if required
148 if res.Header.Get(headerContentEncoding) == "gzip" {
149 r, errReader := gzip.NewReader(bytes.NewReader(body))
150 if errReader == nil {
151 body, err = ioutil.ReadAll(r)
152 if err == nil {
153 detected = http.DetectContentType(body)
154 }
155 }
156 } else {
157 detected = http.DetectContentType(body)
158 }
159 }
160
161 return &types.HTTP{
162 ResContentLength: contentLength,
163 ResContentType: res.Header.Get(headerContentType),
164 StatusCode: int32(res.StatusCode),
165 ServerName: res.Header.Get("Server"),
166 ResContentEncoding: res.Header.Get(headerContentEncoding),
167 ResContentTypeDetected: detected,
168 ResCookies: readCookies(res.Cookies()),
169 ResponseHeader: readHeader(res.Header),
170 // Security headers from response
171 StrictTransportSecurity: res.Header.Get("Strict-Transport-Security"),
172 ContentSecurityPolicy: res.Header.Get("Content-Security-Policy"),
173 XContentTypeOptions: res.Header.Get("X-Content-Type-Options"),
174 XFrameOptions: res.Header.Get("X-Frame-Options"),
175 XXSSProtection: res.Header.Get("X-XSS-Protection"),
176 ReferrerPolicy: res.Header.Get("Referrer-Policy"),
177 AccessControlAllowOrigin: res.Header.Get("Access-Control-Allow-Origin"),
178 HasServerTiming: res.Header.Get("Server-Timing") != "",
179 Server: res.Header.Get("Server"),
180 XPoweredBy: res.Header.Get("X-Powered-By"),
181 }
182}
183
184// extractAuthType extracts the authorization type from the Authorization header
185func extractAuthType(authHeader string) string {

Callers 1

DecodeMethod · 0.85

Calls 2

readCookiesFunction · 0.85
readHeaderFunction · 0.85

Tested by

no test coverage detected