aboutsummaryrefslogtreecommitdiff
path: root/weed/util/http_util.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/util/http_util.go')
-rw-r--r--weed/util/http_util.go31
1 files changed, 25 insertions, 6 deletions
diff --git a/weed/util/http_util.go b/weed/util/http_util.go
index b74e30ad7..a1f58d482 100644
--- a/weed/util/http_util.go
+++ b/weed/util/http_util.go
@@ -1,6 +1,7 @@
package util
import (
+ "bufio"
"bytes"
"compress/gzip"
"encoding/json"
@@ -31,6 +32,25 @@ func init() {
}
}
+func PostContent(url string, fnWriteBody func(w *bufio.Writer), fnReqHeader func(*fasthttp.RequestHeader), fnResp func(resp *fasthttp.Response) error) error {
+ req := fasthttp.AcquireRequest()
+ resp := fasthttp.AcquireResponse()
+ defer fasthttp.ReleaseRequest(req)
+ defer fasthttp.ReleaseResponse(resp)
+
+ req.SetRequestURI(url)
+ req.Header.SetMethod(fasthttp.MethodPost)
+ fnReqHeader(&req.Header)
+ req.SetBodyStreamWriter(fnWriteBody)
+ if err := fasthttp.Do(req, resp); err != nil {
+ return err
+ }
+ if resp.StatusCode() >= 400 {
+ return fmt.Errorf("%s: %d", url, resp.StatusCode())
+ }
+ return fnResp(resp)
+}
+
func PostBytes(url string, body []byte) ([]byte, error) {
r, err := client.Post(url, "", bytes.NewReader(body))
if err != nil {
@@ -85,22 +105,21 @@ func Get(url string) ([]byte, error) {
return b, nil
}
-func Head(url string, fn func(header fasthttp.ResponseHeader)) error {
+func Head(url string, fn func(*fasthttp.ResponseHeader)) error {
req := fasthttp.AcquireRequest()
resp := fasthttp.AcquireResponse()
- defer fasthttp.ReleaseRequest(req) // <- do not forget to release
- defer fasthttp.ReleaseResponse(resp) // <- do not forget to release
+ defer fasthttp.ReleaseRequest(req)
+ defer fasthttp.ReleaseResponse(resp)
- c := fasthttp.Client{}
req.SetRequestURI(url)
req.Header.SetMethod(fasthttp.MethodHead)
- if err := c.Do(req, resp); err != nil {
+ if err := fasthttp.Do(req, resp); err != nil {
return err
}
if resp.StatusCode() >= 400 {
return fmt.Errorf("%s: %d", url, resp.StatusCode())
}
- fn(resp.Header)
+ fn(&resp.Header)
return nil
}