commit 46c4edbc675a2e6e580b32fd86d89f6e8d744631 Author: Stephen McQuay Date: Fri Jun 6 15:41:45 2014 -0700 init diff --git a/main.go b/main.go new file mode 100644 index 0000000..65d195c --- /dev/null +++ b/main.go @@ -0,0 +1,65 @@ +package main + +import ( + "flag" + "fmt" + "io" + "log" + "mime/multipart" + "net/http" + "os" + "time" +) + +func dump(w http.ResponseWriter, req *http.Request) { + log.Println("start") + start := time.Now() + buffer := make([]byte, 2048) + reader, err := req.MultipartReader() + if err != nil { + log.Fatal(err) + } + var part *multipart.Part + err = nil + bytesRead := 0 + for err = nil; err != io.EOF; part, err = reader.NextPart() { + if err != nil { + log.Fatal(err) + } + if part != nil { + for { + n, err := part.Read(buffer) + bytesRead += n + if err == io.EOF || n == 0 { + break + } + if err != nil { + log.Fatal(err) + } + } + } + } + d := time.Since(start) + log.Printf("stop, %d bytes in %v (%f mb/s)", bytesRead, d, float64(bytesRead*8)/d.Seconds()/1e6) +} + +func main() { + log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile) + flag.Parse() + + port := 7777 + + hostname, err := os.Hostname() + if err != nil { + log.Fatal("problem getting hostname:", err) + } + log.Printf("serving on: http://%s:%d/", hostname, port) + addr := fmt.Sprintf(":%d", port) + + http.HandleFunc("/", dump) + + err = http.ListenAndServe(addr, nil) + if err != nil { + log.Fatal(err) + } +}