feat: 完善依赖注入改造
完成所有Handler的依赖注入改造: - AuthHandler: 认证相关功能 - UserHandler: 用户管理功能 - TextureHandler: 材质管理功能 - ProfileHandler: 档案管理功能 - CaptchaHandler: 验证码功能 - YggdrasilHandler: Yggdrasil API功能 新增错误类型定义: - internal/errors/errors.go: 统一的错误类型和工厂函数 更新main.go: - 使用container.NewContainer创建依赖容器 - 使用handler.RegisterRoutesWithDI注册路由 代码遵循Go最佳实践: - 依赖通过构造函数注入 - Handler通过结构体方法实现 - 统一的错误处理模式 - 清晰的分层架构
This commit is contained in:
@@ -10,20 +10,23 @@ import (
|
||||
|
||||
// Handlers 集中管理所有Handler
|
||||
type Handlers struct {
|
||||
Auth *AuthHandler
|
||||
User *UserHandler
|
||||
Texture *TextureHandler
|
||||
// Profile *ProfileHandler // 后续添加
|
||||
// Captcha *CaptchaHandler // 后续添加
|
||||
// Yggdrasil *YggdrasilHandler // 后续添加
|
||||
Auth *AuthHandler
|
||||
User *UserHandler
|
||||
Texture *TextureHandler
|
||||
Profile *ProfileHandler
|
||||
Captcha *CaptchaHandler
|
||||
Yggdrasil *YggdrasilHandler
|
||||
}
|
||||
|
||||
// NewHandlers 创建所有Handler实例
|
||||
func NewHandlers(c *container.Container) *Handlers {
|
||||
return &Handlers{
|
||||
Auth: NewAuthHandler(c),
|
||||
User: NewUserHandler(c),
|
||||
Texture: NewTextureHandler(c),
|
||||
Auth: NewAuthHandler(c),
|
||||
User: NewUserHandler(c),
|
||||
Texture: NewTextureHandler(c),
|
||||
Profile: NewProfileHandler(c),
|
||||
Captcha: NewCaptchaHandler(c),
|
||||
Yggdrasil: NewYggdrasilHandler(c),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,14 +50,14 @@ func RegisterRoutesWithDI(router *gin.Engine, c *container.Container) {
|
||||
// 材质路由
|
||||
registerTextureRoutes(v1, h.Texture)
|
||||
|
||||
// 档案路由(暂时保持原有方式)
|
||||
registerProfileRoutes(v1)
|
||||
// 档案路由
|
||||
registerProfileRoutesWithDI(v1, h.Profile)
|
||||
|
||||
// 验证码路由(暂时保持原有方式)
|
||||
registerCaptchaRoutes(v1)
|
||||
// 验证码路由
|
||||
registerCaptchaRoutesWithDI(v1, h.Captcha)
|
||||
|
||||
// Yggdrasil API路由组(暂时保持原有方式)
|
||||
registerYggdrasilRoutes(v1)
|
||||
// Yggdrasil API路由组
|
||||
registerYggdrasilRoutesWithDI(v1, h.Yggdrasil)
|
||||
|
||||
// 系统路由
|
||||
registerSystemRoutes(v1)
|
||||
@@ -115,59 +118,59 @@ func registerTextureRoutes(v1 *gin.RouterGroup, h *TextureHandler) {
|
||||
}
|
||||
}
|
||||
|
||||
// registerProfileRoutes 注册档案路由(保持原有方式,后续改造)
|
||||
func registerProfileRoutes(v1 *gin.RouterGroup) {
|
||||
// registerProfileRoutesWithDI 注册档案路由(依赖注入版本)
|
||||
func registerProfileRoutesWithDI(v1 *gin.RouterGroup, h *ProfileHandler) {
|
||||
profileGroup := v1.Group("/profile")
|
||||
{
|
||||
// 公开路由(无需认证)
|
||||
profileGroup.GET("/:uuid", GetProfile)
|
||||
profileGroup.GET("/:uuid", h.Get)
|
||||
|
||||
// 需要认证的路由
|
||||
profileAuth := profileGroup.Group("")
|
||||
profileAuth.Use(middleware.AuthMiddleware())
|
||||
{
|
||||
profileAuth.POST("/", CreateProfile)
|
||||
profileAuth.GET("/", GetProfiles)
|
||||
profileAuth.PUT("/:uuid", UpdateProfile)
|
||||
profileAuth.DELETE("/:uuid", DeleteProfile)
|
||||
profileAuth.POST("/:uuid/activate", SetActiveProfile)
|
||||
profileAuth.POST("/", h.Create)
|
||||
profileAuth.GET("/", h.List)
|
||||
profileAuth.PUT("/:uuid", h.Update)
|
||||
profileAuth.DELETE("/:uuid", h.Delete)
|
||||
profileAuth.POST("/:uuid/activate", h.SetActive)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// registerCaptchaRoutes 注册验证码路由(保持原有方式)
|
||||
func registerCaptchaRoutes(v1 *gin.RouterGroup) {
|
||||
// registerCaptchaRoutesWithDI 注册验证码路由(依赖注入版本)
|
||||
func registerCaptchaRoutesWithDI(v1 *gin.RouterGroup, h *CaptchaHandler) {
|
||||
captchaGroup := v1.Group("/captcha")
|
||||
{
|
||||
captchaGroup.GET("/generate", Generate)
|
||||
captchaGroup.POST("/verify", Verify)
|
||||
captchaGroup.GET("/generate", h.Generate)
|
||||
captchaGroup.POST("/verify", h.Verify)
|
||||
}
|
||||
}
|
||||
|
||||
// registerYggdrasilRoutes 注册Yggdrasil API路由(保持原有方式)
|
||||
func registerYggdrasilRoutes(v1 *gin.RouterGroup) {
|
||||
// registerYggdrasilRoutesWithDI 注册Yggdrasil API路由(依赖注入版本)
|
||||
func registerYggdrasilRoutesWithDI(v1 *gin.RouterGroup, h *YggdrasilHandler) {
|
||||
ygg := v1.Group("/yggdrasil")
|
||||
{
|
||||
ygg.GET("", GetMetaData)
|
||||
ygg.POST("/minecraftservices/player/certificates", GetPlayerCertificates)
|
||||
ygg.GET("", h.GetMetaData)
|
||||
ygg.POST("/minecraftservices/player/certificates", h.GetPlayerCertificates)
|
||||
authserver := ygg.Group("/authserver")
|
||||
{
|
||||
authserver.POST("/authenticate", Authenticate)
|
||||
authserver.POST("/validate", ValidToken)
|
||||
authserver.POST("/refresh", RefreshToken)
|
||||
authserver.POST("/invalidate", InvalidToken)
|
||||
authserver.POST("/signout", SignOut)
|
||||
authserver.POST("/authenticate", h.Authenticate)
|
||||
authserver.POST("/validate", h.ValidToken)
|
||||
authserver.POST("/refresh", h.RefreshToken)
|
||||
authserver.POST("/invalidate", h.InvalidToken)
|
||||
authserver.POST("/signout", h.SignOut)
|
||||
}
|
||||
sessionServer := ygg.Group("/sessionserver")
|
||||
{
|
||||
sessionServer.GET("/session/minecraft/profile/:uuid", GetProfileByUUID)
|
||||
sessionServer.POST("/session/minecraft/join", JoinServer)
|
||||
sessionServer.GET("/session/minecraft/hasJoined", HasJoinedServer)
|
||||
sessionServer.GET("/session/minecraft/profile/:uuid", h.GetProfileByUUID)
|
||||
sessionServer.POST("/session/minecraft/join", h.JoinServer)
|
||||
sessionServer.GET("/session/minecraft/hasJoined", h.HasJoinedServer)
|
||||
}
|
||||
api := ygg.Group("/api")
|
||||
profiles := api.Group("/profiles")
|
||||
{
|
||||
profiles.POST("/minecraft", GetProfilesByName)
|
||||
profiles.POST("/minecraft", h.GetProfilesByName)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -188,4 +191,3 @@ func registerSystemRoutes(v1 *gin.RouterGroup) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user