Merge branch 'b12-master'

This commit is contained in:
vitalii 2018-07-11 12:41:49 +03:00
commit f821ab73e9
2 changed files with 29 additions and 4 deletions

15
.gitignore vendored
View File

@ -1,6 +1,19 @@
# Folders to ignore
/src
/bin
/pkg
/gowebdav
.idea/
/.idea
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib
# Test binary, build with `go test -c`
*.test
# Output of the go coverage tool, specifically when used with LiteIDE
*.out

View File

@ -12,10 +12,16 @@ import (
func (c *Client) req(method, path string, body io.Reader, intercept func(*http.Request)) (req *http.Response, err error) {
// Tee the body, because if authorization fails we will need to read from it again.
var r *http.Request
var ba bytes.Buffer
bb := io.TeeReader(body, &ba)
r, err := http.NewRequest(method, PathEscape(Join(c.root, path)), &ba)
if body == nil {
r, err = http.NewRequest(method, PathEscape(Join(c.root, path)), nil)
} else {
r, err = http.NewRequest(method, PathEscape(Join(c.root, path)), bb)
}
if err != nil {
return nil, err
}
@ -42,7 +48,13 @@ func (c *Client) req(method, path string, body io.Reader, intercept func(*http.R
} else {
return rs, newPathError("Authorize", c.root, rs.StatusCode)
}
return c.req(method, path, bb, intercept)
if body == nil {
return c.req(method, path, nil, intercept)
} else {
return c.req(method, path, &ba, intercept)
}
} else if rs.StatusCode == 401 {
return rs, newPathError("Authorize", c.root, rs.StatusCode)
}