Skip to content

Instantly share code, notes, and snippets.

@nemosupremo
Created April 26, 2016 19:29
Show Gist options
  • Save nemosupremo/753ca2db95faaa6fd0395fe857b36c21 to your computer and use it in GitHub Desktop.
Save nemosupremo/753ca2db95faaa6fd0395fe857b36c21 to your computer and use it in GitHub Desktop.
package main
import (
//"crypto/tls"
"io"
"io/ioutil"
"log"
"net/http"
"os"
"strings"
"github.com/nemothekid/net/http2"
)
type LimitedReader struct {
R io.Reader // underlying reader
N int64 // max bytes remaining
}
func (l *LimitedReader) Read(p []byte) (n int, err error) {
if int64(len(p)) > l.N {
p = p[0:l.N]
}
n, err = l.R.Read(p)
//l.N -= int64(n)
return
}
func main() {
serverURL := "https://localhost:1333"
if envServURL := os.Getenv("SERVER_URL"); envServURL != "" {
serverURL = envServURL
}
/*certs, err := tls.LoadX509KeyPair("key.crt", "key.key")
if err != nil {
log.Fatal(err)
}
tr := &http.Transport{
TLSClientConfig: &tls.Config{
Certificates: []tls.Certificate{certs},
InsecureSkipVerify: true,
},
}
*/
tr := &http.Transport{}
http2.ConfigureTransport(tr)
client := &http.Client{
Transport: tr,
}
// Make a GigaByte of data
raw := strings.Repeat("A", 1024*1024*1024)
log.Printf("len(data)=%v\n", len(raw))
sr := &LimitedReader{strings.NewReader(raw), 2048}
req, err := http.NewRequest("POST", serverURL, sr)
if err != nil {
log.Fatal(err)
}
log.Printf("client.Do next\n")
res, err := client.Do(req)
log.Printf("client.Do done\n")
if err != nil {
log.Fatal(err)
}
n, err := io.Copy(ioutil.Discard, res.Body)
log.Printf("done Reading the server response's body n=(%v) err=%v\nres.headers: %v\n", n, err, res.Header)
_ = res.Body.Close()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment