package api import ( "basic.com/valib/bhomeclient.git" "basic.com/valib/logger.git" "github.com/gin-gonic/gin" uuid "github.com/satori/go.uuid" "net/http" "sync" "vamicro/version-control/controller" "vamicro/version-control/models" "vamicro/version-control/routers" "vamicro/version-control/service" ) var ( routines []routers.IRouter = []routers.IRouter{} ) func init() { routines = append(routines, controller.CheckVersion, controller.UploadDist, controller.Upgrade, controller.SettingFetch, controller.SettingPush, controller.UpdateNotice, controller.DelayNotice, controller.PreUpLoad, controller.UpgradePreUpLoad, controller.RollBack, controller.Authorization, controller.GetSn, controller.Qrcode, controller.AuthorizationUpload, controller.CancelAuthorization, controller.CancelAuthorizationUpload, controller.ShopMakeSmsCod, controller.ShopCenterLogin, controller.ShopCenterGetOrderList, controller.AuthActiveByOrder, controller.AutoBakShow, controller.AutoBakConfSet, controller.AutoBakRightNow, controller.BackupListShow, controller.BackupRecov, ) } func InitRouter(wg *sync.WaitGroup, ms *bhomeclient.MicroNode) *http.Server { models.Init() service.Init() r := gin.Default() controller.Ms = ms var midw gin.HandlerFunc = func(ctx *gin.Context) { uid, err := ctx.Cookie("uuid") if err != nil { uid := uuid.NewV4().String() ctx.SetCookie("uuid", uid, 3600, "/", "", false, true) } ctx.Set("uid", uid) } r.Use(midw) for _, v := range routines { methods := v.GetMethods() if len(methods) > 0 && len(methods) > 0 { for _, m := range methods { r.Handle(m, v.GetPath(), v.GetHandles()...) } } } server := &http.Server{ Addr: ":8080", Handler: r, } wg.Add(1) go func() { if err := server.ListenAndServe(); nil != err { if err != http.ErrServerClosed { logger.Fatal("InitRouter failed with error:", err) } else { logger.Info("InitRouter exited by user") } } wg.Done() }() return server }