| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package main
- import (
- "bytes"
- "flag"
- "io"
- "net/http"
- "sync"
- quic "github.com/lucas-clemente/quic-go"
- "github.com/lucas-clemente/quic-go/h2quic"
- "github.com/lucas-clemente/quic-go/internal/protocol"
- "github.com/lucas-clemente/quic-go/internal/utils"
- )
- func main() {
- verbose := flag.Bool("v", false, "verbose")
- tls := flag.Bool("tls", false, "activate support for IETF QUIC (work in progress)")
- flag.Parse()
- urls := flag.Args()
- logger := utils.DefaultLogger
- if *verbose {
- logger.SetLogLevel(utils.LogLevelDebug)
- } else {
- logger.SetLogLevel(utils.LogLevelInfo)
- }
- logger.SetLogTimeFormat("")
- versions := protocol.SupportedVersions
- if *tls {
- versions = append([]protocol.VersionNumber{protocol.VersionTLS}, versions...)
- }
- roundTripper := &h2quic.RoundTripper{
- QuicConfig: &quic.Config{Versions: versions},
- }
- defer roundTripper.Close()
- hclient := &http.Client{
- Transport: roundTripper,
- }
- var wg sync.WaitGroup
- wg.Add(len(urls))
- for _, addr := range urls {
- logger.Infof("GET %s", addr)
- go func(addr string) {
- rsp, err := hclient.Get(addr)
- if err != nil {
- panic(err)
- }
- logger.Infof("Got response for %s: %#v", addr, rsp)
- body := &bytes.Buffer{}
- _, err = io.Copy(body, rsp.Body)
- if err != nil {
- panic(err)
- }
- logger.Infof("Request Body:")
- logger.Infof("%s", body.Bytes())
- wg.Done()
- }(addr)
- }
- wg.Wait()
- }
|