nuclei/v2/pkg/requests/util.go

42 lines
1014 B
Go
Raw Normal View History

2020-04-30 17:39:33 +02:00
package requests
import (
"bytes"
"compress/gzip"
2020-04-30 17:39:33 +02:00
"fmt"
"io/ioutil"
2020-04-30 17:39:33 +02:00
"strings"
"github.com/projectdiscovery/retryablehttp-go"
2020-04-30 17:39:33 +02:00
)
func newReplacer(values map[string]interface{}) *strings.Replacer {
var replacerItems []string
for k, v := range values {
replacerItems = append(replacerItems, fmt.Sprintf("{{%s}}", k), fmt.Sprintf("%s", v), k, fmt.Sprintf("%s", v))
2020-04-30 17:39:33 +02:00
}
return strings.NewReplacer(replacerItems...)
}
// HandleDecompression if the user specified a custom encoding (as golang transport doesn't do this automatically)
func HandleDecompression(r *retryablehttp.Request, bodyOrig []byte) (bodyDec []byte, err error) {
encodingHeader := strings.ToLower(r.Header.Get("Accept-Encoding"))
if encodingHeader == "gzip" {
gzipreader, err := gzip.NewReader(bytes.NewReader(bodyOrig))
if err != nil {
return bodyDec, err
}
defer gzipreader.Close()
bodyDec, err = ioutil.ReadAll(gzipreader)
if err != nil {
return bodyDec, err
}
return bodyDec, nil
}
return bodyOrig, nil
}