aboutsummaryrefslogtreecommitdiff
path: root/request.go
diff options
context:
space:
mode:
authorStefan Majewsky <majewsky@gmx.net>2018-07-11 14:01:36 +0200
committerStefan Majewsky <majewsky@gmx.net>2018-07-11 14:01:36 +0200
commit81c8b90bcb1345f1c0421a25a16a2d393d27805d (patch)
tree3fafe677b4c058a4b51f65f4d12beb5a6bc0a48e /request.go
parent2d3eb72207f62b7bc4e08b3dc750f7da8cacb53b (diff)
downloadgo-schwift-81c8b90bcb1345f1c0421a25a16a2d393d27805d.tar.gz
support aborting requests with context.Context
Diffstat (limited to 'request.go')
-rw-r--r--request.go6
1 files changed, 6 insertions, 0 deletions
diff --git a/request.go b/request.go
index 2f86df2..1705918 100644
--- a/request.go
+++ b/request.go
@@ -19,6 +19,7 @@
package schwift
import (
+ "context"
"io"
"io/ioutil"
"net/http"
@@ -41,12 +42,14 @@ import (
type RequestOptions struct {
Headers Headers
Values url.Values
+ Context context.Context
}
func cloneRequestOptions(orig *RequestOptions, additional Headers) *RequestOptions {
result := RequestOptions{
Headers: make(Headers),
Values: make(url.Values),
+ Context: orig.Context,
}
if orig != nil {
for k, v := range orig.Headers {
@@ -124,6 +127,9 @@ func (r Request) Do(backend Backend) (*http.Response, error) {
for k, v := range r.Options.Headers {
req.Header[k] = []string{v}
}
+ if r.Options.Context != nil {
+ req = req.WithContext(r.Options.Context)
+ }
}
if r.Body != nil {
req.Header.Set("Expect", "100-continue")