Simplify auth.Challenge interface to SetHeaders

This removes the erroneous http.Handler interface in favor a simple SetHeaders
method that only operattes on the response. Several unnecessary uses of pointer
types were also fixed up.

Signed-off-by: Stephen J Day <stephen.day@docker.com>
This commit is contained in:
Stephen J Day
2015-07-23 19:39:56 -07:00
parent a1ce8d81f7
commit 4a2300aaa9
7 changed files with 28 additions and 27 deletions

View File

@@ -75,7 +75,10 @@ type challenge struct {
scope string
}
func (ch *challenge) ServeHTTP(w http.ResponseWriter, r *http.Request) {
var _ auth.Challenge = challenge{}
// SetHeaders sets a simple bearer challenge on the response.
func (ch challenge) SetHeaders(w http.ResponseWriter) {
header := fmt.Sprintf("Bearer realm=%q,service=%q", ch.realm, ch.service)
if ch.scope != "" {
@@ -85,7 +88,7 @@ func (ch *challenge) ServeHTTP(w http.ResponseWriter, r *http.Request) {
w.Header().Set("WWW-Authenticate", header)
}
func (ch *challenge) Error() string {
func (ch challenge) Error() string {
return fmt.Sprintf("silly authentication challenge: %#v", ch)
}

View File

@@ -21,7 +21,7 @@ func TestSillyAccessController(t *testing.T) {
if err != nil {
switch err := err.(type) {
case auth.Challenge:
err.ServeHTTP(w, r)
err.SetHeaders(w)
w.WriteHeader(http.StatusUnauthorized)
return
default: