package router

import (
	"github.com/gin-gonic/gin"
	"net/http"
	"wireguard-ui/config"
	"wireguard-ui/dist"
)

type Option func(engine *gin.RouterGroup)

var options []Option

func includeRouters(opts ...Option) {
	options = append(options, opts...)
}

func InitRouter() *gin.Engine {
	r := gin.New()
	// 开启IP 追踪
	r.ForwardedByClientIP = true
	// 将请求打印至控制台
	r.Use(gin.Logger(), gin.Recovery())

	if config.Config.File.Type == "local" {
		r.Static("/assets", config.Config.File.Path)
	}

	r.StaticFS("/web", http.FS(dist.Static))

	for _, opt := range options {
		opt(r.Group("api"))
	}

	return r
}

func Rooters() {
	includeRouters(
		LoginApi,
		UserApi,
		ClientApi,
		SettingApi,
		DashboardApi,
	)
}
