Skip to content

Instantly share code, notes, and snippets.

@kasey
Created August 6, 2021 22:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kasey/c9e663eae5baebbf8fbe548c2b1d961b to your computer and use it in GitHub Desktop.
Save kasey/c9e663eae5baebbf8fbe548c2b1d961b to your computer and use it in GitHub Desktop.
package main
import (
"bufio"
"bytes"
"compress/gzip"
"encoding/base64"
"io"
"log"
"net/http"
"os"
)
func main() {
fh, err := os.Open("request-log.gz")
if err != nil {
log.Fatal(err)
}
gzreader, err := gzip.NewReader(fh)
defer gzreader.Close()
defer fh.Close()
lr := bufio.NewReader(gzreader)
for {
line, err := lr.ReadBytes([]byte("\n")[0])
if err == io.EOF {
os.Exit(0)
}
if err != nil {
log.Fatal(err)
}
line = line[0 : len(line)-1]
decoded := make([]byte, base64.StdEncoding.DecodedLen(len(line)))
_, err = base64.StdEncoding.Decode(decoded, line)
if err != nil {
log.Fatal(err)
}
dbuf := bytes.NewBuffer(decoded)
req, err := http.ReadRequest(bufio.NewReader(dbuf))
if err != nil {
log.Fatal(err)
}
req.URL.Scheme = "http"
req.URL.Host = "localhost:8082"
req.RequestURI = ""
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
respBuf := bytes.NewBuffer(nil)
resp.Write(respBuf)
log.Print(respBuf.String())
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment