github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/util/server/middleware.go (about)

     1  package server
     2  
     3  import (
     4  	"net/http"
     5  
     6  	"github.com/weaveworks/common/httpgrpc"
     7  	"github.com/weaveworks/common/middleware"
     8  )
     9  
    10  // NewPrepopulateMiddleware creates a middleware which will parse incoming http forms.
    11  // This is important because some endpoints can POST x-www-form-urlencoded bodies instead of GET w/ query strings.
    12  func NewPrepopulateMiddleware() middleware.Interface {
    13  	return middleware.Func(func(next http.Handler) http.Handler {
    14  		return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
    15  			err := req.ParseForm()
    16  			if err != nil {
    17  				WriteError(httpgrpc.Errorf(http.StatusBadRequest, err.Error()), w)
    18  				return
    19  
    20  			}
    21  			next.ServeHTTP(w, req)
    22  		})
    23  	})
    24  }
    25  
    26  func ResponseJSONMiddleware() middleware.Interface {
    27  	return middleware.Func(func(next http.Handler) http.Handler {
    28  		return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
    29  			w.Header().Set("Content-Type", "application/json; charset=UTF-8")
    30  			next.ServeHTTP(w, req)
    31  		})
    32  	})
    33  }