auth
auth/request.go
Allow empty "Accept" headers. Some OAuth2 clients don't set Accept headers at all. Detect this, and just return JSON by default.
1.1 --- a/request.go Sun Jan 04 02:50:31 2015 -0500 1.2 +++ b/request.go Sun Jan 04 02:51:15 2015 -0500 1.3 @@ -44,12 +44,13 @@ 1.4 1.5 func negotiate(h http.Handler) http.Handler { 1.6 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 1.7 - contentType := goautoneg.Negotiate(r.Header.Get("Accept"), encoders) 1.8 - if contentType == "" { 1.9 - w.WriteHeader(http.StatusNotAcceptable) 1.10 - log.Println("Unsupported Accept header:", r.Header.Get("Accept")) 1.11 - w.Write([]byte("Unsupported content type requested: " + r.Header.Get("Accept"))) 1.12 - return 1.13 + if r.Header.Get("Accept") != "" { 1.14 + contentType := goautoneg.Negotiate(r.Header.Get("Accept"), encoders) 1.15 + if contentType == "" { 1.16 + w.WriteHeader(http.StatusNotAcceptable) 1.17 + w.Write([]byte("Unsupported content type requested: " + r.Header.Get("Accept"))) 1.18 + return 1.19 + } 1.20 } 1.21 h.ServeHTTP(w, r) 1.22 }) 1.23 @@ -64,6 +65,9 @@ 1.24 case "application/json": 1.25 enc := json.NewEncoder(w) 1.26 err = enc.Encode(resp) 1.27 + default: 1.28 + enc := json.NewEncoder(w) 1.29 + err = enc.Encode(resp) 1.30 } 1.31 if err != nil { 1.32 log.Println(err)