diff --git a/router/router.go b/router/router.go index 57de30e6..ecd9384c 100644 --- a/router/router.go +++ b/router/router.go @@ -4,38 +4,54 @@ import ( "net/http" "github.com/ewhal/nyaa/service/captcha" + "github.com/gorilla/handlers" "github.com/gorilla/mux" ) var Router *mux.Router func init() { - Router = mux.NewRouter() - + // Static file handlers cssHandler := http.FileServer(http.Dir("./public/css/")) jsHandler := http.FileServer(http.Dir("./public/js/")) imgHandler := http.FileServer(http.Dir("./public/img/")) - http.Handle("/css/", http.StripPrefix("/css/", cssHandler)) - http.Handle("/js/", http.StripPrefix("/js/", jsHandler)) - http.Handle("/img/", http.StripPrefix("/img/", imgHandler)) - // Routes, - Router.HandleFunc("/", HomeHandler).Name("home") - Router.HandleFunc("/page/{page:[0-9]+}", HomeHandler).Name("home_page") - Router.HandleFunc("/search", SearchHandler).Name("search") - Router.HandleFunc("/search/{page}", SearchHandler).Name("search_page") - Router.HandleFunc("/api/{page}", ApiHandler).Methods("GET") - Router.HandleFunc("/api/view/{id}", ApiViewHandler).Methods("GET") - Router.HandleFunc("/faq", FaqHandler).Name("faq") - Router.HandleFunc("/feed", RssHandler).Name("feed") - Router.HandleFunc("/view/{id}", ViewHandler).Name("view_torrent") - Router.HandleFunc("/upload", UploadHandler).Name("upload") - Router.HandleFunc("/user/register", UserRegisterFormHandler).Name("user_register").Methods("GET") - Router.HandleFunc("/user/login", UserLoginFormHandler).Name("user_login").Methods("GET") - Router.HandleFunc("/verify/email/{token}", UserVerifyEmailHandler).Name("user_verify").Methods("GET") - Router.HandleFunc("/user/register", UserRegisterPostHandler).Name("user_register_post").Methods("POST") - Router.HandleFunc("/user/login", UserLoginPostHandler).Name("user_login_post").Methods("POST") - Router.HandleFunc("/user/{id}", UserProfileHandler).Name("user_profile") + // Enable GZIP compression for all handlers except imgHandler and captcha + gzipCSSHandler := handlers.CompressHandler(cssHandler) + gzipJSHandler := handlers.CompressHandler(jsHandler) + gzipHomeHandler := handlers.CompressHandler(http.HandlerFunc(HomeHandler)) + gzipSearchHandler := handlers.CompressHandler(http.HandlerFunc(SearchHandler)) + gzipAPIHandler := handlers.CompressHandler(http.HandlerFunc(ApiHandler)) + gzipAPIViewHandler := handlers.CompressHandler(http.HandlerFunc(ApiViewHandler)) + gzipFaqHandler := handlers.CompressHandler(http.HandlerFunc(FaqHandler)) + gzipRssHandler := handlers.CompressHandler(http.HandlerFunc(RssHandler)) + gzipViewHandler := handlers.CompressHandler(http.HandlerFunc(ViewHandler)) + gzipUploadHandler := handlers.CompressHandler(http.HandlerFunc(UploadHandler)) + gzipUserRegisterFormHandler := handlers.CompressHandler(http.HandlerFunc(UserRegisterFormHandler)) + gzipUserLoginFormHandler := handlers.CompressHandler(http.HandlerFunc(UserLoginFormHandler)) + gzipUserVerifyEmailHandler := handlers.CompressHandler(http.HandlerFunc(UserVerifyEmailHandler)) + gzipUserRegisterPostHandler := handlers.CompressHandler(http.HandlerFunc(UserRegisterPostHandler)) + + Router = mux.NewRouter() + + // Routes + http.Handle("/css/", http.StripPrefix("/css/", gzipCSSHandler)) + http.Handle("/js/", http.StripPrefix("/js/", gzipJSHandler)) + http.Handle("/img/", http.StripPrefix("/img/", imgHandler)) + Router.Handle("/", gzipHomeHandler).Name("home") + Router.Handle("/page/{page:[0-9]+}", gzipHomeHandler).Name("home_page") + Router.Handle("/search", gzipSearchHandler).Name("search") + Router.Handle("/search/{page}", gzipSearchHandler).Name("search_page") + Router.Handle("/api/{page}", gzipAPIHandler).Methods("GET") + Router.Handle("/api/view/{id}", gzipAPIViewHandler).Methods("GET") + Router.Handle("/faq", gzipFaqHandler).Name("faq") + Router.Handle("/feed", gzipRssHandler).Name("feed") + Router.Handle("/view/{id}", gzipViewHandler).Name("view_torrent") + Router.Handle("/upload", gzipUploadHandler).Name("upload") + Router.Handle("/user/register", gzipUserRegisterFormHandler).Name("user_register").Methods("GET") + Router.Handle("/user/login", gzipUserLoginFormHandler).Name("user_login").Methods("GET") + Router.Handle("/verify/email/{token}", gzipUserVerifyEmailHandler).Name("user_verify").Methods("GET") + Router.Handle("/user/register", gzipUserRegisterPostHandler).Name("user_register").Methods("POST") Router.PathPrefix("/captcha").Methods("GET").HandlerFunc(captcha.ServeFiles) Router.NotFoundHandler = http.HandlerFunc(NotFoundHandler)