in cli_tools/diagnostics/main.go [92:127]
func uploadToSignedURL(uploadPath string, signedURL string) error {
client := &http.Client{
Timeout: 10 * time.Second,
}
// The signed Url gives us the actual url to upload to
req, err := http.NewRequest("POST", signedURL, nil)
if err != nil {
return err
}
req.Header.Set("x-goog-resumable", "start")
resp, err := client.Do(req)
if err != nil {
return err
}
uploadURL := resp.Header.Get("Location")
// Upload the file
f, err := os.Open(uploadPath)
if err != nil {
return err
}
bodyReader, bodyWriter := io.Pipe()
go func() {
defer bodyWriter.Close()
defer f.Close()
io.Copy(bodyWriter, f)
}()
req, err = http.NewRequest("PUT", uploadURL, bodyReader)
if err != nil {
return err
}
_, err = client.Do(req)
return err
}