Turns out, Go will automatically set Content-Length

This commit is contained in:
Mislav Marohnić 2020-06-10 16:29:50 +02:00
parent b099bb3037
commit 141388fd23
2 changed files with 8 additions and 29 deletions

View file

@ -98,16 +98,13 @@ func apiRun(opts *ApiOptions) error {
} }
if opts.RequestInputFile != "" { if opts.RequestInputFile != "" {
file, size, err := openUserFile(opts.RequestInputFile, opts.IO.In) file, err := openUserFile(opts.RequestInputFile, opts.IO.In)
if err != nil { if err != nil {
return err return err
} }
defer file.Close() defer file.Close()
requestPath = addQuery(requestPath, params) requestPath = addQuery(requestPath, params)
requestBody = file requestBody = file
if size > 0 {
requestHeaders = append(requestHeaders, fmt.Sprintf("Content-Length: %d", size))
}
} }
httpClient, err := opts.HttpClient() httpClient, err := opts.HttpClient()
@ -198,34 +195,17 @@ func magicFieldValue(v string, stdin io.ReadCloser) (interface{}, error) {
} }
func readUserFile(fn string, stdin io.ReadCloser) ([]byte, error) { func readUserFile(fn string, stdin io.ReadCloser) ([]byte, error) {
var r io.ReadCloser r, err := openUserFile(fn, stdin)
if fn == "-" { if err != nil {
r = stdin return nil, err
} else {
var err error
r, err = os.Open(fn)
if err != nil {
return nil, err
}
} }
defer r.Close() defer r.Close()
return ioutil.ReadAll(r) return ioutil.ReadAll(r)
} }
func openUserFile(fn string, stdin io.ReadCloser) (io.ReadCloser, int64, error) { func openUserFile(fn string, stdin io.ReadCloser) (io.ReadCloser, error) {
if fn == "-" { if fn == "-" {
return stdin, 0, nil return stdin, nil
} }
return os.Open(fn)
r, err := os.Open(fn)
if err != nil {
return r, 0, err
}
s, err := os.Stat(fn)
if err != nil {
return r, 0, err
}
return r, s.Size(), nil
} }

View file

@ -373,7 +373,7 @@ func Test_openUserFile(t *testing.T) {
f.Close() f.Close()
t.Cleanup(func() { os.Remove(f.Name()) }) t.Cleanup(func() { os.Remove(f.Name()) })
file, length, err := openUserFile(f.Name(), nil) file, err := openUserFile(f.Name(), nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -384,6 +384,5 @@ func Test_openUserFile(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
assert.Equal(t, int64(13), length)
assert.Equal(t, "file contents", string(fb)) assert.Equal(t, "file contents", string(fb))
} }