package webutility import ( "net/http" "time" "git.to-net.rs/marko.tikvic/gologger" ) func SetHeaders(h http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, req *http.Request) { SetDefaultHeaders(w) if req.Method == http.MethodOptions { return } h(w, req) } } func ParseForm(h http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, req *http.Request) { err := req.ParseForm() if err != nil { BadRequest(w, req, err.Error()) return } h(w, req) } } var trafficLogger *gologger.Logger func EnableLogging(log string) error { var err error trafficLogger, err = gologger.New(log, gologger.MaxLogSize5MB) return err } func Log(h http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, req *http.Request) { in := trafficLogger.RequestLog(req, "") w2 := WrapWithStatusRecorder(w) t1 := time.Now() h(w2, req) t2 := time.Now() out := trafficLogger.ResponseLog(w2.Status(), t2.Sub(t1)) trafficLogger.LogHTTPTraffic(in, out) } } func Auth(roles string, h http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, req *http.Request) { if _, ok := AuthCheck(req, roles); !ok { Unauthorized(w, req, "") return } h(w, req) } }