diff --git a/Gopkg.lock b/Gopkg.lock index 95684fd..ab6409d 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -3,7 +3,10 @@ [[projects]] name = "github.com/Luzifer/go_helpers" - packages = ["accessLogger"] + packages = [ + "accessLogger", + "str" + ] revision = "94b91ff63a5db8e22c4d121e6c5c17b44135be4d" version = "v2.5.0" @@ -126,10 +129,7 @@ [[projects]] branch = "master" name = "golang.org/x/net" - packages = [ - "context", - "context/ctxhttp" - ] + packages = ["context"] revision = "1e491301e022f8f977054da4c2d852decd59571f" [[projects]] @@ -147,6 +147,6 @@ [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "dc2df5f4e08055a0bc57c20651189dd7bac1e27bfc06e2a9cf255ead61b6faa9" + inputs-digest = "e6aef6c9173fa0d080b8bc11f91175f7ec7ec623e016e9581947dce7ec50a1e7" solver-name = "gps-cdcl" solver-version = 1 diff --git a/service_beerpay.go b/service_beerpay.go index a04129e..dc337f0 100644 --- a/service_beerpay.go +++ b/service_beerpay.go @@ -8,7 +8,6 @@ import ( "time" "golang.org/x/net/context" - "golang.org/x/net/context/ctxhttp" ) func init() { @@ -41,7 +40,8 @@ func (s beerpayServiceHandler) Handle(ctx context.Context, params []string) (tit var resp *http.Response apiURL := fmt.Sprintf("https://beerpay.io/api/v1/%s/projects/%s", params[0], params[1]) - resp, err = ctxhttp.Get(ctx, http.DefaultClient, apiURL) + req, _ := http.NewRequest("GET", apiURL, nil) + resp, err = http.DefaultClient.Do(req.WithContext(ctx)) if err != nil { return } diff --git a/service_github.go b/service_github.go index b12b33d..f66e4a9 100644 --- a/service_github.go +++ b/service_github.go @@ -12,7 +12,6 @@ import ( "github.com/prometheus/client_golang/prometheus" "golang.org/x/net/context" - "golang.org/x/net/context/ctxhttp" ) var ( @@ -312,7 +311,7 @@ func (g githubServiceHandler) fetchAPI(ctx context.Context, path string, headers req.SetBasicAuth(configStore.Str("github.username"), configStore.Str("github.personal_token")) } - resp, err := ctxhttp.Do(ctx, http.DefaultClient, req) + resp, err := http.DefaultClient.Do(req.WithContext(ctx)) if err != nil { return err } diff --git a/service_travis.go b/service_travis.go index cda8d47..7816b7b 100644 --- a/service_travis.go +++ b/service_travis.go @@ -8,7 +8,6 @@ import ( "time" "golang.org/x/net/context" - "golang.org/x/net/context/ctxhttp" ) func init() { @@ -42,7 +41,8 @@ func (t travisServiceHandler) Handle(ctx context.Context, params []string) (titl if err != nil { var resp *http.Response - resp, err = ctxhttp.Get(ctx, http.DefaultClient, "https://api.travis-ci.org/"+path) + req, _ := http.NewRequest("GET", "https://api.travis-ci.org/"+path, nil) + resp, err = http.DefaultClient.Do(req.WithContext(ctx)) if err != nil { return } diff --git a/vendor/github.com/Luzifer/go_helpers/str/slice.go b/vendor/github.com/Luzifer/go_helpers/str/slice.go new file mode 100644 index 0000000..f93af69 --- /dev/null +++ b/vendor/github.com/Luzifer/go_helpers/str/slice.go @@ -0,0 +1,21 @@ +package str + +// AppendIfMissing adds a string to a slice when it's not present yet +func AppendIfMissing(slice []string, s string) []string { + for _, e := range slice { + if e == s { + return slice + } + } + return append(slice, s) +} + +// StringInSlice checks for the existence of a string in the slice +func StringInSlice(a string, list []string) bool { + for _, b := range list { + if b == a { + return true + } + } + return false +} diff --git a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go b/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go deleted file mode 100644 index 606cf1f..0000000 --- a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.7 - -// Package ctxhttp provides helper functions for performing context-aware HTTP requests. -package ctxhttp // import "golang.org/x/net/context/ctxhttp" - -import ( - "io" - "net/http" - "net/url" - "strings" - - "golang.org/x/net/context" -) - -// Do sends an HTTP request with the provided http.Client and returns -// an HTTP response. -// -// If the client is nil, http.DefaultClient is used. -// -// The provided ctx must be non-nil. If it is canceled or times out, -// ctx.Err() will be returned. -func Do(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error) { - if client == nil { - client = http.DefaultClient - } - resp, err := client.Do(req.WithContext(ctx)) - // If we got an error, and the context has been canceled, - // the context's error is probably more useful. - if err != nil { - select { - case <-ctx.Done(): - err = ctx.Err() - default: - } - } - return resp, err -} - -// Get issues a GET request via the Do function. -func Get(ctx context.Context, client *http.Client, url string) (*http.Response, error) { - req, err := http.NewRequest("GET", url, nil) - if err != nil { - return nil, err - } - return Do(ctx, client, req) -} - -// Head issues a HEAD request via the Do function. -func Head(ctx context.Context, client *http.Client, url string) (*http.Response, error) { - req, err := http.NewRequest("HEAD", url, nil) - if err != nil { - return nil, err - } - return Do(ctx, client, req) -} - -// Post issues a POST request via the Do function. -func Post(ctx context.Context, client *http.Client, url string, bodyType string, body io.Reader) (*http.Response, error) { - req, err := http.NewRequest("POST", url, body) - if err != nil { - return nil, err - } - req.Header.Set("Content-Type", bodyType) - return Do(ctx, client, req) -} - -// PostForm issues a POST request via the Do function. -func PostForm(ctx context.Context, client *http.Client, url string, data url.Values) (*http.Response, error) { - return Post(ctx, client, url, "application/x-www-form-urlencoded", strings.NewReader(data.Encode())) -} diff --git a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17.go b/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17.go deleted file mode 100644 index 926870c..0000000 --- a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17.go +++ /dev/null @@ -1,147 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !go1.7 - -package ctxhttp // import "golang.org/x/net/context/ctxhttp" - -import ( - "io" - "net/http" - "net/url" - "strings" - - "golang.org/x/net/context" -) - -func nop() {} - -var ( - testHookContextDoneBeforeHeaders = nop - testHookDoReturned = nop - testHookDidBodyClose = nop -) - -// Do sends an HTTP request with the provided http.Client and returns an HTTP response. -// If the client is nil, http.DefaultClient is used. -// If the context is canceled or times out, ctx.Err() will be returned. -func Do(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error) { - if client == nil { - client = http.DefaultClient - } - - // TODO(djd): Respect any existing value of req.Cancel. - cancel := make(chan struct{}) - req.Cancel = cancel - - type responseAndError struct { - resp *http.Response - err error - } - result := make(chan responseAndError, 1) - - // Make local copies of test hooks closed over by goroutines below. - // Prevents data races in tests. - testHookDoReturned := testHookDoReturned - testHookDidBodyClose := testHookDidBodyClose - - go func() { - resp, err := client.Do(req) - testHookDoReturned() - result <- responseAndError{resp, err} - }() - - var resp *http.Response - - select { - case <-ctx.Done(): - testHookContextDoneBeforeHeaders() - close(cancel) - // Clean up after the goroutine calling client.Do: - go func() { - if r := <-result; r.resp != nil { - testHookDidBodyClose() - r.resp.Body.Close() - } - }() - return nil, ctx.Err() - case r := <-result: - var err error - resp, err = r.resp, r.err - if err != nil { - return resp, err - } - } - - c := make(chan struct{}) - go func() { - select { - case <-ctx.Done(): - close(cancel) - case <-c: - // The response's Body is closed. - } - }() - resp.Body = ¬ifyingReader{resp.Body, c} - - return resp, nil -} - -// Get issues a GET request via the Do function. -func Get(ctx context.Context, client *http.Client, url string) (*http.Response, error) { - req, err := http.NewRequest("GET", url, nil) - if err != nil { - return nil, err - } - return Do(ctx, client, req) -} - -// Head issues a HEAD request via the Do function. -func Head(ctx context.Context, client *http.Client, url string) (*http.Response, error) { - req, err := http.NewRequest("HEAD", url, nil) - if err != nil { - return nil, err - } - return Do(ctx, client, req) -} - -// Post issues a POST request via the Do function. -func Post(ctx context.Context, client *http.Client, url string, bodyType string, body io.Reader) (*http.Response, error) { - req, err := http.NewRequest("POST", url, body) - if err != nil { - return nil, err - } - req.Header.Set("Content-Type", bodyType) - return Do(ctx, client, req) -} - -// PostForm issues a POST request via the Do function. -func PostForm(ctx context.Context, client *http.Client, url string, data url.Values) (*http.Response, error) { - return Post(ctx, client, url, "application/x-www-form-urlencoded", strings.NewReader(data.Encode())) -} - -// notifyingReader is an io.ReadCloser that closes the notify channel after -// Close is called or a Read fails on the underlying ReadCloser. -type notifyingReader struct { - io.ReadCloser - notify chan<- struct{} -} - -func (r *notifyingReader) Read(p []byte) (int, error) { - n, err := r.ReadCloser.Read(p) - if err != nil && r.notify != nil { - close(r.notify) - r.notify = nil - } - return n, err -} - -func (r *notifyingReader) Close() error { - err := r.ReadCloser.Close() - if r.notify != nil { - close(r.notify) - r.notify = nil - } - return err -}