aboutsummaryrefslogtreecommitdiff
path: root/utils.go
diff options
context:
space:
mode:
authortherealbobo2020-09-11 16:00:19 +0000
committertherealbobo2020-09-11 16:00:19 +0000
commit55806495242672ccf18e6bd96a73956bce61366f (patch)
tree7d9cc232558508daac7bc4136ba65d3b20cade44 /utils.go
parent1e8a07f770c85a2ed6159798d1fb00dbebe08e98 (diff)
added support to http response body decoding
Diffstat (limited to 'utils.go')
-rw-r--r--utils.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/utils.go b/utils.go
index a14fdca..e222b17 100644
--- a/utils.go
+++ b/utils.go
@@ -13,6 +13,12 @@ import (
"net"
"os"
"time"
+ //"net/textproto"
+ "net/http"
+ "bufio"
+ "strings"
+ "io/ioutil"
+ "compress/gzip"
)
func Sha256Sum(fileName string) (string, error) {
@@ -108,6 +114,41 @@ func DecodeBytes(buffer []byte, format string) string {
}
}
+func DecodeHttpResponse(raw string) string {
+ var header string
+ trailer := "\n"
+ reader := bufio.NewReader(strings.NewReader(raw))
+ resp,err := http.ReadResponse(reader, &http.Request{})
+ if err != nil{
+ log.Info("Reading response: ",resp)
+ return raw + trailer
+ }
+
+ defer resp.Body.Close()
+
+ if resp.StatusCode == http.StatusOK {
+ var bodyReader io.ReadCloser
+ switch resp.Header.Get("Content-Encoding") {
+ case "gzip":
+ bodyReader, err = gzip.NewReader(resp.Body)
+ if err != nil {
+ log.Error("Gunzipping body: ",err)
+ }
+ header = "\n[==== GUNZIPPED ====]\n"
+ trailer = "\n[===================]\n"
+ defer bodyReader.Close()
+ default:
+ bodyReader = resp.Body
+ }
+ body, err := ioutil.ReadAll(bodyReader)
+ if err != nil{
+ log.Error("Reading body: ",err)
+ }
+ return raw + header + string(body) + trailer
+ }
+ return raw + trailer
+}
+
func CopyFile(dst, src string) error {
in, err := os.Open(src)
if err != nil {