package routers

import (
	"duoduo/apis/bizhi"
	"duoduo/apis/forward"
	"duoduo/apis/pdd"
	"duoduo/apis/petsLy"
	"duoduo/apis/qiniu"
	"duoduo/apis/user"
	"duoduo/apis/userLy"
	"duoduo/conf"
	"github.com/gin-gonic/gin"
	"github.com/unrolled/secure"
)

func InitRouter() {

	r := gin.New()
	if conf.Model == "master" {
		r.Use(TlsHandler())
	}

	r.GET("/", func(c *gin.Context) { c.File("./a.html") })
	r.GET("/root.txt", func(c *gin.Context) { c.File("./root.txt") })
	r2 := r.Group("/")
	{
		pdd.InitPddDdkRouter(r2)
		pdd.InitSetRouter(r2)
		user.InitUserRouter(r2)
		forward.InitForwardRouter(r2)
	}

	ly := r.Group("/")
	{
		userLy.InitUserRouter(ly)
		petsLy.InitPetsRouter(ly)
		qiniu.InitQiNiuRouter(ly)
	}

	bz := r.Group("/")
	{
		bizhi.InitBiZhiRouter(bz)
	}

	if conf.Model == "master" {
		r.RunTLS(":443", "./shisanmiao.com.pem", "./shisanmiao.com.key")
	} else {
		_ = r.Run(":8081")
	}

}

func TlsHandler() gin.HandlerFunc {
	return func(c *gin.Context) {
		secureMiddleware := secure.New(secure.Options{
			SSLRedirect: true,
			SSLHost:     "localhost:8080",
		})
		err := secureMiddleware.Process(c.Writer, c.Request)

		// If there was an error, do not continue.
		if err != nil {
			return
		}

		c.Next()
	}
}