package server import ( "fmt" "local/gziphttp" "local/router" "net/http" "path/filepath" ) func (s *Server) Routes() error { wildcard := router.Wildcard endpoints := []struct { path string handler http.HandlerFunc }{ { path: fmt.Sprintf("%s%s", wildcard, wildcard), handler: s.gzip(s.authenticate(http.NotFound)), }, } for _, endpoint := range endpoints { if err := s.Add(endpoint.path, endpoint.handler); err != nil { return err } } return nil } func (s *Server) gzip(h http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { if gziphttp.Can(r) { gz := gziphttp.New(w) defer gz.Close() w = gz } if filepath.Ext(r.URL.Path) == ".css" { w.Header().Set("Content-Type", "text/css; charset=utf-8") } h(w, r) } }