2022-09-01 02:31:11 +00:00
|
|
|
package route
|
|
|
|
|
|
|
|
import (
|
2022-09-24 09:52:06 +00:00
|
|
|
"github.com/gin-contrib/pprof"
|
2022-09-18 03:57:43 +00:00
|
|
|
"github.com/gin-contrib/sessions"
|
|
|
|
"github.com/gin-contrib/sessions/cookie"
|
2022-09-01 02:31:11 +00:00
|
|
|
"github.com/gin-gonic/gin"
|
2022-09-18 04:34:48 +00:00
|
|
|
"github/fthvgb1/wp-go/actions"
|
2022-09-29 09:23:02 +00:00
|
|
|
"github/fthvgb1/wp-go/helper"
|
2022-09-14 05:28:31 +00:00
|
|
|
"github/fthvgb1/wp-go/middleware"
|
2022-09-13 03:23:28 +00:00
|
|
|
"github/fthvgb1/wp-go/static"
|
2022-09-14 13:30:59 +00:00
|
|
|
"github/fthvgb1/wp-go/templates"
|
2022-09-13 03:23:28 +00:00
|
|
|
"html/template"
|
|
|
|
"net/http"
|
2022-09-14 05:28:31 +00:00
|
|
|
"time"
|
2022-09-01 02:31:11 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func SetupRouter() *gin.Engine {
|
|
|
|
// Disable Console Color
|
|
|
|
// gin.DisableConsoleColor()
|
2022-09-29 09:23:02 +00:00
|
|
|
r := gin.New()
|
2022-09-19 04:44:54 +00:00
|
|
|
r.HTMLRender = templates.NewFsTemplate(template.FuncMap{
|
2022-09-20 14:37:31 +00:00
|
|
|
"unescaped": func(s string) any {
|
2022-09-14 05:28:31 +00:00
|
|
|
return template.HTML(s)
|
|
|
|
},
|
2022-09-20 14:37:31 +00:00
|
|
|
"dateCh": func(t time.Time) any {
|
2022-09-18 14:06:27 +00:00
|
|
|
return t.Format("2006年 01月 02日")
|
2022-09-14 05:28:31 +00:00
|
|
|
},
|
2022-09-19 04:45:41 +00:00
|
|
|
}).SetTemplate()
|
2022-10-02 02:58:48 +00:00
|
|
|
r.Use(gin.Logger(), middleware.FlowLimit(), gin.Recovery(), middleware.SetStaticFileCache)
|
2022-09-17 13:57:45 +00:00
|
|
|
//gzip 因为一般会用nginx做反代时自动使用gzip,所以go这边本身可以不用
|
|
|
|
/*r.Use(gzip.Gzip(gzip.DefaultCompression, gzip.WithExcludedPaths([]string{
|
|
|
|
"/wp-includes/", "/wp-content/",
|
|
|
|
})))*/
|
|
|
|
|
2022-09-13 03:23:28 +00:00
|
|
|
f := static.Fs{FS: static.FsEx, Path: "wp-includes"}
|
2022-09-22 13:59:33 +00:00
|
|
|
r.StaticFileFS("/favicon.ico", "favicon.ico", http.FS(static.FsEx))
|
2022-09-13 03:23:28 +00:00
|
|
|
r.StaticFS("/wp-includes", http.FS(f))
|
|
|
|
r.StaticFS("/wp-content", http.FS(static.Fs{
|
|
|
|
FS: static.FsEx,
|
|
|
|
Path: "wp-content",
|
|
|
|
}))
|
2022-09-18 03:57:43 +00:00
|
|
|
store := cookie.NewStore([]byte("secret"))
|
|
|
|
r.Use(sessions.Sessions("go-wp", store))
|
2022-09-18 04:34:48 +00:00
|
|
|
r.GET("/", actions.Index)
|
|
|
|
r.GET("/page/:page", actions.Index)
|
|
|
|
r.GET("/p/category/:category", actions.Index)
|
|
|
|
r.GET("/p/category/:category/page/:page", actions.Index)
|
|
|
|
r.GET("/p/tag/:tag", actions.Index)
|
|
|
|
r.GET("/p/tag/:tag/page/:page", actions.Index)
|
|
|
|
r.GET("/p/date/:year/:month", actions.Index)
|
|
|
|
r.GET("/p/date/:year/:month/page/:page", actions.Index)
|
|
|
|
r.POST("/login", actions.Login)
|
|
|
|
r.GET("/p/:id", actions.Detail)
|
2022-09-29 09:23:02 +00:00
|
|
|
if helper.IsContainInArr(gin.Mode(), []string{gin.DebugMode, gin.TestMode}) {
|
|
|
|
pprof.Register(r, "dev/pprof")
|
|
|
|
}
|
2022-09-01 02:31:11 +00:00
|
|
|
return r
|
|
|
|
}
|