| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | package routerimport (	"github.com/gin-gonic/gin"	"message-pusher/controller"	"message-pusher/middleware")func SetApiRouter(router *gin.Engine) {	apiRouter := router.Group("/api")	apiRouter.Use(middleware.GlobalAPIRateLimit())	{		apiRouter.GET("/status", controller.GetStatus)		apiRouter.GET("/notice", controller.GetNotice)		apiRouter.GET("/about", controller.GetAbout)		apiRouter.GET("/verification", middleware.CriticalRateLimit(), middleware.TurnstileCheck(), controller.SendEmailVerification)		apiRouter.GET("/reset_password", middleware.CriticalRateLimit(), middleware.TurnstileCheck(), controller.SendPasswordResetEmail)		apiRouter.POST("/user/reset", middleware.CriticalRateLimit(), controller.ResetPassword)		apiRouter.GET("/oauth/github", middleware.CriticalRateLimit(), controller.GitHubOAuth)		apiRouter.GET("/oauth/wechat", middleware.CriticalRateLimit(), controller.WeChatAuth)		apiRouter.GET("/oauth/wechat/bind", middleware.CriticalRateLimit(), middleware.UserAuth(), controller.WeChatBind)		apiRouter.GET("/oauth/email/bind", middleware.CriticalRateLimit(), middleware.UserAuth(), controller.EmailBind)		userRoute := apiRouter.Group("/user")		{			userRoute.POST("/register", middleware.CriticalRateLimit(), middleware.TurnstileCheck(), controller.Register)			userRoute.POST("/login", middleware.CriticalRateLimit(), controller.Login)			userRoute.GET("/logout", controller.Logout)			selfRoute := userRoute.Group("/")			selfRoute.Use(middleware.UserAuth())			{				selfRoute.GET("/self", controller.GetSelf)				selfRoute.PUT("/self", controller.UpdateSelf)				selfRoute.DELETE("/self", controller.DeleteSelf)				selfRoute.GET("/token", controller.GenerateToken)			}			adminRoute := userRoute.Group("/")			adminRoute.Use(middleware.AdminAuth())			{				adminRoute.GET("/", controller.GetAllUsers)				adminRoute.GET("/search", controller.SearchUsers)				adminRoute.GET("/:id", controller.GetUser)				adminRoute.POST("/", controller.CreateUser)				adminRoute.POST("/manage", controller.ManageUser)				adminRoute.PUT("/", controller.UpdateUser)				adminRoute.DELETE("/:id", controller.DeleteUser)			}		}		optionRoute := apiRouter.Group("/option")		optionRoute.Use(middleware.RootAuth())		{			optionRoute.GET("/", controller.GetOptions)			optionRoute.PUT("/", controller.UpdateOption)		}	}	pushRouter := router.Group("/push")	pushRouter.Use(middleware.GlobalAPIRateLimit())	{		pushRouter.GET("/:username", controller.GetPushMessage)		pushRouter.POST("/:username", controller.PostPushMessage)	}}
 |