package user import ( "context" "git.diulo.com/mogfee/protoc-gen-kit/middleware" "git.diulo.com/mogfee/protoc-gen-kit/pkg/xerrors" "git.diulo.com/mogfee/protoc-gen-kit/pkg/xresponse" "github.com/gin-gonic/gin" ) func RegisterUserHandler(app *gin.Engine, srv UserServer, m ...middleware.Middleware) { app.GET("/api/v1/user/list", httpListHandler(srv, m...)) app.POST("/api/v1/user/login", httpLoginHandler(srv, m...)) } func httpListHandler(srv UserServer, m ...middleware.Middleware) func(c *gin.Context) { return func(c *gin.Context) { var post LoginRequest resp := xresponse.New(c) if err := resp.BindQuery(&post); err != nil { resp.Error(err) return } h := func(ctx context.Context, a any) (any, error) { return srv.List(ctx, a.(*LoginRequest)) } out, err := middleware.HttpMiddleware(c, h, m...)(c, &post) if err != nil { resp.Error(err) } else { if v, ok := out.(*LoginResponse); ok { resp.Success(v) } else { resp.Error(xerrors.InternalServer("RESULT_TYPE_ERROR", "LoginResponse")) } } } } func httpLoginHandler(srv UserServer, m ...middleware.Middleware) func(c *gin.Context) { return func(c *gin.Context) { var post LoginRequest resp := xresponse.New(c) if err := resp.BindJSON(&post); err != nil { resp.Error(err) return } h := func(ctx context.Context, a any) (any, error) { return srv.Login(ctx, a.(*LoginRequest)) } out, err := middleware.HttpMiddleware(c, h, m...)(c, &post) if err != nil { resp.Error(err) } else { if v, ok := out.(*LoginResponse); ok { resp.Success(v) } else { resp.Error(xerrors.InternalServer("RESULT_TYPE_ERROR", "LoginResponse")) } } } }