mirror of
https://github.com/weaveworks/scope.git
synced 2026-07-20 22:10:30 +00:00
```
$ gvt delete golang.org/x/net/context
$ gvt fetch golang.org/x/net/context
2017/10/08 XX:XX:XX Fetching: golang.org/x/net/context
$ git grep -l "golang.org/x/net/context" | grep -v vendor | xargs sed -i 's:golang.org/x/net/context:context:g'
$ git grep -l "context/ctxhttp" | grep -v vendor | xargs sed -i 's:context/ctxhttp:golang.org/x/net/context/ctxhttp:g'
$ gofmt -s -w app
$ gofmt -s -w common
$ gofmt -s -w probe
$ gofmt -s -w prog
$ gofmt -s -w tools
```
This fixes errors like:
```
app/multitenant/aws_collector.go:222: cannot use func literal (type func("github.com/weaveworks/scope/vendor/golang.org/x/net/context".Context) error) as type func("context".Context) error in argument to instrument.TimeRequestHistogram
app/multitenant/aws_collector.go:439: cannot use func literal (type func("github.com/weaveworks/scope/vendor/golang.org/x/net/context".Context) error) as type func("context".Context) error in argument to instrument.TimeRequestHistogram
app/multitenant/memcache_client.go:155: cannot use func literal (type func("github.com/weaveworks/scope/vendor/golang.org/x/net/context".Context) error) as type func("context".Context) error in argument to instrument.TimeRequestHistogramStatus
app/multitenant/memcache_client.go:210: cannot use func literal (type func("github.com/weaveworks/scope/vendor/golang.org/x/net/context".Context) error) as type func("context".Context) error in argument to instrument.TimeRequestHistogramStatus
app/multitenant/s3_client.go:74: cannot use func literal (type func("github.com/weaveworks/scope/vendor/golang.org/x/net/context".Context) error) as type func("context".Context) error in argument to instrument.TimeRequestHistogram
app/multitenant/s3_client.go:91: cannot use func literal (type func("github.com/weaveworks/scope/vendor/golang.org/x/net/context".Context) error) as type func("context".Context) error in argument to instrument.TimeRequestHistogram
app/multitenant/sqs_control_router.go:99: cannot use func literal (type func("github.com/weaveworks/scope/vendor/golang.org/x/net/context".Context) error) as type func("context".Context) error in argument to instrument.TimeRequestHistogram
app/multitenant/sqs_control_router.go:133: cannot use func literal (type func("github.com/weaveworks/scope/vendor/golang.org/x/net/context".Context) error) as type func("context".Context) error in argument to instrument.TimeRequestHistogram
app/multitenant/sqs_control_router.go:163: cannot use func literal (type func("github.com/weaveworks/scope/vendor/golang.org/x/net/context".Context) error) as type func("context".Context) error in argument to instrument.TimeRequestHistogram
app/multitenant/sqs_control_router.go:199: cannot use func literal (type func("github.com/weaveworks/scope/vendor/golang.org/x/net/context".Context) error) as type func("context".Context) error in argument to instrument.TimeRequestHistogram
app/multitenant/sqs_control_router.go:199: too many errors
```
38 lines
910 B
Go
38 lines
910 B
Go
package multitenant
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"context"
|
|
|
|
"github.com/weaveworks/scope/app"
|
|
)
|
|
|
|
// ErrUserIDNotFound should be returned by a UserIDer when it fails to ID the
|
|
// user for a request.
|
|
var ErrUserIDNotFound = fmt.Errorf("User ID not found")
|
|
|
|
// UserIDer identifies users given a request context.
|
|
type UserIDer func(context.Context) (string, error)
|
|
|
|
// UserIDHeader returns a UserIDer which a header by the supplied key.
|
|
func UserIDHeader(headerName string) UserIDer {
|
|
return func(ctx context.Context) (string, error) {
|
|
request, ok := ctx.Value(app.RequestCtxKey).(*http.Request)
|
|
if !ok || request == nil {
|
|
return "", ErrUserIDNotFound
|
|
}
|
|
userID := request.Header.Get(headerName)
|
|
if userID == "" {
|
|
return "", ErrUserIDNotFound
|
|
}
|
|
return userID, nil
|
|
}
|
|
}
|
|
|
|
// NoopUserIDer always returns the empty user ID.
|
|
func NoopUserIDer(context.Context) (string, error) {
|
|
return "", nil
|
|
}
|