auth

Paddy 2015-01-04 Parent:9a5999963868 Child:224f0610d3e7

110:d46d22e5b5d6 Browse Files

Allow empty "Accept" headers. Some OAuth2 clients don't set Accept headers at all. Detect this, and just return JSON by default.

request.go

     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)