From ae22095604947bd0206f27741cba0a9c50b6954a Mon Sep 17 00:00:00 2001 From: Michael Li Date: Wed, 28 Jun 2023 01:57:32 +0800 Subject: [PATCH] use github.com/alimy/mir/v4 as web api generator --- auto/api/m/v1/user.go | 95 ++- auto/api/r/v1/user.go | 95 ++- auto/api/s/v1/user.go | 103 ++-- auto/api/v1/admin.go | 65 +-- auto/api/v1/alipay_priv.go | 152 +++-- auto/api/v1/alipay_pub.go | 65 +-- auto/api/v1/core.go | 596 +++++++++---------- auto/api/v1/followship.go | 173 +++--- auto/api/v1/friendship.go | 194 +++---- auto/api/v1/loose.go | 230 ++++---- auto/api/v1/priv.go | 773 +++++++++++++------------ auto/api/v1/pub.go | 241 ++++---- auto/api/x/v1/user.go | 95 ++- go.mod | 2 +- go.sum | 4 +- internal/conf/alipay.go | 38 ++ internal/model/web/alipay.go | 48 ++ internal/model/web/core.go | 59 ++ internal/model/web/loose.go | 13 + internal/model/web/priv.go | 77 +++ internal/model/web/utils.go | 47 ++ internal/model/web/web.go | 16 +- internal/model/web/xerror.go | 93 +++ internal/servants/admin/admin.go | 2 +- internal/servants/admin/user.go | 30 +- internal/servants/base/base.go | 50 +- internal/servants/bot/bot.go | 2 +- internal/servants/bot/user.go | 34 +- internal/servants/localoss/localoss.go | 2 +- internal/servants/localoss/user.go | 34 +- internal/servants/space/space.go | 2 +- internal/servants/space/user.go | 34 +- internal/servants/web/admin.go | 30 +- internal/servants/web/alipay.go | 114 +--- internal/servants/web/core.go | 94 +-- internal/servants/web/followship.go | 28 +- internal/servants/web/friendship.go | 30 +- internal/servants/web/loose.go | 49 +- internal/servants/web/priv.go | 117 +--- internal/servants/web/pub.go | 30 +- internal/servants/web/utils.go | 2 +- internal/servants/web/web.go | 44 +- mirc/admin/v1/user.go | 4 +- mirc/bot/v1/user.go | 4 +- mirc/gen.go | 4 +- mirc/localoss/v1/user.go | 4 +- mirc/space/v1/user.go | 4 +- mirc/web/v1/admin.go | 4 +- mirc/web/v1/alipay.go | 4 +- mirc/web/v1/core.go | 4 +- mirc/web/v1/followship.go | 4 +- mirc/web/v1/friendship.go | 4 +- mirc/web/v1/loose.go | 4 +- mirc/web/v1/priv.go | 4 +- mirc/web/v1/pub.go | 4 +- pkg/xerror/xerror.go | 2 +- 56 files changed, 1890 insertions(+), 2166 deletions(-) create mode 100644 internal/conf/alipay.go create mode 100644 internal/model/web/utils.go create mode 100644 internal/model/web/xerror.go diff --git a/auto/api/m/v1/user.go b/auto/api/m/v1/user.go index 234dc5d7..43136276 100644 --- a/auto/api/m/v1/user.go +++ b/auto/api/m/v1/user.go @@ -1,16 +1,29 @@ // Code generated by go-mir. DO NOT EDIT. // versions: -// - mir v3.2.0 +// - mir v4.0.0 package v1 import ( "net/http" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" ) +type _binding_ interface { + Bind(*gin.Context) mir.Error +} + +type _render_ interface { + Render(*gin.Context) +} + +type _default_ interface { + Bind(*gin.Context, any) mir.Error + Render(*gin.Context, any, mir.Error) +} + type LoginReq struct { AgentInfo AgentInfo `json:"agent_info"` Name string `json:"name"` @@ -37,6 +50,8 @@ type UserInfo struct { } type User interface { + _default_ + // Chain provide handlers chain for gin Chain() gin.HandlersChain @@ -46,21 +61,8 @@ type User interface { mustEmbedUnimplementedUserServant() } -type UserBinding interface { - BindLogin(*gin.Context) (*LoginReq, mir.Error) - - mustEmbedUnimplementedUserBinding() -} - -type UserRender interface { - RenderLogout(*gin.Context, mir.Error) - RenderLogin(*gin.Context, *LoginResp, mir.Error) - - mustEmbedUnimplementedUserRender() -} - // RegisterUserServant register User servant to gin -func RegisterUserServant(e *gin.Engine, s User, b UserBinding, r UserRender) { +func RegisterUserServant(e *gin.Engine, s User) { router := e.Group("m/v1") // use chain for router middlewares := s.Chain() @@ -74,9 +76,8 @@ func RegisterUserServant(e *gin.Engine, s User, b UserBinding, r UserRender) { default: } - r.RenderLogout(c, s.Logout()) + s.Render(c, nil, s.Logout()) }) - router.Handle("POST", "/user/login/", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -84,20 +85,36 @@ func RegisterUserServant(e *gin.Engine, s User, b UserBinding, r UserRender) { default: } - req, err := b.BindLogin(c) + var ( + obj any + err mir.Error + ) + req := new(LoginReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderLogin(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.Login(req) - r.RenderLogin(c, resp, err) + obj, err = s.Login(req) + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - } // UnimplementedUserServant can be embedded to have forward compatible implementations. -type UnimplementedUserServant struct { -} +type UnimplementedUserServant struct{} func (UnimplementedUserServant) Chain() gin.HandlersChain { return nil @@ -112,31 +129,3 @@ func (UnimplementedUserServant) Login(req *LoginReq) (*LoginResp, mir.Error) { } func (UnimplementedUserServant) mustEmbedUnimplementedUserServant() {} - -// UnimplementedUserRender can be embedded to have forward compatible implementations. -type UnimplementedUserRender struct { - RenderAny func(*gin.Context, any, mir.Error) -} - -func (r *UnimplementedUserRender) RenderLogout(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedUserRender) RenderLogin(c *gin.Context, data *LoginResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedUserRender) mustEmbedUnimplementedUserRender() {} - -// UnimplementedUserBinding can be embedded to have forward compatible implementations. -type UnimplementedUserBinding struct { - BindAny func(*gin.Context, any) mir.Error -} - -func (b *UnimplementedUserBinding) BindLogin(c *gin.Context) (*LoginReq, mir.Error) { - obj := new(LoginReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedUserBinding) mustEmbedUnimplementedUserBinding() {} diff --git a/auto/api/r/v1/user.go b/auto/api/r/v1/user.go index 8963d936..6dd6407b 100644 --- a/auto/api/r/v1/user.go +++ b/auto/api/r/v1/user.go @@ -1,16 +1,29 @@ // Code generated by go-mir. DO NOT EDIT. // versions: -// - mir v3.2.0 +// - mir v4.0.0 package v1 import ( "net/http" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" ) +type _binding_ interface { + Bind(*gin.Context) mir.Error +} + +type _render_ interface { + Render(*gin.Context) +} + +type _default_ interface { + Bind(*gin.Context, any) mir.Error + Render(*gin.Context, any, mir.Error) +} + type LoginReq struct { AgentInfo AgentInfo `json:"agent_info"` Name string `json:"name"` @@ -37,6 +50,8 @@ type UserInfo struct { } type User interface { + _default_ + // Chain provide handlers chain for gin Chain() gin.HandlersChain @@ -46,21 +61,8 @@ type User interface { mustEmbedUnimplementedUserServant() } -type UserBinding interface { - BindLogin(*gin.Context) (*LoginReq, mir.Error) - - mustEmbedUnimplementedUserBinding() -} - -type UserRender interface { - RenderLogout(*gin.Context, mir.Error) - RenderLogin(*gin.Context, *LoginResp, mir.Error) - - mustEmbedUnimplementedUserRender() -} - // RegisterUserServant register User servant to gin -func RegisterUserServant(e *gin.Engine, s User, b UserBinding, r UserRender) { +func RegisterUserServant(e *gin.Engine, s User) { router := e.Group("r/v1") // use chain for router middlewares := s.Chain() @@ -74,9 +76,8 @@ func RegisterUserServant(e *gin.Engine, s User, b UserBinding, r UserRender) { default: } - r.RenderLogout(c, s.Logout()) + s.Render(c, nil, s.Logout()) }) - router.Handle("POST", "/user/login/", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -84,20 +85,36 @@ func RegisterUserServant(e *gin.Engine, s User, b UserBinding, r UserRender) { default: } - req, err := b.BindLogin(c) + var ( + obj any + err mir.Error + ) + req := new(LoginReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderLogin(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.Login(req) - r.RenderLogin(c, resp, err) + obj, err = s.Login(req) + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - } // UnimplementedUserServant can be embedded to have forward compatible implementations. -type UnimplementedUserServant struct { -} +type UnimplementedUserServant struct{} func (UnimplementedUserServant) Chain() gin.HandlersChain { return nil @@ -112,31 +129,3 @@ func (UnimplementedUserServant) Login(req *LoginReq) (*LoginResp, mir.Error) { } func (UnimplementedUserServant) mustEmbedUnimplementedUserServant() {} - -// UnimplementedUserRender can be embedded to have forward compatible implementations. -type UnimplementedUserRender struct { - RenderAny func(*gin.Context, any, mir.Error) -} - -func (r *UnimplementedUserRender) RenderLogout(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedUserRender) RenderLogin(c *gin.Context, data *LoginResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedUserRender) mustEmbedUnimplementedUserRender() {} - -// UnimplementedUserBinding can be embedded to have forward compatible implementations. -type UnimplementedUserBinding struct { - BindAny func(*gin.Context, any) mir.Error -} - -func (b *UnimplementedUserBinding) BindLogin(c *gin.Context) (*LoginReq, mir.Error) { - obj := new(LoginReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedUserBinding) mustEmbedUnimplementedUserBinding() {} diff --git a/auto/api/s/v1/user.go b/auto/api/s/v1/user.go index 544c475e..285bece1 100644 --- a/auto/api/s/v1/user.go +++ b/auto/api/s/v1/user.go @@ -1,16 +1,29 @@ // Code generated by go-mir. DO NOT EDIT. // versions: -// - mir v3.2.0 +// - mir v4.0.0 package v1 import ( "net/http" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" ) +type _binding_ interface { + Bind(*gin.Context) mir.Error +} + +type _render_ interface { + Render(*gin.Context) +} + +type _default_ interface { + Bind(*gin.Context, any) mir.Error + Render(*gin.Context, any, mir.Error) +} + type LoginReq struct { AgentInfo AgentInfo `json:"agent_info"` Name string `json:"name"` @@ -37,6 +50,8 @@ type UserInfo struct { } type User interface { + _default_ + Logout() mir.Error Login(*LoginReq) (*LoginResp, mir.Error) Index() mir.Error @@ -44,22 +59,8 @@ type User interface { mustEmbedUnimplementedUserServant() } -type UserBinding interface { - BindLogin(*gin.Context) (*LoginReq, mir.Error) - - mustEmbedUnimplementedUserBinding() -} - -type UserRender interface { - RenderLogout(*gin.Context, mir.Error) - RenderLogin(*gin.Context, *LoginResp, mir.Error) - RenderIndex(*gin.Context, mir.Error) - - mustEmbedUnimplementedUserRender() -} - // RegisterUserServant register User servant to gin -func RegisterUserServant(e *gin.Engine, s User, b UserBinding, r UserRender) { +func RegisterUserServant(e *gin.Engine, s User) { router := e.Group("s/v1") // register routes info to router @@ -70,9 +71,8 @@ func RegisterUserServant(e *gin.Engine, s User, b UserBinding, r UserRender) { default: } - r.RenderLogout(c, s.Logout()) + s.Render(c, nil, s.Logout()) }) - router.Handle("POST", "/user/login/", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -80,15 +80,32 @@ func RegisterUserServant(e *gin.Engine, s User, b UserBinding, r UserRender) { default: } - req, err := b.BindLogin(c) + var ( + obj any + err mir.Error + ) + req := new(LoginReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.Login(req) if err != nil { - r.RenderLogin(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.Login(req) - r.RenderLogin(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("GET", "/index/", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -96,14 +113,12 @@ func RegisterUserServant(e *gin.Engine, s User, b UserBinding, r UserRender) { default: } - r.RenderIndex(c, s.Index()) + s.Render(c, nil, s.Index()) }) - } // UnimplementedUserServant can be embedded to have forward compatible implementations. -type UnimplementedUserServant struct { -} +type UnimplementedUserServant struct{} func (UnimplementedUserServant) Logout() mir.Error { return mir.Errorln(http.StatusNotImplemented, http.StatusText(http.StatusNotImplemented)) @@ -118,35 +133,3 @@ func (UnimplementedUserServant) Index() mir.Error { } func (UnimplementedUserServant) mustEmbedUnimplementedUserServant() {} - -// UnimplementedUserRender can be embedded to have forward compatible implementations. -type UnimplementedUserRender struct { - RenderAny func(*gin.Context, any, mir.Error) -} - -func (r *UnimplementedUserRender) RenderLogout(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedUserRender) RenderLogin(c *gin.Context, data *LoginResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedUserRender) RenderIndex(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedUserRender) mustEmbedUnimplementedUserRender() {} - -// UnimplementedUserBinding can be embedded to have forward compatible implementations. -type UnimplementedUserBinding struct { - BindAny func(*gin.Context, any) mir.Error -} - -func (b *UnimplementedUserBinding) BindLogin(c *gin.Context) (*LoginReq, mir.Error) { - obj := new(LoginReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedUserBinding) mustEmbedUnimplementedUserBinding() {} diff --git a/auto/api/v1/admin.go b/auto/api/v1/admin.go index 8c2dfd15..71e0c3cc 100644 --- a/auto/api/v1/admin.go +++ b/auto/api/v1/admin.go @@ -1,18 +1,20 @@ // Code generated by go-mir. DO NOT EDIT. // versions: -// - mir v3.2.0 +// - mir v4.0.0 package v1 import ( "net/http" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" "github.com/rocboss/paopao-ce/internal/model/web" ) type Admin interface { + _default_ + // Chain provide handlers chain for gin Chain() gin.HandlersChain @@ -21,20 +23,8 @@ type Admin interface { mustEmbedUnimplementedAdminServant() } -type AdminBinding interface { - BindChangeUserStatus(*gin.Context) (*web.ChangeUserStatusReq, mir.Error) - - mustEmbedUnimplementedAdminBinding() -} - -type AdminRender interface { - RenderChangeUserStatus(*gin.Context, mir.Error) - - mustEmbedUnimplementedAdminRender() -} - // RegisterAdminServant register Admin servant to gin -func RegisterAdminServant(e *gin.Engine, s Admin, b AdminBinding, r AdminRender) { +func RegisterAdminServant(e *gin.Engine, s Admin) { router := e.Group("v1") // use chain for router middlewares := s.Chain() @@ -48,19 +38,28 @@ func RegisterAdminServant(e *gin.Engine, s Admin, b AdminBinding, r AdminRender) default: } - req, err := b.BindChangeUserStatus(c) + var ( + obj any + err mir.Error + ) + req := new(web.ChangeUserStatusReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderChangeUserStatus(c, err) + s.Render(c, nil, err) return } - r.RenderChangeUserStatus(c, s.ChangeUserStatus(req)) - }) + s.Render(c, nil, s.ChangeUserStatus(req)) + }) } // UnimplementedAdminServant can be embedded to have forward compatible implementations. -type UnimplementedAdminServant struct { -} +type UnimplementedAdminServant struct{} func (UnimplementedAdminServant) Chain() gin.HandlersChain { return nil @@ -71,27 +70,3 @@ func (UnimplementedAdminServant) ChangeUserStatus(req *web.ChangeUserStatusReq) } func (UnimplementedAdminServant) mustEmbedUnimplementedAdminServant() {} - -// UnimplementedAdminRender can be embedded to have forward compatible implementations. -type UnimplementedAdminRender struct { - RenderAny func(*gin.Context, any, mir.Error) -} - -func (r *UnimplementedAdminRender) RenderChangeUserStatus(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedAdminRender) mustEmbedUnimplementedAdminRender() {} - -// UnimplementedAdminBinding can be embedded to have forward compatible implementations. -type UnimplementedAdminBinding struct { - BindAny func(*gin.Context, any) mir.Error -} - -func (b *UnimplementedAdminBinding) BindChangeUserStatus(c *gin.Context) (*web.ChangeUserStatusReq, mir.Error) { - obj := new(web.ChangeUserStatusReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedAdminBinding) mustEmbedUnimplementedAdminBinding() {} diff --git a/auto/api/v1/alipay_priv.go b/auto/api/v1/alipay_priv.go index 779ff594..8f655b77 100644 --- a/auto/api/v1/alipay_priv.go +++ b/auto/api/v1/alipay_priv.go @@ -1,18 +1,20 @@ // Code generated by go-mir. DO NOT EDIT. // versions: -// - mir v3.2.0 +// - mir v4.0.0 package v1 import ( "net/http" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" "github.com/rocboss/paopao-ce/internal/model/web" ) type AlipayPriv interface { + _default_ + // Chain provide handlers chain for gin Chain() gin.HandlersChain @@ -23,24 +25,8 @@ type AlipayPriv interface { mustEmbedUnimplementedAlipayPrivServant() } -type AlipayPrivBinding interface { - BindUserWalletBills(*gin.Context) (*web.UserWalletBillsReq, mir.Error) - BindUserRechargeResult(*gin.Context) (*web.UserRechargeResultReq, mir.Error) - BindUserRechargeLink(*gin.Context) (*web.UserRechargeLinkReq, mir.Error) - - mustEmbedUnimplementedAlipayPrivBinding() -} - -type AlipayPrivRender interface { - RenderUserWalletBills(*gin.Context, *web.UserWalletBillsResp, mir.Error) - RenderUserRechargeResult(*gin.Context, *web.UserRechargeResultResp, mir.Error) - RenderUserRechargeLink(*gin.Context, *web.UserRechargeLinkResp, mir.Error) - - mustEmbedUnimplementedAlipayPrivRender() -} - // RegisterAlipayPrivServant register AlipayPriv servant to gin -func RegisterAlipayPrivServant(e *gin.Engine, s AlipayPriv, b AlipayPrivBinding, r AlipayPrivRender) { +func RegisterAlipayPrivServant(e *gin.Engine, s AlipayPriv) { router := e.Group("v1") // use chain for router middlewares := s.Chain() @@ -54,15 +40,32 @@ func RegisterAlipayPrivServant(e *gin.Engine, s AlipayPriv, b AlipayPrivBinding, default: } - req, err := b.BindUserWalletBills(c) + var ( + obj any + err mir.Error + ) + req := new(web.UserWalletBillsReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.UserWalletBills(req) if err != nil { - r.RenderUserWalletBills(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.UserWalletBills(req) - r.RenderUserWalletBills(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("GET", "/user/recharge", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -70,15 +73,32 @@ func RegisterAlipayPrivServant(e *gin.Engine, s AlipayPriv, b AlipayPrivBinding, default: } - req, err := b.BindUserRechargeResult(c) + var ( + obj any + err mir.Error + ) + req := new(web.UserRechargeResultReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.UserRechargeResult(req) if err != nil { - r.RenderUserRechargeResult(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.UserRechargeResult(req) - r.RenderUserRechargeResult(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("POST", "/user/recharge", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -86,20 +106,36 @@ func RegisterAlipayPrivServant(e *gin.Engine, s AlipayPriv, b AlipayPrivBinding, default: } - req, err := b.BindUserRechargeLink(c) + var ( + obj any + err mir.Error + ) + req := new(web.UserRechargeLinkReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.UserRechargeLink(req) if err != nil { - r.RenderUserRechargeLink(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.UserRechargeLink(req) - r.RenderUserRechargeLink(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - } // UnimplementedAlipayPrivServant can be embedded to have forward compatible implementations. -type UnimplementedAlipayPrivServant struct { -} +type UnimplementedAlipayPrivServant struct{} func (UnimplementedAlipayPrivServant) Chain() gin.HandlersChain { return nil @@ -118,47 +154,3 @@ func (UnimplementedAlipayPrivServant) UserRechargeLink(req *web.UserRechargeLink } func (UnimplementedAlipayPrivServant) mustEmbedUnimplementedAlipayPrivServant() {} - -// UnimplementedAlipayPrivRender can be embedded to have forward compatible implementations. -type UnimplementedAlipayPrivRender struct { - RenderAny func(*gin.Context, any, mir.Error) -} - -func (r *UnimplementedAlipayPrivRender) RenderUserWalletBills(c *gin.Context, data *web.UserWalletBillsResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedAlipayPrivRender) RenderUserRechargeResult(c *gin.Context, data *web.UserRechargeResultResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedAlipayPrivRender) RenderUserRechargeLink(c *gin.Context, data *web.UserRechargeLinkResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedAlipayPrivRender) mustEmbedUnimplementedAlipayPrivRender() {} - -// UnimplementedAlipayPrivBinding can be embedded to have forward compatible implementations. -type UnimplementedAlipayPrivBinding struct { - BindAny func(*gin.Context, any) mir.Error -} - -func (b *UnimplementedAlipayPrivBinding) BindUserWalletBills(c *gin.Context) (*web.UserWalletBillsReq, mir.Error) { - obj := new(web.UserWalletBillsReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedAlipayPrivBinding) BindUserRechargeResult(c *gin.Context) (*web.UserRechargeResultReq, mir.Error) { - obj := new(web.UserRechargeResultReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedAlipayPrivBinding) BindUserRechargeLink(c *gin.Context) (*web.UserRechargeLinkReq, mir.Error) { - obj := new(web.UserRechargeLinkReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedAlipayPrivBinding) mustEmbedUnimplementedAlipayPrivBinding() {} diff --git a/auto/api/v1/alipay_pub.go b/auto/api/v1/alipay_pub.go index 5aa0dbb1..ad61d9a7 100644 --- a/auto/api/v1/alipay_pub.go +++ b/auto/api/v1/alipay_pub.go @@ -1,37 +1,27 @@ // Code generated by go-mir. DO NOT EDIT. // versions: -// - mir v3.2.0 +// - mir v4.0.0 package v1 import ( "net/http" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" "github.com/rocboss/paopao-ce/internal/model/web" ) type AlipayPub interface { + _default_ + AlipayNotify(*web.AlipayNotifyReq) mir.Error mustEmbedUnimplementedAlipayPubServant() } -type AlipayPubBinding interface { - BindAlipayNotify(*gin.Context) (*web.AlipayNotifyReq, mir.Error) - - mustEmbedUnimplementedAlipayPubBinding() -} - -type AlipayPubRender interface { - RenderAlipayNotify(*gin.Context, mir.Error) - - mustEmbedUnimplementedAlipayPubRender() -} - // RegisterAlipayPubServant register AlipayPub servant to gin -func RegisterAlipayPubServant(e *gin.Engine, s AlipayPub, b AlipayPubBinding, r AlipayPubRender) { +func RegisterAlipayPubServant(e *gin.Engine, s AlipayPub) { router := e.Group("v1") // register routes info to router @@ -42,46 +32,31 @@ func RegisterAlipayPubServant(e *gin.Engine, s AlipayPub, b AlipayPubBinding, r default: } - req, err := b.BindAlipayNotify(c) + var ( + obj any + err mir.Error + ) + req := new(web.AlipayNotifyReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderAlipayNotify(c, err) + s.Render(c, nil, err) return } - r.RenderAlipayNotify(c, s.AlipayNotify(req)) - }) + s.Render(c, nil, s.AlipayNotify(req)) + }) } // UnimplementedAlipayPubServant can be embedded to have forward compatible implementations. -type UnimplementedAlipayPubServant struct { -} +type UnimplementedAlipayPubServant struct{} func (UnimplementedAlipayPubServant) AlipayNotify(req *web.AlipayNotifyReq) mir.Error { return mir.Errorln(http.StatusNotImplemented, http.StatusText(http.StatusNotImplemented)) } func (UnimplementedAlipayPubServant) mustEmbedUnimplementedAlipayPubServant() {} - -// UnimplementedAlipayPubRender can be embedded to have forward compatible implementations. -type UnimplementedAlipayPubRender struct { - RenderAny func(*gin.Context, any, mir.Error) -} - -func (r *UnimplementedAlipayPubRender) RenderAlipayNotify(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedAlipayPubRender) mustEmbedUnimplementedAlipayPubRender() {} - -// UnimplementedAlipayPubBinding can be embedded to have forward compatible implementations. -type UnimplementedAlipayPubBinding struct { - BindAny func(*gin.Context, any) mir.Error -} - -func (b *UnimplementedAlipayPubBinding) BindAlipayNotify(c *gin.Context) (*web.AlipayNotifyReq, mir.Error) { - obj := new(web.AlipayNotifyReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedAlipayPubBinding) mustEmbedUnimplementedAlipayPubBinding() {} diff --git a/auto/api/v1/core.go b/auto/api/v1/core.go index 75c3bbd8..5608ef05 100644 --- a/auto/api/v1/core.go +++ b/auto/api/v1/core.go @@ -1,18 +1,20 @@ // Code generated by go-mir. DO NOT EDIT. // versions: -// - mir v3.2.0 +// - mir v4.0.0 package v1 import ( "net/http" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" "github.com/rocboss/paopao-ce/internal/model/web" ) type Core interface { + _default_ + // Chain provide handlers chain for gin Chain() gin.HandlersChain @@ -36,50 +38,8 @@ type Core interface { mustEmbedUnimplementedCoreServant() } -type CoreBinding interface { - BindTweetCollectionStatus(*gin.Context) (*web.TweetCollectionStatusReq, mir.Error) - BindTweetStarStatus(*gin.Context) (*web.TweetStarStatusReq, mir.Error) - BindSuggestTags(*gin.Context) (*web.SuggestTagsReq, mir.Error) - BindSuggestUsers(*gin.Context) (*web.SuggestUsersReq, mir.Error) - BindChangeAvatar(*gin.Context) (*web.ChangeAvatarReq, mir.Error) - BindChangeNickname(*gin.Context) (*web.ChangeNicknameReq, mir.Error) - BindChangePassword(*gin.Context) (*web.ChangePasswordReq, mir.Error) - BindUserPhoneBind(*gin.Context) (*web.UserPhoneBindReq, mir.Error) - BindGetStars(*gin.Context) (*web.GetStarsReq, mir.Error) - BindGetCollections(*gin.Context) (*web.GetCollectionsReq, mir.Error) - BindSendUserWhisper(*gin.Context) (*web.SendWhisperReq, mir.Error) - BindReadMessage(*gin.Context) (*web.ReadMessageReq, mir.Error) - BindGetMessages(*gin.Context) (*web.GetMessagesReq, mir.Error) - BindGetUnreadMsgCount(*gin.Context) (*web.GetUnreadMsgCountReq, mir.Error) - BindGetUserInfo(*gin.Context) (*web.UserInfoReq, mir.Error) - BindSyncSearchIndex(*gin.Context) (*web.SyncSearchIndexReq, mir.Error) - - mustEmbedUnimplementedCoreBinding() -} - -type CoreRender interface { - RenderTweetCollectionStatus(*gin.Context, *web.TweetCollectionStatusResp, mir.Error) - RenderTweetStarStatus(*gin.Context, *web.TweetStarStatusResp, mir.Error) - RenderSuggestTags(*gin.Context, *web.SuggestTagsResp, mir.Error) - RenderSuggestUsers(*gin.Context, *web.SuggestUsersResp, mir.Error) - RenderChangeAvatar(*gin.Context, mir.Error) - RenderChangeNickname(*gin.Context, mir.Error) - RenderChangePassword(*gin.Context, mir.Error) - RenderUserPhoneBind(*gin.Context, mir.Error) - RenderGetStars(*gin.Context, *web.GetStarsResp, mir.Error) - RenderGetCollections(*gin.Context, *web.GetCollectionsResp, mir.Error) - RenderSendUserWhisper(*gin.Context, mir.Error) - RenderReadMessage(*gin.Context, mir.Error) - RenderGetMessages(*gin.Context, *web.GetMessagesResp, mir.Error) - RenderGetUnreadMsgCount(*gin.Context, *web.GetUnreadMsgCountResp, mir.Error) - RenderGetUserInfo(*gin.Context, *web.UserInfoResp, mir.Error) - RenderSyncSearchIndex(*gin.Context, mir.Error) - - mustEmbedUnimplementedCoreRender() -} - // RegisterCoreServant register Core servant to gin -func RegisterCoreServant(e *gin.Engine, s Core, b CoreBinding, r CoreRender) { +func RegisterCoreServant(e *gin.Engine, s Core) { router := e.Group("v1") // use chain for router middlewares := s.Chain() @@ -93,15 +53,32 @@ func RegisterCoreServant(e *gin.Engine, s Core, b CoreBinding, r CoreRender) { default: } - req, err := b.BindTweetCollectionStatus(c) + var ( + obj any + err mir.Error + ) + req := new(web.TweetCollectionStatusReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderTweetCollectionStatus(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.TweetCollectionStatus(req) - r.RenderTweetCollectionStatus(c, resp, err) + obj, err = s.TweetCollectionStatus(req) + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("GET", "/post/star", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -109,15 +86,32 @@ func RegisterCoreServant(e *gin.Engine, s Core, b CoreBinding, r CoreRender) { default: } - req, err := b.BindTweetStarStatus(c) + var ( + obj any + err mir.Error + ) + req := new(web.TweetStarStatusReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.TweetStarStatus(req) if err != nil { - r.RenderTweetStarStatus(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.TweetStarStatus(req) - r.RenderTweetStarStatus(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("GET", "/suggest/tags", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -125,15 +119,32 @@ func RegisterCoreServant(e *gin.Engine, s Core, b CoreBinding, r CoreRender) { default: } - req, err := b.BindSuggestTags(c) + var ( + obj any + err mir.Error + ) + req := new(web.SuggestTagsReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.SuggestTags(req) if err != nil { - r.RenderSuggestTags(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.SuggestTags(req) - r.RenderSuggestTags(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("GET", "/suggest/users", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -141,15 +152,32 @@ func RegisterCoreServant(e *gin.Engine, s Core, b CoreBinding, r CoreRender) { default: } - req, err := b.BindSuggestUsers(c) + var ( + obj any + err mir.Error + ) + req := new(web.SuggestUsersReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderSuggestUsers(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.SuggestUsers(req) - r.RenderSuggestUsers(c, resp, err) + obj, err = s.SuggestUsers(req) + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("POST", "/user/avatar", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -157,14 +185,24 @@ func RegisterCoreServant(e *gin.Engine, s Core, b CoreBinding, r CoreRender) { default: } - req, err := b.BindChangeAvatar(c) + var ( + obj any + err mir.Error + ) + req := new(web.ChangeAvatarReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderChangeAvatar(c, err) + s.Render(c, nil, err) return } - r.RenderChangeAvatar(c, s.ChangeAvatar(req)) - }) + s.Render(c, nil, s.ChangeAvatar(req)) + }) router.Handle("POST", "/user/nickname", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -172,14 +210,24 @@ func RegisterCoreServant(e *gin.Engine, s Core, b CoreBinding, r CoreRender) { default: } - req, err := b.BindChangeNickname(c) + var ( + obj any + err mir.Error + ) + req := new(web.ChangeNicknameReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderChangeNickname(c, err) + s.Render(c, nil, err) return } - r.RenderChangeNickname(c, s.ChangeNickname(req)) - }) + s.Render(c, nil, s.ChangeNickname(req)) + }) router.Handle("POST", "/user/password", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -187,14 +235,24 @@ func RegisterCoreServant(e *gin.Engine, s Core, b CoreBinding, r CoreRender) { default: } - req, err := b.BindChangePassword(c) + var ( + obj any + err mir.Error + ) + req := new(web.ChangePasswordReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderChangePassword(c, err) + s.Render(c, nil, err) return } - r.RenderChangePassword(c, s.ChangePassword(req)) - }) + s.Render(c, nil, s.ChangePassword(req)) + }) router.Handle("POST", "/user/phone", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -202,14 +260,24 @@ func RegisterCoreServant(e *gin.Engine, s Core, b CoreBinding, r CoreRender) { default: } - req, err := b.BindUserPhoneBind(c) + var ( + obj any + err mir.Error + ) + req := new(web.UserPhoneBindReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderUserPhoneBind(c, err) + s.Render(c, nil, err) return } - r.RenderUserPhoneBind(c, s.UserPhoneBind(req)) - }) + s.Render(c, nil, s.UserPhoneBind(req)) + }) router.Handle("GET", "/user/stars", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -217,15 +285,32 @@ func RegisterCoreServant(e *gin.Engine, s Core, b CoreBinding, r CoreRender) { default: } - req, err := b.BindGetStars(c) + var ( + obj any + err mir.Error + ) + req := new(web.GetStarsReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.GetStars(req) if err != nil { - r.RenderGetStars(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.GetStars(req) - r.RenderGetStars(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("GET", "/user/collections", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -233,15 +318,32 @@ func RegisterCoreServant(e *gin.Engine, s Core, b CoreBinding, r CoreRender) { default: } - req, err := b.BindGetCollections(c) + var ( + obj any + err mir.Error + ) + req := new(web.GetCollectionsReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderGetCollections(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.GetCollections(req) - r.RenderGetCollections(c, resp, err) + obj, err = s.GetCollections(req) + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("POST", "/user/whisper", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -249,14 +351,24 @@ func RegisterCoreServant(e *gin.Engine, s Core, b CoreBinding, r CoreRender) { default: } - req, err := b.BindSendUserWhisper(c) + var ( + obj any + err mir.Error + ) + req := new(web.SendWhisperReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderSendUserWhisper(c, err) + s.Render(c, nil, err) return } - r.RenderSendUserWhisper(c, s.SendUserWhisper(req)) - }) + s.Render(c, nil, s.SendUserWhisper(req)) + }) router.Handle("POST", "/user/message/read", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -264,14 +376,24 @@ func RegisterCoreServant(e *gin.Engine, s Core, b CoreBinding, r CoreRender) { default: } - req, err := b.BindReadMessage(c) + var ( + obj any + err mir.Error + ) + req := new(web.ReadMessageReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderReadMessage(c, err) + s.Render(c, nil, err) return } - r.RenderReadMessage(c, s.ReadMessage(req)) - }) + s.Render(c, nil, s.ReadMessage(req)) + }) router.Handle("GET", "/user/messages", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -279,15 +401,32 @@ func RegisterCoreServant(e *gin.Engine, s Core, b CoreBinding, r CoreRender) { default: } - req, err := b.BindGetMessages(c) + var ( + obj any + err mir.Error + ) + req := new(web.GetMessagesReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.GetMessages(req) if err != nil { - r.RenderGetMessages(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.GetMessages(req) - r.RenderGetMessages(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("GET", "/user/msgcount/unread", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -295,15 +434,32 @@ func RegisterCoreServant(e *gin.Engine, s Core, b CoreBinding, r CoreRender) { default: } - req, err := b.BindGetUnreadMsgCount(c) + var ( + obj any + err mir.Error + ) + req := new(web.GetUnreadMsgCountReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderGetUnreadMsgCount(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.GetUnreadMsgCount(req) - r.RenderGetUnreadMsgCount(c, resp, err) + obj, err = s.GetUnreadMsgCount(req) + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("GET", "/user/info", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -311,15 +467,32 @@ func RegisterCoreServant(e *gin.Engine, s Core, b CoreBinding, r CoreRender) { default: } - req, err := b.BindGetUserInfo(c) + var ( + obj any + err mir.Error + ) + req := new(web.UserInfoReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderGetUserInfo(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.GetUserInfo(req) - r.RenderGetUserInfo(c, resp, err) + obj, err = s.GetUserInfo(req) + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("GET", "/sync/index", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -327,19 +500,28 @@ func RegisterCoreServant(e *gin.Engine, s Core, b CoreBinding, r CoreRender) { default: } - req, err := b.BindSyncSearchIndex(c) + var ( + obj any + err mir.Error + ) + req := new(web.SyncSearchIndexReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderSyncSearchIndex(c, err) + s.Render(c, nil, err) return } - r.RenderSyncSearchIndex(c, s.SyncSearchIndex(req)) - }) + s.Render(c, nil, s.SyncSearchIndex(req)) + }) } // UnimplementedCoreServant can be embedded to have forward compatible implementations. -type UnimplementedCoreServant struct { -} +type UnimplementedCoreServant struct{} func (UnimplementedCoreServant) Chain() gin.HandlersChain { return nil @@ -410,177 +592,3 @@ func (UnimplementedCoreServant) SyncSearchIndex(req *web.SyncSearchIndexReq) mir } func (UnimplementedCoreServant) mustEmbedUnimplementedCoreServant() {} - -// UnimplementedCoreRender can be embedded to have forward compatible implementations. -type UnimplementedCoreRender struct { - RenderAny func(*gin.Context, any, mir.Error) -} - -func (r *UnimplementedCoreRender) RenderTweetCollectionStatus(c *gin.Context, data *web.TweetCollectionStatusResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedCoreRender) RenderTweetStarStatus(c *gin.Context, data *web.TweetStarStatusResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedCoreRender) RenderSuggestTags(c *gin.Context, data *web.SuggestTagsResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedCoreRender) RenderSuggestUsers(c *gin.Context, data *web.SuggestUsersResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedCoreRender) RenderChangeAvatar(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedCoreRender) RenderChangeNickname(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedCoreRender) RenderChangePassword(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedCoreRender) RenderUserPhoneBind(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedCoreRender) RenderGetStars(c *gin.Context, data *web.GetStarsResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedCoreRender) RenderGetCollections(c *gin.Context, data *web.GetCollectionsResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedCoreRender) RenderSendUserWhisper(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedCoreRender) RenderReadMessage(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedCoreRender) RenderGetMessages(c *gin.Context, data *web.GetMessagesResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedCoreRender) RenderGetUnreadMsgCount(c *gin.Context, data *web.GetUnreadMsgCountResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedCoreRender) RenderGetUserInfo(c *gin.Context, data *web.UserInfoResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedCoreRender) RenderSyncSearchIndex(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedCoreRender) mustEmbedUnimplementedCoreRender() {} - -// UnimplementedCoreBinding can be embedded to have forward compatible implementations. -type UnimplementedCoreBinding struct { - BindAny func(*gin.Context, any) mir.Error -} - -func (b *UnimplementedCoreBinding) BindTweetCollectionStatus(c *gin.Context) (*web.TweetCollectionStatusReq, mir.Error) { - obj := new(web.TweetCollectionStatusReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedCoreBinding) BindTweetStarStatus(c *gin.Context) (*web.TweetStarStatusReq, mir.Error) { - obj := new(web.TweetStarStatusReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedCoreBinding) BindSuggestTags(c *gin.Context) (*web.SuggestTagsReq, mir.Error) { - obj := new(web.SuggestTagsReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedCoreBinding) BindSuggestUsers(c *gin.Context) (*web.SuggestUsersReq, mir.Error) { - obj := new(web.SuggestUsersReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedCoreBinding) BindChangeAvatar(c *gin.Context) (*web.ChangeAvatarReq, mir.Error) { - obj := new(web.ChangeAvatarReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedCoreBinding) BindChangeNickname(c *gin.Context) (*web.ChangeNicknameReq, mir.Error) { - obj := new(web.ChangeNicknameReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedCoreBinding) BindChangePassword(c *gin.Context) (*web.ChangePasswordReq, mir.Error) { - obj := new(web.ChangePasswordReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedCoreBinding) BindUserPhoneBind(c *gin.Context) (*web.UserPhoneBindReq, mir.Error) { - obj := new(web.UserPhoneBindReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedCoreBinding) BindGetStars(c *gin.Context) (*web.GetStarsReq, mir.Error) { - obj := new(web.GetStarsReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedCoreBinding) BindGetCollections(c *gin.Context) (*web.GetCollectionsReq, mir.Error) { - obj := new(web.GetCollectionsReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedCoreBinding) BindSendUserWhisper(c *gin.Context) (*web.SendWhisperReq, mir.Error) { - obj := new(web.SendWhisperReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedCoreBinding) BindReadMessage(c *gin.Context) (*web.ReadMessageReq, mir.Error) { - obj := new(web.ReadMessageReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedCoreBinding) BindGetMessages(c *gin.Context) (*web.GetMessagesReq, mir.Error) { - obj := new(web.GetMessagesReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedCoreBinding) BindGetUnreadMsgCount(c *gin.Context) (*web.GetUnreadMsgCountReq, mir.Error) { - obj := new(web.GetUnreadMsgCountReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedCoreBinding) BindGetUserInfo(c *gin.Context) (*web.UserInfoReq, mir.Error) { - obj := new(web.UserInfoReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedCoreBinding) BindSyncSearchIndex(c *gin.Context) (*web.SyncSearchIndexReq, mir.Error) { - obj := new(web.SyncSearchIndexReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedCoreBinding) mustEmbedUnimplementedCoreBinding() {} diff --git a/auto/api/v1/followship.go b/auto/api/v1/followship.go index fb2892f8..775e16f5 100644 --- a/auto/api/v1/followship.go +++ b/auto/api/v1/followship.go @@ -1,18 +1,20 @@ // Code generated by go-mir. DO NOT EDIT. // versions: -// - mir v3.2.0 +// - mir v4.0.0 package v1 import ( "net/http" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" "github.com/rocboss/paopao-ce/internal/model/web" ) type Followship interface { + _default_ + // Chain provide handlers chain for gin Chain() gin.HandlersChain @@ -24,26 +26,8 @@ type Followship interface { mustEmbedUnimplementedFollowshipServant() } -type FollowshipBinding interface { - BindListFollowers(*gin.Context) (*web.ListFollowersReq, mir.Error) - BindListFollowings(*gin.Context) (*web.ListFollowingsReq, mir.Error) - BindDeleteFollowing(*gin.Context) (*web.DeleteFollowingReq, mir.Error) - BindAddFollowing(*gin.Context) (*web.AddFollowingReq, mir.Error) - - mustEmbedUnimplementedFollowshipBinding() -} - -type FollowshipRender interface { - RenderListFollowers(*gin.Context, *web.ListFollowersResp, mir.Error) - RenderListFollowings(*gin.Context, *web.ListFollowingsResp, mir.Error) - RenderDeleteFollowing(*gin.Context, mir.Error) - RenderAddFollowing(*gin.Context, mir.Error) - - mustEmbedUnimplementedFollowshipRender() -} - // RegisterFollowshipServant register Followship servant to gin -func RegisterFollowshipServant(e *gin.Engine, s Followship, b FollowshipBinding, r FollowshipRender) { +func RegisterFollowshipServant(e *gin.Engine, s Followship) { router := e.Group("v1") // use chain for router middlewares := s.Chain() @@ -57,15 +41,32 @@ func RegisterFollowshipServant(e *gin.Engine, s Followship, b FollowshipBinding, default: } - req, err := b.BindListFollowers(c) + var ( + obj any + err mir.Error + ) + req := new(web.ListFollowersReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.ListFollowers(req) if err != nil { - r.RenderListFollowers(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.ListFollowers(req) - r.RenderListFollowers(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("GET", "/following/list", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -73,15 +74,32 @@ func RegisterFollowshipServant(e *gin.Engine, s Followship, b FollowshipBinding, default: } - req, err := b.BindListFollowings(c) + var ( + obj any + err mir.Error + ) + req := new(web.ListFollowingsReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.ListFollowings(req) if err != nil { - r.RenderListFollowings(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.ListFollowings(req) - r.RenderListFollowings(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("POST", "/following/delete", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -89,14 +107,24 @@ func RegisterFollowshipServant(e *gin.Engine, s Followship, b FollowshipBinding, default: } - req, err := b.BindDeleteFollowing(c) + var ( + obj any + err mir.Error + ) + req := new(web.DeleteFollowingReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderDeleteFollowing(c, err) + s.Render(c, nil, err) return } - r.RenderDeleteFollowing(c, s.DeleteFollowing(req)) - }) + s.Render(c, nil, s.DeleteFollowing(req)) + }) router.Handle("POST", "/following/add", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -104,19 +132,28 @@ func RegisterFollowshipServant(e *gin.Engine, s Followship, b FollowshipBinding, default: } - req, err := b.BindAddFollowing(c) + var ( + obj any + err mir.Error + ) + req := new(web.AddFollowingReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderAddFollowing(c, err) + s.Render(c, nil, err) return } - r.RenderAddFollowing(c, s.AddFollowing(req)) - }) + s.Render(c, nil, s.AddFollowing(req)) + }) } // UnimplementedFollowshipServant can be embedded to have forward compatible implementations. -type UnimplementedFollowshipServant struct { -} +type UnimplementedFollowshipServant struct{} func (UnimplementedFollowshipServant) Chain() gin.HandlersChain { return nil @@ -139,57 +176,3 @@ func (UnimplementedFollowshipServant) AddFollowing(req *web.AddFollowingReq) mir } func (UnimplementedFollowshipServant) mustEmbedUnimplementedFollowshipServant() {} - -// UnimplementedFollowshipRender can be embedded to have forward compatible implementations. -type UnimplementedFollowshipRender struct { - RenderAny func(*gin.Context, any, mir.Error) -} - -func (r *UnimplementedFollowshipRender) RenderListFollowers(c *gin.Context, data *web.ListFollowersResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedFollowshipRender) RenderListFollowings(c *gin.Context, data *web.ListFollowingsResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedFollowshipRender) RenderDeleteFollowing(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedFollowshipRender) RenderAddFollowing(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedFollowshipRender) mustEmbedUnimplementedFollowshipRender() {} - -// UnimplementedFollowshipBinding can be embedded to have forward compatible implementations. -type UnimplementedFollowshipBinding struct { - BindAny func(*gin.Context, any) mir.Error -} - -func (b *UnimplementedFollowshipBinding) BindListFollowers(c *gin.Context) (*web.ListFollowersReq, mir.Error) { - obj := new(web.ListFollowersReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedFollowshipBinding) BindListFollowings(c *gin.Context) (*web.ListFollowingsReq, mir.Error) { - obj := new(web.ListFollowingsReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedFollowshipBinding) BindDeleteFollowing(c *gin.Context) (*web.DeleteFollowingReq, mir.Error) { - obj := new(web.DeleteFollowingReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedFollowshipBinding) BindAddFollowing(c *gin.Context) (*web.AddFollowingReq, mir.Error) { - obj := new(web.AddFollowingReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedFollowshipBinding) mustEmbedUnimplementedFollowshipBinding() {} diff --git a/auto/api/v1/friendship.go b/auto/api/v1/friendship.go index f254c490..403ec6c2 100644 --- a/auto/api/v1/friendship.go +++ b/auto/api/v1/friendship.go @@ -1,18 +1,20 @@ // Code generated by go-mir. DO NOT EDIT. // versions: -// - mir v3.2.0 +// - mir v4.0.0 package v1 import ( "net/http" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" "github.com/rocboss/paopao-ce/internal/model/web" ) type Friendship interface { + _default_ + // Chain provide handlers chain for gin Chain() gin.HandlersChain @@ -25,28 +27,8 @@ type Friendship interface { mustEmbedUnimplementedFriendshipServant() } -type FriendshipBinding interface { - BindGetContacts(*gin.Context) (*web.GetContactsReq, mir.Error) - BindDeleteFriend(*gin.Context) (*web.DeleteFriendReq, mir.Error) - BindRejectFriend(*gin.Context) (*web.RejectFriendReq, mir.Error) - BindAddFriend(*gin.Context) (*web.AddFriendReq, mir.Error) - BindRequestingFriend(*gin.Context) (*web.RequestingFriendReq, mir.Error) - - mustEmbedUnimplementedFriendshipBinding() -} - -type FriendshipRender interface { - RenderGetContacts(*gin.Context, *web.GetContactsResp, mir.Error) - RenderDeleteFriend(*gin.Context, mir.Error) - RenderRejectFriend(*gin.Context, mir.Error) - RenderAddFriend(*gin.Context, mir.Error) - RenderRequestingFriend(*gin.Context, mir.Error) - - mustEmbedUnimplementedFriendshipRender() -} - // RegisterFriendshipServant register Friendship servant to gin -func RegisterFriendshipServant(e *gin.Engine, s Friendship, b FriendshipBinding, r FriendshipRender) { +func RegisterFriendshipServant(e *gin.Engine, s Friendship) { router := e.Group("v1") // use chain for router middlewares := s.Chain() @@ -60,15 +42,32 @@ func RegisterFriendshipServant(e *gin.Engine, s Friendship, b FriendshipBinding, default: } - req, err := b.BindGetContacts(c) + var ( + obj any + err mir.Error + ) + req := new(web.GetContactsReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.GetContacts(req) if err != nil { - r.RenderGetContacts(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.GetContacts(req) - r.RenderGetContacts(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("POST", "/friend/delete", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -76,14 +75,24 @@ func RegisterFriendshipServant(e *gin.Engine, s Friendship, b FriendshipBinding, default: } - req, err := b.BindDeleteFriend(c) + var ( + obj any + err mir.Error + ) + req := new(web.DeleteFriendReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderDeleteFriend(c, err) + s.Render(c, nil, err) return } - r.RenderDeleteFriend(c, s.DeleteFriend(req)) - }) + s.Render(c, nil, s.DeleteFriend(req)) + }) router.Handle("POST", "/friend/reject", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -91,14 +100,24 @@ func RegisterFriendshipServant(e *gin.Engine, s Friendship, b FriendshipBinding, default: } - req, err := b.BindRejectFriend(c) + var ( + obj any + err mir.Error + ) + req := new(web.RejectFriendReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderRejectFriend(c, err) + s.Render(c, nil, err) return } - r.RenderRejectFriend(c, s.RejectFriend(req)) - }) + s.Render(c, nil, s.RejectFriend(req)) + }) router.Handle("POST", "/friend/add", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -106,14 +125,24 @@ func RegisterFriendshipServant(e *gin.Engine, s Friendship, b FriendshipBinding, default: } - req, err := b.BindAddFriend(c) + var ( + obj any + err mir.Error + ) + req := new(web.AddFriendReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderAddFriend(c, err) + s.Render(c, nil, err) return } - r.RenderAddFriend(c, s.AddFriend(req)) - }) + s.Render(c, nil, s.AddFriend(req)) + }) router.Handle("POST", "/friend/requesting", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -121,19 +150,28 @@ func RegisterFriendshipServant(e *gin.Engine, s Friendship, b FriendshipBinding, default: } - req, err := b.BindRequestingFriend(c) + var ( + obj any + err mir.Error + ) + req := new(web.RequestingFriendReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderRequestingFriend(c, err) + s.Render(c, nil, err) return } - r.RenderRequestingFriend(c, s.RequestingFriend(req)) - }) + s.Render(c, nil, s.RequestingFriend(req)) + }) } // UnimplementedFriendshipServant can be embedded to have forward compatible implementations. -type UnimplementedFriendshipServant struct { -} +type UnimplementedFriendshipServant struct{} func (UnimplementedFriendshipServant) Chain() gin.HandlersChain { return nil @@ -160,67 +198,3 @@ func (UnimplementedFriendshipServant) RequestingFriend(req *web.RequestingFriend } func (UnimplementedFriendshipServant) mustEmbedUnimplementedFriendshipServant() {} - -// UnimplementedFriendshipRender can be embedded to have forward compatible implementations. -type UnimplementedFriendshipRender struct { - RenderAny func(*gin.Context, any, mir.Error) -} - -func (r *UnimplementedFriendshipRender) RenderGetContacts(c *gin.Context, data *web.GetContactsResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedFriendshipRender) RenderDeleteFriend(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedFriendshipRender) RenderRejectFriend(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedFriendshipRender) RenderAddFriend(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedFriendshipRender) RenderRequestingFriend(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedFriendshipRender) mustEmbedUnimplementedFriendshipRender() {} - -// UnimplementedFriendshipBinding can be embedded to have forward compatible implementations. -type UnimplementedFriendshipBinding struct { - BindAny func(*gin.Context, any) mir.Error -} - -func (b *UnimplementedFriendshipBinding) BindGetContacts(c *gin.Context) (*web.GetContactsReq, mir.Error) { - obj := new(web.GetContactsReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedFriendshipBinding) BindDeleteFriend(c *gin.Context) (*web.DeleteFriendReq, mir.Error) { - obj := new(web.DeleteFriendReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedFriendshipBinding) BindRejectFriend(c *gin.Context) (*web.RejectFriendReq, mir.Error) { - obj := new(web.RejectFriendReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedFriendshipBinding) BindAddFriend(c *gin.Context) (*web.AddFriendReq, mir.Error) { - obj := new(web.AddFriendReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedFriendshipBinding) BindRequestingFriend(c *gin.Context) (*web.RequestingFriendReq, mir.Error) { - obj := new(web.RequestingFriendReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedFriendshipBinding) mustEmbedUnimplementedFriendshipBinding() {} diff --git a/auto/api/v1/loose.go b/auto/api/v1/loose.go index 13e471ae..309609aa 100644 --- a/auto/api/v1/loose.go +++ b/auto/api/v1/loose.go @@ -1,18 +1,20 @@ // Code generated by go-mir. DO NOT EDIT. // versions: -// - mir v3.2.0 +// - mir v4.0.0 package v1 import ( "net/http" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" "github.com/rocboss/paopao-ce/internal/model/web" ) type Loose interface { + _default_ + // Chain provide handlers chain for gin Chain() gin.HandlersChain @@ -25,28 +27,8 @@ type Loose interface { mustEmbedUnimplementedLooseServant() } -type LooseBinding interface { - BindTweetComments(*gin.Context) (*web.TweetCommentsReq, mir.Error) - BindTopicList(*gin.Context) (*web.TopicListReq, mir.Error) - BindGetUserProfile(*gin.Context) (*web.GetUserProfileReq, mir.Error) - BindGetUserTweets(*gin.Context) (*web.GetUserTweetsReq, mir.Error) - BindTimeline(*gin.Context) (*web.TimelineReq, mir.Error) - - mustEmbedUnimplementedLooseBinding() -} - -type LooseRender interface { - RenderTweetComments(*gin.Context, *web.TweetCommentsResp, mir.Error) - RenderTopicList(*gin.Context, *web.TopicListResp, mir.Error) - RenderGetUserProfile(*gin.Context, *web.GetUserProfileResp, mir.Error) - RenderGetUserTweets(*gin.Context, *web.GetUserTweetsResp, mir.Error) - RenderTimeline(*gin.Context, *web.TimelineResp, mir.Error) - - mustEmbedUnimplementedLooseRender() -} - // RegisterLooseServant register Loose servant to gin -func RegisterLooseServant(e *gin.Engine, s Loose, b LooseBinding, r LooseRender) { +func RegisterLooseServant(e *gin.Engine, s Loose) { router := e.Group("v1") // use chain for router middlewares := s.Chain() @@ -60,15 +42,32 @@ func RegisterLooseServant(e *gin.Engine, s Loose, b LooseBinding, r LooseRender) default: } - req, err := b.BindTweetComments(c) + var ( + obj any + err mir.Error + ) + req := new(web.TweetCommentsReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderTweetComments(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.TweetComments(req) - r.RenderTweetComments(c, resp, err) + obj, err = s.TweetComments(req) + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("GET", "/tags", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -76,15 +75,32 @@ func RegisterLooseServant(e *gin.Engine, s Loose, b LooseBinding, r LooseRender) default: } - req, err := b.BindTopicList(c) + var ( + obj any + err mir.Error + ) + req := new(web.TopicListReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.TopicList(req) if err != nil { - r.RenderTopicList(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.TopicList(req) - r.RenderTopicList(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("GET", "/user/profile", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -92,15 +108,32 @@ func RegisterLooseServant(e *gin.Engine, s Loose, b LooseBinding, r LooseRender) default: } - req, err := b.BindGetUserProfile(c) + var ( + obj any + err mir.Error + ) + req := new(web.GetUserProfileReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderGetUserProfile(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.GetUserProfile(req) - r.RenderGetUserProfile(c, resp, err) + obj, err = s.GetUserProfile(req) + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("GET", "/user/posts", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -108,15 +141,32 @@ func RegisterLooseServant(e *gin.Engine, s Loose, b LooseBinding, r LooseRender) default: } - req, err := b.BindGetUserTweets(c) + var ( + obj any + err mir.Error + ) + req := new(web.GetUserTweetsReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.GetUserTweets(req) if err != nil { - r.RenderGetUserTweets(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.GetUserTweets(req) - r.RenderGetUserTweets(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("GET", "/posts", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -124,20 +174,36 @@ func RegisterLooseServant(e *gin.Engine, s Loose, b LooseBinding, r LooseRender) default: } - req, err := b.BindTimeline(c) + var ( + obj any + err mir.Error + ) + req := new(web.TimelineReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderTimeline(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.Timeline(req) - r.RenderTimeline(c, resp, err) + obj, err = s.Timeline(req) + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - } // UnimplementedLooseServant can be embedded to have forward compatible implementations. -type UnimplementedLooseServant struct { -} +type UnimplementedLooseServant struct{} func (UnimplementedLooseServant) Chain() gin.HandlersChain { return nil @@ -164,67 +230,3 @@ func (UnimplementedLooseServant) Timeline(req *web.TimelineReq) (*web.TimelineRe } func (UnimplementedLooseServant) mustEmbedUnimplementedLooseServant() {} - -// UnimplementedLooseRender can be embedded to have forward compatible implementations. -type UnimplementedLooseRender struct { - RenderAny func(*gin.Context, any, mir.Error) -} - -func (r *UnimplementedLooseRender) RenderTweetComments(c *gin.Context, data *web.TweetCommentsResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedLooseRender) RenderTopicList(c *gin.Context, data *web.TopicListResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedLooseRender) RenderGetUserProfile(c *gin.Context, data *web.GetUserProfileResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedLooseRender) RenderGetUserTweets(c *gin.Context, data *web.GetUserTweetsResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedLooseRender) RenderTimeline(c *gin.Context, data *web.TimelineResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedLooseRender) mustEmbedUnimplementedLooseRender() {} - -// UnimplementedLooseBinding can be embedded to have forward compatible implementations. -type UnimplementedLooseBinding struct { - BindAny func(*gin.Context, any) mir.Error -} - -func (b *UnimplementedLooseBinding) BindTweetComments(c *gin.Context) (*web.TweetCommentsReq, mir.Error) { - obj := new(web.TweetCommentsReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedLooseBinding) BindTopicList(c *gin.Context) (*web.TopicListReq, mir.Error) { - obj := new(web.TopicListReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedLooseBinding) BindGetUserProfile(c *gin.Context) (*web.GetUserProfileReq, mir.Error) { - obj := new(web.GetUserProfileReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedLooseBinding) BindGetUserTweets(c *gin.Context) (*web.GetUserTweetsReq, mir.Error) { - obj := new(web.GetUserTweetsReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedLooseBinding) BindTimeline(c *gin.Context) (*web.TimelineReq, mir.Error) { - obj := new(web.TimelineReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedLooseBinding) mustEmbedUnimplementedLooseBinding() {} diff --git a/auto/api/v1/priv.go b/auto/api/v1/priv.go index ae267456..9e9d9a38 100644 --- a/auto/api/v1/priv.go +++ b/auto/api/v1/priv.go @@ -1,18 +1,20 @@ // Code generated by go-mir. DO NOT EDIT. // versions: -// - mir v3.2.0 +// - mir v4.0.0 package v1 import ( "net/http" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" "github.com/rocboss/paopao-ce/internal/model/web" ) type Priv interface { + _default_ + // Chain provide handlers chain for gin Chain() gin.HandlersChain @@ -41,60 +43,8 @@ type Priv interface { mustEmbedUnimplementedPrivServant() } -type PrivBinding interface { - BindUnfollowTopic(*gin.Context) (*web.UnfollowTopicReq, mir.Error) - BindFollowTopic(*gin.Context) (*web.FollowTopicReq, mir.Error) - BindStickTopic(*gin.Context) (*web.StickTopicReq, mir.Error) - BindThumbsDownTweetReply(*gin.Context) (*web.TweetReplyThumbsReq, mir.Error) - BindThumbsUpTweetReply(*gin.Context) (*web.TweetReplyThumbsReq, mir.Error) - BindThumbsDownTweetComment(*gin.Context) (*web.TweetCommentThumbsReq, mir.Error) - BindThumbsUpTweetComment(*gin.Context) (*web.TweetCommentThumbsReq, mir.Error) - BindDeleteCommentReply(*gin.Context) (*web.DeleteCommentReplyReq, mir.Error) - BindCreateCommentReply(*gin.Context) (*web.CreateCommentReplyReq, mir.Error) - BindDeleteComment(*gin.Context) (*web.DeleteCommentReq, mir.Error) - BindCreateComment(*gin.Context) (*web.CreateCommentReq, mir.Error) - BindVisibleTweet(*gin.Context) (*web.VisibleTweetReq, mir.Error) - BindStickTweet(*gin.Context) (*web.StickTweetReq, mir.Error) - BindLockTweet(*gin.Context) (*web.LockTweetReq, mir.Error) - BindCollectionTweet(*gin.Context) (*web.CollectionTweetReq, mir.Error) - BindStarTweet(*gin.Context) (*web.StarTweetReq, mir.Error) - BindDeleteTweet(*gin.Context) (*web.DeleteTweetReq, mir.Error) - BindCreateTweet(*gin.Context) (*web.CreateTweetReq, mir.Error) - BindDownloadAttachment(*gin.Context) (*web.DownloadAttachmentReq, mir.Error) - BindDownloadAttachmentPrecheck(*gin.Context) (*web.DownloadAttachmentPrecheckReq, mir.Error) - BindUploadAttachment(*gin.Context) (*web.UploadAttachmentReq, mir.Error) - - mustEmbedUnimplementedPrivBinding() -} - -type PrivRender interface { - RenderUnfollowTopic(*gin.Context, mir.Error) - RenderFollowTopic(*gin.Context, mir.Error) - RenderStickTopic(*gin.Context, *web.StickTopicResp, mir.Error) - RenderThumbsDownTweetReply(*gin.Context, mir.Error) - RenderThumbsUpTweetReply(*gin.Context, mir.Error) - RenderThumbsDownTweetComment(*gin.Context, mir.Error) - RenderThumbsUpTweetComment(*gin.Context, mir.Error) - RenderDeleteCommentReply(*gin.Context, mir.Error) - RenderCreateCommentReply(*gin.Context, *web.CreateCommentReplyResp, mir.Error) - RenderDeleteComment(*gin.Context, mir.Error) - RenderCreateComment(*gin.Context, *web.CreateCommentResp, mir.Error) - RenderVisibleTweet(*gin.Context, *web.VisibleTweetResp, mir.Error) - RenderStickTweet(*gin.Context, *web.StickTweetResp, mir.Error) - RenderLockTweet(*gin.Context, *web.LockTweetResp, mir.Error) - RenderCollectionTweet(*gin.Context, *web.CollectionTweetResp, mir.Error) - RenderStarTweet(*gin.Context, *web.StarTweetResp, mir.Error) - RenderDeleteTweet(*gin.Context, mir.Error) - RenderCreateTweet(*gin.Context, *web.CreateTweetResp, mir.Error) - RenderDownloadAttachment(*gin.Context, *web.DownloadAttachmentResp, mir.Error) - RenderDownloadAttachmentPrecheck(*gin.Context, *web.DownloadAttachmentPrecheckResp, mir.Error) - RenderUploadAttachment(*gin.Context, *web.UploadAttachmentResp, mir.Error) - - mustEmbedUnimplementedPrivRender() -} - // RegisterPrivServant register Priv servant to gin -func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { +func RegisterPrivServant(e *gin.Engine, s Priv) { router := e.Group("v1") // use chain for router middlewares := s.Chain() @@ -108,14 +58,24 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindUnfollowTopic(c) + var ( + obj any + err mir.Error + ) + req := new(web.UnfollowTopicReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderUnfollowTopic(c, err) + s.Render(c, nil, err) return } - r.RenderUnfollowTopic(c, s.UnfollowTopic(req)) - }) + s.Render(c, nil, s.UnfollowTopic(req)) + }) router.Handle("POST", "/topic/follow", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -123,14 +83,24 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindFollowTopic(c) + var ( + obj any + err mir.Error + ) + req := new(web.FollowTopicReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderFollowTopic(c, err) + s.Render(c, nil, err) return } - r.RenderFollowTopic(c, s.FollowTopic(req)) - }) + s.Render(c, nil, s.FollowTopic(req)) + }) router.Handle("POST", "/topic/stick", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -138,15 +108,32 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindStickTopic(c) + var ( + obj any + err mir.Error + ) + req := new(web.StickTopicReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderStickTopic(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.StickTopic(req) - r.RenderStickTopic(c, resp, err) + obj, err = s.StickTopic(req) + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("POST", "/tweet/reply/thumbsdown", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -154,14 +141,24 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindThumbsDownTweetReply(c) + var ( + obj any + err mir.Error + ) + req := new(web.TweetReplyThumbsReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderThumbsDownTweetReply(c, err) + s.Render(c, nil, err) return } - r.RenderThumbsDownTweetReply(c, s.ThumbsDownTweetReply(req)) - }) + s.Render(c, nil, s.ThumbsDownTweetReply(req)) + }) router.Handle("POST", "/tweet/reply/thumbsup", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -169,14 +166,24 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindThumbsUpTweetReply(c) + var ( + obj any + err mir.Error + ) + req := new(web.TweetReplyThumbsReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderThumbsUpTweetReply(c, err) + s.Render(c, nil, err) return } - r.RenderThumbsUpTweetReply(c, s.ThumbsUpTweetReply(req)) - }) + s.Render(c, nil, s.ThumbsUpTweetReply(req)) + }) router.Handle("POST", "/tweet/comment/thumbsdown", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -184,14 +191,24 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindThumbsDownTweetComment(c) + var ( + obj any + err mir.Error + ) + req := new(web.TweetCommentThumbsReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderThumbsDownTweetComment(c, err) + s.Render(c, nil, err) return } - r.RenderThumbsDownTweetComment(c, s.ThumbsDownTweetComment(req)) - }) + s.Render(c, nil, s.ThumbsDownTweetComment(req)) + }) router.Handle("POST", "/tweet/comment/thumbsup", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -199,14 +216,24 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindThumbsUpTweetComment(c) + var ( + obj any + err mir.Error + ) + req := new(web.TweetCommentThumbsReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderThumbsUpTweetComment(c, err) + s.Render(c, nil, err) return } - r.RenderThumbsUpTweetComment(c, s.ThumbsUpTweetComment(req)) - }) + s.Render(c, nil, s.ThumbsUpTweetComment(req)) + }) router.Handle("DELETE", "/post/comment/reply", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -214,14 +241,24 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindDeleteCommentReply(c) + var ( + obj any + err mir.Error + ) + req := new(web.DeleteCommentReplyReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderDeleteCommentReply(c, err) + s.Render(c, nil, err) return } - r.RenderDeleteCommentReply(c, s.DeleteCommentReply(req)) - }) + s.Render(c, nil, s.DeleteCommentReply(req)) + }) router.Handle("POST", "/post/comment/reply", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -229,15 +266,32 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindCreateCommentReply(c) + var ( + obj any + err mir.Error + ) + req := new(web.CreateCommentReplyReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.CreateCommentReply(req) if err != nil { - r.RenderCreateCommentReply(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.CreateCommentReply(req) - r.RenderCreateCommentReply(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("DELETE", "/post/comment", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -245,14 +299,24 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindDeleteComment(c) + var ( + obj any + err mir.Error + ) + req := new(web.DeleteCommentReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderDeleteComment(c, err) + s.Render(c, nil, err) return } - r.RenderDeleteComment(c, s.DeleteComment(req)) - }) + s.Render(c, nil, s.DeleteComment(req)) + }) router.Handle("POST", "/post/comment", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -260,15 +324,32 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindCreateComment(c) + var ( + obj any + err mir.Error + ) + req := new(web.CreateCommentReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.CreateComment(req) if err != nil { - r.RenderCreateComment(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.CreateComment(req) - r.RenderCreateComment(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("POST", "/post/visibility", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -276,15 +357,32 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindVisibleTweet(c) + var ( + obj any + err mir.Error + ) + req := new(web.VisibleTweetReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.VisibleTweet(req) if err != nil { - r.RenderVisibleTweet(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.VisibleTweet(req) - r.RenderVisibleTweet(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("POST", "/post/stick", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -292,15 +390,32 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindStickTweet(c) + var ( + obj any + err mir.Error + ) + req := new(web.StickTweetReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderStickTweet(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.StickTweet(req) - r.RenderStickTweet(c, resp, err) + obj, err = s.StickTweet(req) + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("POST", "/post/lock", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -308,15 +423,32 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindLockTweet(c) + var ( + obj any + err mir.Error + ) + req := new(web.LockTweetReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderLockTweet(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.LockTweet(req) - r.RenderLockTweet(c, resp, err) + obj, err = s.LockTweet(req) + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("POST", "/post/collection", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -324,15 +456,32 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindCollectionTweet(c) + var ( + obj any + err mir.Error + ) + req := new(web.CollectionTweetReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.CollectionTweet(req) if err != nil { - r.RenderCollectionTweet(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.CollectionTweet(req) - r.RenderCollectionTweet(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("POST", "/post/star", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -340,15 +489,32 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindStarTweet(c) + var ( + obj any + err mir.Error + ) + req := new(web.StarTweetReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderStarTweet(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.StarTweet(req) - r.RenderStarTweet(c, resp, err) + obj, err = s.StarTweet(req) + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("DELETE", "/post", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -356,14 +522,24 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindDeleteTweet(c) + var ( + obj any + err mir.Error + ) + req := new(web.DeleteTweetReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderDeleteTweet(c, err) + s.Render(c, nil, err) return } - r.RenderDeleteTweet(c, s.DeleteTweet(req)) - }) + s.Render(c, nil, s.DeleteTweet(req)) + }) router.Handle("POST", "/post", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -371,15 +547,32 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindCreateTweet(c) + var ( + obj any + err mir.Error + ) + req := new(web.CreateTweetReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.CreateTweet(req) if err != nil { - r.RenderCreateTweet(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.CreateTweet(req) - r.RenderCreateTweet(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("GET", "/attachment", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -387,15 +580,32 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindDownloadAttachment(c) + var ( + obj any + err mir.Error + ) + req := new(web.DownloadAttachmentReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.DownloadAttachment(req) if err != nil { - r.RenderDownloadAttachment(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.DownloadAttachment(req) - r.RenderDownloadAttachment(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("GET", "/attachment/precheck", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -403,15 +613,32 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindDownloadAttachmentPrecheck(c) + var ( + obj any + err mir.Error + ) + req := new(web.DownloadAttachmentPrecheckReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.DownloadAttachmentPrecheck(req) if err != nil { - r.RenderDownloadAttachmentPrecheck(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.DownloadAttachmentPrecheck(req) - r.RenderDownloadAttachmentPrecheck(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("POST", "/attachment", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -419,20 +646,36 @@ func RegisterPrivServant(e *gin.Engine, s Priv, b PrivBinding, r PrivRender) { default: } - req, err := b.BindUploadAttachment(c) + var ( + obj any + err mir.Error + ) + req := new(web.UploadAttachmentReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } + if err != nil { + s.Render(c, nil, err) + return + } + obj, err = s.UploadAttachment(req) if err != nil { - r.RenderUploadAttachment(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.UploadAttachment(req) - r.RenderUploadAttachment(c, resp, err) + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - } // UnimplementedPrivServant can be embedded to have forward compatible implementations. -type UnimplementedPrivServant struct { -} +type UnimplementedPrivServant struct{} func (UnimplementedPrivServant) Chain() gin.HandlersChain { return nil @@ -523,227 +766,3 @@ func (UnimplementedPrivServant) UploadAttachment(req *web.UploadAttachmentReq) ( } func (UnimplementedPrivServant) mustEmbedUnimplementedPrivServant() {} - -// UnimplementedPrivRender can be embedded to have forward compatible implementations. -type UnimplementedPrivRender struct { - RenderAny func(*gin.Context, any, mir.Error) -} - -func (r *UnimplementedPrivRender) RenderUnfollowTopic(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedPrivRender) RenderFollowTopic(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedPrivRender) RenderStickTopic(c *gin.Context, data *web.StickTopicResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedPrivRender) RenderThumbsDownTweetReply(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedPrivRender) RenderThumbsUpTweetReply(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedPrivRender) RenderThumbsDownTweetComment(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedPrivRender) RenderThumbsUpTweetComment(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedPrivRender) RenderDeleteCommentReply(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedPrivRender) RenderCreateCommentReply(c *gin.Context, data *web.CreateCommentReplyResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedPrivRender) RenderDeleteComment(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedPrivRender) RenderCreateComment(c *gin.Context, data *web.CreateCommentResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedPrivRender) RenderVisibleTweet(c *gin.Context, data *web.VisibleTweetResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedPrivRender) RenderStickTweet(c *gin.Context, data *web.StickTweetResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedPrivRender) RenderLockTweet(c *gin.Context, data *web.LockTweetResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedPrivRender) RenderCollectionTweet(c *gin.Context, data *web.CollectionTweetResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedPrivRender) RenderStarTweet(c *gin.Context, data *web.StarTweetResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedPrivRender) RenderDeleteTweet(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedPrivRender) RenderCreateTweet(c *gin.Context, data *web.CreateTweetResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedPrivRender) RenderDownloadAttachment(c *gin.Context, data *web.DownloadAttachmentResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedPrivRender) RenderDownloadAttachmentPrecheck(c *gin.Context, data *web.DownloadAttachmentPrecheckResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedPrivRender) RenderUploadAttachment(c *gin.Context, data *web.UploadAttachmentResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedPrivRender) mustEmbedUnimplementedPrivRender() {} - -// UnimplementedPrivBinding can be embedded to have forward compatible implementations. -type UnimplementedPrivBinding struct { - BindAny func(*gin.Context, any) mir.Error -} - -func (b *UnimplementedPrivBinding) BindUnfollowTopic(c *gin.Context) (*web.UnfollowTopicReq, mir.Error) { - obj := new(web.UnfollowTopicReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindFollowTopic(c *gin.Context) (*web.FollowTopicReq, mir.Error) { - obj := new(web.FollowTopicReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindStickTopic(c *gin.Context) (*web.StickTopicReq, mir.Error) { - obj := new(web.StickTopicReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindThumbsDownTweetReply(c *gin.Context) (*web.TweetReplyThumbsReq, mir.Error) { - obj := new(web.TweetReplyThumbsReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindThumbsUpTweetReply(c *gin.Context) (*web.TweetReplyThumbsReq, mir.Error) { - obj := new(web.TweetReplyThumbsReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindThumbsDownTweetComment(c *gin.Context) (*web.TweetCommentThumbsReq, mir.Error) { - obj := new(web.TweetCommentThumbsReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindThumbsUpTweetComment(c *gin.Context) (*web.TweetCommentThumbsReq, mir.Error) { - obj := new(web.TweetCommentThumbsReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindDeleteCommentReply(c *gin.Context) (*web.DeleteCommentReplyReq, mir.Error) { - obj := new(web.DeleteCommentReplyReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindCreateCommentReply(c *gin.Context) (*web.CreateCommentReplyReq, mir.Error) { - obj := new(web.CreateCommentReplyReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindDeleteComment(c *gin.Context) (*web.DeleteCommentReq, mir.Error) { - obj := new(web.DeleteCommentReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindCreateComment(c *gin.Context) (*web.CreateCommentReq, mir.Error) { - obj := new(web.CreateCommentReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindVisibleTweet(c *gin.Context) (*web.VisibleTweetReq, mir.Error) { - obj := new(web.VisibleTweetReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindStickTweet(c *gin.Context) (*web.StickTweetReq, mir.Error) { - obj := new(web.StickTweetReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindLockTweet(c *gin.Context) (*web.LockTweetReq, mir.Error) { - obj := new(web.LockTweetReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindCollectionTweet(c *gin.Context) (*web.CollectionTweetReq, mir.Error) { - obj := new(web.CollectionTweetReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindStarTweet(c *gin.Context) (*web.StarTweetReq, mir.Error) { - obj := new(web.StarTweetReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindDeleteTweet(c *gin.Context) (*web.DeleteTweetReq, mir.Error) { - obj := new(web.DeleteTweetReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindCreateTweet(c *gin.Context) (*web.CreateTweetReq, mir.Error) { - obj := new(web.CreateTweetReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindDownloadAttachment(c *gin.Context) (*web.DownloadAttachmentReq, mir.Error) { - obj := new(web.DownloadAttachmentReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindDownloadAttachmentPrecheck(c *gin.Context) (*web.DownloadAttachmentPrecheckReq, mir.Error) { - obj := new(web.DownloadAttachmentPrecheckReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) BindUploadAttachment(c *gin.Context) (*web.UploadAttachmentReq, mir.Error) { - obj := new(web.UploadAttachmentReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPrivBinding) mustEmbedUnimplementedPrivBinding() {} diff --git a/auto/api/v1/pub.go b/auto/api/v1/pub.go index a0579f7e..88b7b9d1 100644 --- a/auto/api/v1/pub.go +++ b/auto/api/v1/pub.go @@ -1,18 +1,33 @@ // Code generated by go-mir. DO NOT EDIT. // versions: -// - mir v3.2.0 +// - mir v4.0.0 package v1 import ( "net/http" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" "github.com/rocboss/paopao-ce/internal/model/web" ) +type _binding_ interface { + Bind(*gin.Context) mir.Error +} + +type _render_ interface { + Render(*gin.Context) +} + +type _default_ interface { + Bind(*gin.Context, any) mir.Error + Render(*gin.Context, any, mir.Error) +} + type Pub interface { + _default_ + TweetDetail(*web.TweetDetailReq) (*web.TweetDetailResp, mir.Error) SendCaptcha(*web.SendCaptchaReq) mir.Error GetCaptcha() (*web.GetCaptchaResp, mir.Error) @@ -23,28 +38,8 @@ type Pub interface { mustEmbedUnimplementedPubServant() } -type PubBinding interface { - BindTweetDetail(*gin.Context) (*web.TweetDetailReq, mir.Error) - BindSendCaptcha(*gin.Context) (*web.SendCaptchaReq, mir.Error) - BindRegister(*gin.Context) (*web.RegisterReq, mir.Error) - BindLogin(*gin.Context) (*web.LoginReq, mir.Error) - - mustEmbedUnimplementedPubBinding() -} - -type PubRender interface { - RenderTweetDetail(*gin.Context, *web.TweetDetailResp, mir.Error) - RenderSendCaptcha(*gin.Context, mir.Error) - RenderGetCaptcha(*gin.Context, *web.GetCaptchaResp, mir.Error) - RenderRegister(*gin.Context, *web.RegisterResp, mir.Error) - RenderLogin(*gin.Context, *web.LoginResp, mir.Error) - RenderVersion(*gin.Context, *web.VersionResp, mir.Error) - - mustEmbedUnimplementedPubRender() -} - // RegisterPubServant register Pub servant to gin -func RegisterPubServant(e *gin.Engine, s Pub, b PubBinding, r PubRender) { +func RegisterPubServant(e *gin.Engine, s Pub) { router := e.Group("v1") // register routes info to router @@ -55,15 +50,32 @@ func RegisterPubServant(e *gin.Engine, s Pub, b PubBinding, r PubRender) { default: } - req, err := b.BindTweetDetail(c) + var ( + obj any + err mir.Error + ) + req := new(web.TweetDetailReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderTweetDetail(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.TweetDetail(req) - r.RenderTweetDetail(c, resp, err) + obj, err = s.TweetDetail(req) + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("POST", "/captcha", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -71,14 +83,24 @@ func RegisterPubServant(e *gin.Engine, s Pub, b PubBinding, r PubRender) { default: } - req, err := b.BindSendCaptcha(c) + var ( + obj any + err mir.Error + ) + req := new(web.SendCaptchaReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderSendCaptcha(c, err) + s.Render(c, nil, err) return } - r.RenderSendCaptcha(c, s.SendCaptcha(req)) - }) + s.Render(c, nil, s.SendCaptcha(req)) + }) router.Handle("GET", "/captcha", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -86,10 +108,22 @@ func RegisterPubServant(e *gin.Engine, s Pub, b PubBinding, r PubRender) { default: } - resp, err := s.GetCaptcha() - r.RenderGetCaptcha(c, resp, err) - }) + var ( + obj any + err mir.Error + ) + obj, err = s.GetCaptcha() + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } + }) router.Handle("POST", "/auth/register", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -97,15 +131,32 @@ func RegisterPubServant(e *gin.Engine, s Pub, b PubBinding, r PubRender) { default: } - req, err := b.BindRegister(c) + var ( + obj any + err mir.Error + ) + req := new(web.RegisterReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderRegister(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.Register(req) - r.RenderRegister(c, resp, err) + obj, err = s.Register(req) + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("POST", "/auth/login", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -113,15 +164,32 @@ func RegisterPubServant(e *gin.Engine, s Pub, b PubBinding, r PubRender) { default: } - req, err := b.BindLogin(c) + var ( + obj any + err mir.Error + ) + req := new(web.LoginReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderLogin(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.Login(req) - r.RenderLogin(c, resp, err) + obj, err = s.Login(req) + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - router.Handle("GET", "/", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -129,15 +197,26 @@ func RegisterPubServant(e *gin.Engine, s Pub, b PubBinding, r PubRender) { default: } - resp, err := s.Version() - r.RenderVersion(c, resp, err) - }) + var ( + obj any + err mir.Error + ) + obj, err = s.Version() + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } + }) } // UnimplementedPubServant can be embedded to have forward compatible implementations. -type UnimplementedPubServant struct { -} +type UnimplementedPubServant struct{} func (UnimplementedPubServant) TweetDetail(req *web.TweetDetailReq) (*web.TweetDetailResp, mir.Error) { return nil, mir.Errorln(http.StatusNotImplemented, http.StatusText(http.StatusNotImplemented)) @@ -164,65 +243,3 @@ func (UnimplementedPubServant) Version() (*web.VersionResp, mir.Error) { } func (UnimplementedPubServant) mustEmbedUnimplementedPubServant() {} - -// UnimplementedPubRender can be embedded to have forward compatible implementations. -type UnimplementedPubRender struct { - RenderAny func(*gin.Context, any, mir.Error) -} - -func (r *UnimplementedPubRender) RenderTweetDetail(c *gin.Context, data *web.TweetDetailResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedPubRender) RenderSendCaptcha(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedPubRender) RenderGetCaptcha(c *gin.Context, data *web.GetCaptchaResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedPubRender) RenderRegister(c *gin.Context, data *web.RegisterResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedPubRender) RenderLogin(c *gin.Context, data *web.LoginResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedPubRender) RenderVersion(c *gin.Context, data *web.VersionResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedPubRender) mustEmbedUnimplementedPubRender() {} - -// UnimplementedPubBinding can be embedded to have forward compatible implementations. -type UnimplementedPubBinding struct { - BindAny func(*gin.Context, any) mir.Error -} - -func (b *UnimplementedPubBinding) BindTweetDetail(c *gin.Context) (*web.TweetDetailReq, mir.Error) { - obj := new(web.TweetDetailReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPubBinding) BindSendCaptcha(c *gin.Context) (*web.SendCaptchaReq, mir.Error) { - obj := new(web.SendCaptchaReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPubBinding) BindRegister(c *gin.Context) (*web.RegisterReq, mir.Error) { - obj := new(web.RegisterReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPubBinding) BindLogin(c *gin.Context) (*web.LoginReq, mir.Error) { - obj := new(web.LoginReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedPubBinding) mustEmbedUnimplementedPubBinding() {} diff --git a/auto/api/x/v1/user.go b/auto/api/x/v1/user.go index 3357f413..5640ae2f 100644 --- a/auto/api/x/v1/user.go +++ b/auto/api/x/v1/user.go @@ -1,16 +1,29 @@ // Code generated by go-mir. DO NOT EDIT. // versions: -// - mir v3.2.0 +// - mir v4.0.0 package v1 import ( "net/http" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" ) +type _binding_ interface { + Bind(*gin.Context) mir.Error +} + +type _render_ interface { + Render(*gin.Context) +} + +type _default_ interface { + Bind(*gin.Context, any) mir.Error + Render(*gin.Context, any, mir.Error) +} + type LoginReq struct { AgentInfo AgentInfo `json:"agent_info"` Name string `json:"name"` @@ -37,6 +50,8 @@ type UserInfo struct { } type User interface { + _default_ + // Chain provide handlers chain for gin Chain() gin.HandlersChain @@ -46,21 +61,8 @@ type User interface { mustEmbedUnimplementedUserServant() } -type UserBinding interface { - BindLogin(*gin.Context) (*LoginReq, mir.Error) - - mustEmbedUnimplementedUserBinding() -} - -type UserRender interface { - RenderLogout(*gin.Context, mir.Error) - RenderLogin(*gin.Context, *LoginResp, mir.Error) - - mustEmbedUnimplementedUserRender() -} - // RegisterUserServant register User servant to gin -func RegisterUserServant(e *gin.Engine, s User, b UserBinding, r UserRender) { +func RegisterUserServant(e *gin.Engine, s User) { router := e.Group("x/v1") // use chain for router middlewares := s.Chain() @@ -74,9 +76,8 @@ func RegisterUserServant(e *gin.Engine, s User, b UserBinding, r UserRender) { default: } - r.RenderLogout(c, s.Logout()) + s.Render(c, nil, s.Logout()) }) - router.Handle("POST", "/user/login/", func(c *gin.Context) { select { case <-c.Request.Context().Done(): @@ -84,20 +85,36 @@ func RegisterUserServant(e *gin.Engine, s User, b UserBinding, r UserRender) { default: } - req, err := b.BindLogin(c) + var ( + obj any + err mir.Error + ) + req := new(LoginReq) + obj = req + if bv, ok := obj.(_binding_); !ok { + err = s.Bind(c, req) + } else { + err = bv.Bind(c) + } if err != nil { - r.RenderLogin(c, nil, err) + s.Render(c, nil, err) return } - resp, err := s.Login(req) - r.RenderLogin(c, resp, err) + obj, err = s.Login(req) + if err != nil { + s.Render(c, nil, err) + return + } + if rv, ok := obj.(_render_); !ok { + s.Render(c, obj, nil) + } else { + rv.Render(c) + } }) - } // UnimplementedUserServant can be embedded to have forward compatible implementations. -type UnimplementedUserServant struct { -} +type UnimplementedUserServant struct{} func (UnimplementedUserServant) Chain() gin.HandlersChain { return nil @@ -112,31 +129,3 @@ func (UnimplementedUserServant) Login(req *LoginReq) (*LoginResp, mir.Error) { } func (UnimplementedUserServant) mustEmbedUnimplementedUserServant() {} - -// UnimplementedUserRender can be embedded to have forward compatible implementations. -type UnimplementedUserRender struct { - RenderAny func(*gin.Context, any, mir.Error) -} - -func (r *UnimplementedUserRender) RenderLogout(c *gin.Context, err mir.Error) { - r.RenderAny(c, nil, err) -} - -func (r *UnimplementedUserRender) RenderLogin(c *gin.Context, data *LoginResp, err mir.Error) { - r.RenderAny(c, data, err) -} - -func (r *UnimplementedUserRender) mustEmbedUnimplementedUserRender() {} - -// UnimplementedUserBinding can be embedded to have forward compatible implementations. -type UnimplementedUserBinding struct { - BindAny func(*gin.Context, any) mir.Error -} - -func (b *UnimplementedUserBinding) BindLogin(c *gin.Context) (*LoginReq, mir.Error) { - obj := new(LoginReq) - err := b.BindAny(c, obj) - return obj, err -} - -func (b *UnimplementedUserBinding) mustEmbedUnimplementedUserBinding() {} diff --git a/go.mod b/go.mod index 761954f7..4bcbcb50 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/Masterminds/semver/v3 v3.2.1 github.com/afocus/captcha v0.0.0-20191010092841-4bd1f21c8868 github.com/alimy/cfg v0.3.0 - github.com/alimy/mir/v3 v3.2.1 + github.com/alimy/mir/v4 v4.0.0-alpha.3 github.com/aliyun/aliyun-oss-go-sdk v2.2.7+incompatible github.com/allegro/bigcache/v3 v3.0.2 github.com/bytedance/sonic v1.9.1 diff --git a/go.sum b/go.sum index cca3b7f5..27639f6f 100644 --- a/go.sum +++ b/go.sum @@ -131,8 +131,8 @@ github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:C github.com/alexflint/go-filemutex v1.1.0/go.mod h1:7P4iRhttt/nUvUOrYIhcpMzv2G6CY9UnI16Z+UJqRyk= github.com/alimy/cfg v0.3.0 h1:9xgA0QWVCPSq9fFNRcYahVCAX22IL9ts2wrTQPfAStY= github.com/alimy/cfg v0.3.0/go.mod h1:rOxbasTH2srl6StAjNF5Vyi8bfrdkl3fLGmOYtSw81c= -github.com/alimy/mir/v3 v3.2.1 h1:vnAHdqzMccP8C0DDyY3hAV50cVNBfDopgcyvv8TL9L4= -github.com/alimy/mir/v3 v3.2.1/go.mod h1:ybhT2ijOiDn0lLwWzIY6vXdv+uzZrctS7VFfczcXBWU= +github.com/alimy/mir/v4 v4.0.0-alpha.3 h1:T1i3xolo/cvOxCpUTSvAU2AcgB3ajNm0/jM1EbsqpJM= +github.com/alimy/mir/v4 v4.0.0-alpha.3/go.mod h1:X09f2IOQ4NTyJFKJ10S+J7Jk988T5IvvprwTijQZAsg= github.com/aliyun/aliyun-oss-go-sdk v2.2.7+incompatible h1:KpbJFXwhVeuxNtBJ74MCGbIoaBok2uZvkD7QXp2+Wis= github.com/aliyun/aliyun-oss-go-sdk v2.2.7+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= github.com/allegro/bigcache/v3 v3.0.2 h1:AKZCw+5eAaVyNTBmI2fgyPVJhHkdWder3O9IrprcQfI= diff --git a/internal/conf/alipay.go b/internal/conf/alipay.go new file mode 100644 index 00000000..4f118d64 --- /dev/null +++ b/internal/conf/alipay.go @@ -0,0 +1,38 @@ +package conf + +import ( + "sync" + + "github.com/sirupsen/logrus" + "github.com/smartwalle/alipay/v3" +) + +var ( + _alipayClient *alipay.Client + _onceAlipay sync.Once +) + +func MustAlipayClient() *alipay.Client { + _onceAlipay.Do(func() { + s := AlipaySetting + // 将 key 的验证调整到初始化阶段 + client, err := alipay.New(s.AppID, s.PrivateKey, s.InProduction) + if err != nil { + logrus.Fatalf("alipay.New err: %s", err) + } + // 加载应用公钥证书 + if err = client.LoadAppPublicCertFromFile(s.AppPublicCertFile); err != nil { + logrus.Fatalf("client.LoadAppPublicCertFromFile err: %s\n", err) + } + // 加载支付宝根证书 + if err = client.LoadAliPayRootCertFromFile(s.RootCertFile); err != nil { + logrus.Fatalf("client.LoadAliPayRootCertFromFile err: %s\n", err) + } + // 加载支付宝公钥证书 + if err = client.LoadAliPayPublicCertFromFile(s.PublicCertFile); err != nil { + logrus.Fatalf("client.LoadAliPayPublicCertFromFile err: %s\n", err) + } + _alipayClient = client + }) + return _alipayClient +} diff --git a/internal/model/web/alipay.go b/internal/model/web/alipay.go index 84746309..707a1170 100644 --- a/internal/model/web/alipay.go +++ b/internal/model/web/alipay.go @@ -7,7 +7,14 @@ package web import ( "context" + "github.com/alimy/mir/v4" + "github.com/gin-gonic/gin" + "github.com/rocboss/paopao-ce/internal/conf" "github.com/rocboss/paopao-ce/internal/servants/base" + "github.com/rocboss/paopao-ce/pkg/app" + "github.com/rocboss/paopao-ce/pkg/convert" + "github.com/rocboss/paopao-ce/pkg/xerror" + "github.com/sirupsen/logrus" "github.com/smartwalle/alipay/v3" ) @@ -46,3 +53,44 @@ type AlipayNotifyReq struct { TradeNo string TradeStatus alipay.TradeStatus } + +func (r *AlipayNotifyReq) Bind(c *gin.Context) mir.Error { + if err := c.Request.ParseForm(); err != nil { + logrus.Errorf("parse form err: %s", err) + return _errRechargeNotifyError + } + noti, err := conf.MustAlipayClient().GetTradeNotification(c.Request) + if err != nil { + logrus.Errorf("alipayClient.GetTradeNotification err: %s form: %v", err, c.Request.Form) + return _errRechargeNotifyError + } + r.Ctx = c.Request.Context() + r.ID = convert.StrTo(noti.OutTradeNo).MustInt64() + r.TradeNo, r.TradeStatus = noti.TradeNo, noti.TradeStatus + + return nil +} + +func (r *UserWalletBillsReq) Bind(c *gin.Context) mir.Error { + uid, ok := base.UserIdFrom(c) + if !ok { + return xerror.UnauthorizedTokenError + } + r.UserId = uid + r.Page, r.PageSize = app.GetPageInfo(c) + return nil +} + +func (r *UserRechargeLinkReq) Bind(c *gin.Context) mir.Error { + r.Host = c.Request.Host + return bindAny(c, r) +} + +func (r *UserRechargeResultReq) Bind(c *gin.Context) mir.Error { + uid, exist := base.UserIdFrom(c) + if !exist { + return xerror.UnauthorizedTokenError + } + r.UserId, r.Id = uid, convert.StrTo(c.Query("id")).MustInt64() + return nil +} diff --git a/internal/model/web/core.go b/internal/model/web/core.go index b5fa497b..a697fec7 100644 --- a/internal/model/web/core.go +++ b/internal/model/web/core.go @@ -5,7 +5,11 @@ package web import ( + "github.com/alimy/mir/v4" + "github.com/gin-gonic/gin" "github.com/rocboss/paopao-ce/internal/servants/base" + "github.com/rocboss/paopao-ce/pkg/convert" + "github.com/rocboss/paopao-ce/pkg/xerror" ) type ChangeAvatarReq struct { @@ -111,3 +115,58 @@ type TweetCollectionStatusReq struct { type TweetCollectionStatusResp struct { Status bool `json:"status"` } + +func (r *UserInfoReq) Bind(c *gin.Context) mir.Error { + username, exist := base.UserNameFrom(c) + if !exist { + return xerror.UnauthorizedAuthNotExist + } + r.Username = username + return nil +} + +func (r *GetMessagesReq) Bind(c *gin.Context) mir.Error { + return (*BasePageReq)(r).Bind(c) +} + +func (r *GetCollectionsReq) Bind(c *gin.Context) mir.Error { + return (*BasePageReq)(r).Bind(c) +} + +func (r *GetStarsReq) Bind(c *gin.Context) mir.Error { + return (*BasePageReq)(r).Bind(c) +} + +func (r *SuggestTagsReq) Bind(c *gin.Context) mir.Error { + r.Keyword = c.Query("k") + return nil +} + +func (r *SuggestUsersReq) Bind(c *gin.Context) mir.Error { + r.Keyword = c.Query("k") + return nil +} + +func (r *TweetCollectionStatusReq) Bind(c *gin.Context) mir.Error { + userId, exist := base.UserIdFrom(c) + if !exist { + return xerror.UnauthorizedAuthNotExist + } + r.SimpleInfo = SimpleInfo{ + Uid: userId, + } + r.TweetId = convert.StrTo(c.Query("id")).MustInt64() + return nil +} + +func (r *TweetStarStatusReq) Bind(c *gin.Context) mir.Error { + UserId, exist := base.UserIdFrom(c) + if !exist { + return xerror.UnauthorizedAuthNotExist + } + r.SimpleInfo = SimpleInfo{ + Uid: UserId, + } + r.TweetId = convert.StrTo(c.Query("id")).MustInt64() + return nil +} diff --git a/internal/model/web/loose.go b/internal/model/web/loose.go index e20fecd2..3551d1c7 100644 --- a/internal/model/web/loose.go +++ b/internal/model/web/loose.go @@ -5,8 +5,11 @@ package web import ( + "github.com/alimy/mir/v4" + "github.com/gin-gonic/gin" "github.com/rocboss/paopao-ce/internal/core" "github.com/rocboss/paopao-ce/internal/servants/base" + "github.com/rocboss/paopao-ce/pkg/app" ) const ( @@ -84,3 +87,13 @@ func (r *GetUserTweetsReq) SetPageInfo(page int, pageSize int) { func (r *TweetCommentsReq) SetPageInfo(page int, pageSize int) { r.Page, r.PageSize = page, pageSize } + +func (r *TimelineReq) Bind(c *gin.Context) mir.Error { + user, _ := base.UserFrom(c) + r.BaseInfo = BaseInfo{ + User: user, + } + r.Page, r.PageSize = app.GetPageInfo(c) + r.Query, r.Type = c.Query("query"), "search" + return nil +} diff --git a/internal/model/web/priv.go b/internal/model/web/priv.go index e8436ce1..e27c1a95 100644 --- a/internal/model/web/priv.go +++ b/internal/model/web/priv.go @@ -9,7 +9,12 @@ import ( "mime/multipart" "strings" + "github.com/alimy/mir/v4" + "github.com/gin-gonic/gin" "github.com/rocboss/paopao-ce/internal/core" + "github.com/rocboss/paopao-ce/internal/servants/base" + "github.com/rocboss/paopao-ce/pkg/convert" + "github.com/rocboss/paopao-ce/pkg/xerror" ) type TweetCommentThumbsReq struct { @@ -194,3 +199,75 @@ func (p *PostContentItem) Check(acs core.AttachmentCheckService) error { } return nil } + +func (r *UploadAttachmentReq) Bind(c *gin.Context) (xerr mir.Error) { + userId, exist := base.UserIdFrom(c) + if !exist { + return xerror.UnauthorizedAuthNotExist + } + + uploadType := c.Request.FormValue("type") + file, fileHeader, err := c.Request.FormFile("file") + if err != nil { + return _errFileUploadFailed + } + defer func() { + if xerr != nil { + file.Close() + } + }() + + if err := fileCheck(uploadType, fileHeader.Size); err != nil { + return err + } + contentType := fileHeader.Header.Get("Content-Type") + fileExt, xerr := getFileExt(contentType) + if xerr != nil { + return xerr + } + r.SimpleInfo = SimpleInfo{ + Uid: userId, + } + r.UploadType, r.ContentType = uploadType, contentType + r.File, r.FileSize, r.FileExt = file, fileHeader.Size, fileExt + return nil +} + +func (r *DownloadAttachmentPrecheckReq) Bind(c *gin.Context) mir.Error { + user, exist := base.UserFrom(c) + if !exist { + return xerror.UnauthorizedAuthNotExist + } + r.BaseInfo = BaseInfo{ + User: user, + } + r.ContentID = convert.StrTo(c.Query("id")).MustInt64() + return nil +} + +func (r *DownloadAttachmentReq) Bind(c *gin.Context) mir.Error { + user, exist := base.UserFrom(c) + if !exist { + return xerror.UnauthorizedAuthNotExist + } + r.BaseInfo = BaseInfo{ + User: user, + } + r.ContentID = convert.StrTo(c.Query("id")).MustInt64() + return nil +} + +func (r *CreateTweetReq) Bind(c *gin.Context) mir.Error { + r.ClientIP = c.ClientIP() + return bindAny(c, r) +} + +func (r *CreateCommentReplyReq) Bind(c *gin.Context) mir.Error { + r.ClientIP = c.ClientIP() + return bindAny(c, r) +} + +func (r *CreateCommentReq) Bind(c *gin.Context) mir.Error { + r.ClientIP = c.ClientIP() + return bindAny(c, r) +} diff --git a/internal/model/web/utils.go b/internal/model/web/utils.go new file mode 100644 index 00000000..ab13ed68 --- /dev/null +++ b/internal/model/web/utils.go @@ -0,0 +1,47 @@ +// Copyright 2022 ROC. All rights reserved. +// Use of this source code is governed by a MIT style +// license that can be found in the LICENSE file. + +package web + +import ( + "github.com/alimy/mir/v4" + "github.com/rocboss/paopao-ce/pkg/xerror" +) + +func fileCheck(uploadType string, size int64) mir.Error { + if uploadType != "public/video" && + uploadType != "public/image" && + uploadType != "public/avatar" && + uploadType != "attachment" { + return xerror.InvalidParams + } + if size > 1024*1024*100 { + return _errFileInvalidSize.WithDetails("最大允许100MB") + } + return nil +} + +func getFileExt(s string) (string, mir.Error) { + switch s { + case "image/png": + return ".png", nil + case "image/jpg": + return ".jpg", nil + case "image/jpeg": + return ".jpeg", nil + case "image/gif": + return ".gif", nil + case "video/mp4": + return ".mp4", nil + case "video/quicktime": + return ".mov", nil + case "application/zip", + "application/x-zip", + "application/octet-stream", + "application/x-zip-compressed": + return ".zip", nil + default: + return "", _errFileInvalidExt.WithDetails("仅允许 png/jpg/gif/mp4/mov/zip 类型") + } +} diff --git a/internal/model/web/web.go b/internal/model/web/web.go index bec917fa..d9c416bb 100644 --- a/internal/model/web/web.go +++ b/internal/model/web/web.go @@ -5,7 +5,7 @@ package web import ( - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" "github.com/rocboss/paopao-ce/internal/core" "github.com/rocboss/paopao-ce/internal/servants/base" @@ -13,6 +13,10 @@ import ( "github.com/rocboss/paopao-ce/pkg/xerror" ) +var ( + bindAny = base.NewBindAnyFn() +) + type BaseInfo struct { User *core.User } @@ -47,3 +51,13 @@ func BasePageReqFrom(c *gin.Context) (*BasePageReq, mir.Error) { PageSize: pageSize, }, nil } + +func (r *BasePageReq) Bind(c *gin.Context) mir.Error { + uid, ok := base.UserIdFrom(c) + if !ok { + return xerror.UnauthorizedTokenError + } + r.UserId = uid + r.Page, r.PageSize = app.GetPageInfo(c) + return nil +} diff --git a/internal/model/web/xerror.go b/internal/model/web/xerror.go new file mode 100644 index 00000000..1a0ea170 --- /dev/null +++ b/internal/model/web/xerror.go @@ -0,0 +1,93 @@ +// Copyright 2023 ROC. All rights reserved. +// Use of this source code is governed by a MIT style +// license that can be found in the LICENSE file. + +package web + +import ( + "github.com/rocboss/paopao-ce/pkg/xerror" +) + +// nolint +var ( + _errUsernameHasExisted = xerror.NewError(20001, "用户名已存在") + _errUsernameLengthLimit = xerror.NewError(20002, "用户名长度3~12") + _errUsernameCharLimit = xerror.NewError(20003, "用户名只能包含字母、数字") + _errPasswordLengthLimit = xerror.NewError(20004, "密码长度6~16") + _errUserRegisterFailed = xerror.NewError(20005, "用户注册失败") + _errUserHasBeenBanned = xerror.NewError(20006, "该账户已被封停") + _errNoPermission = xerror.NewError(20007, "无权限执行该请求") + _errUserHasBindOTP = xerror.NewError(20008, "当前用户已绑定二次验证") + _errUserOTPInvalid = xerror.NewError(20009, "二次验证码验证失败") + _errUserNoBindOTP = xerror.NewError(20010, "当前用户未绑定二次验证") + _errErrorOldPassword = xerror.NewError(20011, "当前用户密码验证失败") + _errErrorCaptchaPassword = xerror.NewError(20012, "图形验证码验证失败") + _errAccountNoPhoneBind = xerror.NewError(20013, "拒绝操作: 账户未绑定手机号") + _errTooManyLoginError = xerror.NewError(20014, "登录失败次数过多,请稍后再试") + _errGetPhoneCaptchaError = xerror.NewError(20015, "短信验证码获取失败") + _errTooManyPhoneCaptchaSend = xerror.NewError(20016, "短信验证码获取次数已达今日上限") + _errExistedUserPhone = xerror.NewError(20017, "该手机号已被绑定") + _errErrorPhoneCaptcha = xerror.NewError(20018, "手机验证码不正确") + _errMaxPhoneCaptchaUseTimes = xerror.NewError(20019, "手机验证码已达最大使用次数") + _errNicknameLengthLimit = xerror.NewError(20020, "昵称长度2~12") + _errNoExistUsername = xerror.NewError(20021, "用户不存在") + _errNoAdminPermission = xerror.NewError(20022, "无管理权限") + _errDisallowUserRegister = xerror.NewError(20023, "系统不允许注册用户") + + _errGetPostsFailed = xerror.NewError(30001, "获取动态列表失败") + _errCreatePostFailed = xerror.NewError(30002, "动态发布失败") + _errGetPostFailed = xerror.NewError(30003, "获取动态详情失败") + _errDeletePostFailed = xerror.NewError(30004, "动态删除失败") + _errLockPostFailed = xerror.NewError(30005, "动态锁定失败") + _errGetPostTagsFailed = xerror.NewError(30006, "获取话题列表失败") + _errInvalidDownloadReq = xerror.NewError(30007, "附件下载请求不合法") + _errDownloadReqError = xerror.NewError(30008, "附件下载请求失败") + _errInsuffientDownloadMoney = xerror.NewError(30009, "附件下载失败:账户资金不足") + _errDownloadExecFail = xerror.NewError(30010, "附件下载失败:扣费失败") + _errStickPostFailed = xerror.NewError(30011, "动态置顶失败") + _errVisblePostFailed = xerror.NewError(30012, "更新可见性失败") + + _errGetCommentsFailed = xerror.NewError(40001, "获取评论列表失败") + _errCreateCommentFailed = xerror.NewError(40002, "评论发布失败") + _errGetCommentFailed = xerror.NewError(40003, "获取评论详情失败") + _errDeleteCommentFailed = xerror.NewError(40004, "评论删除失败") + _errCreateReplyFailed = xerror.NewError(40005, "评论回复失败") + _errGetReplyFailed = xerror.NewError(40006, "获取评论详情失败") + _errMaxCommentCount = xerror.NewError(40007, "评论数已达最大限制") + _errGetCommentThumbs = xerror.NewError(40008, "获取评论点赞信息失败") + + _errGetMessagesFailed = xerror.NewError(50001, "获取消息列表失败") + _errReadMessageFailed = xerror.NewError(50002, "标记消息已读失败") + _errSendWhisperFailed = xerror.NewError(50003, "私信发送失败") + _errNoWhisperToSelf = xerror.NewError(50004, "不允许给自己发送私信") + _errTooManyWhisperNum = xerror.NewError(50005, "今日私信次数已达上限") + + _errGetCollectionsFailed = xerror.NewError(60001, "获取收藏列表失败") + _errGetStarsFailed = xerror.NewError(60002, "获取点赞列表失败") + + _errRechargeReqFail = xerror.NewError(70001, "充值请求失败") + _errRechargeNotifyError = xerror.NewError(70002, "充值回调失败") + _errGetRechargeFailed = xerror.NewError(70003, "充值详情获取失败") + _errUserWalletBillsFailed = xerror.NewError(70004, "用户钱包账单获取失败") + + _errNoRequestingFriendToSelf = xerror.NewError(80001, "不允许添加自己为好友") + _errNotExistFriendId = xerror.NewError(80002, "好友id不存在") + _errSendRequestingFriendFailed = xerror.NewError(80003, "申请添加朋友请求发送失败") + _errAddFriendFailed = xerror.NewError(80004, "添加好友失败") + _errRejectFriendFailed = xerror.NewError(80005, "拒绝好友失败") + _errDeleteFriendFailed = xerror.NewError(80006, "删除好友失败") + _errGetContactsFailed = xerror.NewError(80007, "获取联系人列表失败") + _errNoActionToSelf = xerror.NewError(80008, "不允许对自己操作") + + _errFollowTopicFailed = xerror.NewError(90001, "关注话题失败") + _errUnfollowTopicFailed = xerror.NewError(90002, "取消关注话题失败") + _errStickTopicFailed = xerror.NewError(90003, "更行话题置顶状态失败") + _errThumbsUpTweetComment = xerror.NewError(90101, "评论点赞失败") + _errThumbsDownTweetComment = xerror.NewError(90102, "评论点踩失败") + _errThumbsUpTweetReply = xerror.NewError(90103, "评论回复点赞失败") + _errThumbsDownTweetReply = xerror.NewError(90104, "评论回复点踩失败") + + _errFileUploadFailed = xerror.NewError(10200, "文件上传失败") + _errFileInvalidExt = xerror.NewError(10201, "文件类型不合法") + _errFileInvalidSize = xerror.NewError(10202, "文件大小超限") +) diff --git a/internal/servants/admin/admin.go b/internal/servants/admin/admin.go index 409bdd78..26806940 100644 --- a/internal/servants/admin/admin.go +++ b/internal/servants/admin/admin.go @@ -11,5 +11,5 @@ import ( // RouteWeb register Manager route func RouteManager(e *gin.Engine) { - api.RegisterUserServant(e, newUserSrv(), newUserBinding(), newUserRender()) + api.RegisterUserServant(e, newUserSrv()) } diff --git a/internal/servants/admin/user.go b/internal/servants/admin/user.go index a35ea28f..e03f877a 100644 --- a/internal/servants/admin/user.go +++ b/internal/servants/admin/user.go @@ -10,9 +10,7 @@ import ( ) var ( - _ api.User = (*userSrv)(nil) - _ api.UserBinding = (*userBinding)(nil) - _ api.UserRender = (*userRender)(nil) + _ api.User = (*userSrv)(nil) ) type userSrv struct { @@ -20,32 +18,6 @@ type userSrv struct { api.UnimplementedUserServant } -type userBinding struct { - base.BaseBinding - *api.UnimplementedUserBinding -} - -type userRender struct { - base.BaseRender - *api.UnimplementedUserRender -} - func newUserSrv() api.User { return &userSrv{} } - -func newUserBinding() api.UserBinding { - return &userBinding{ - UnimplementedUserBinding: &api.UnimplementedUserBinding{ - BindAny: base.NewBindAnyFn(), - }, - } -} - -func newUserRender() api.UserRender { - return &userRender{ - UnimplementedUserRender: &api.UnimplementedUserRender{ - RenderAny: base.RenderAny, - }, - } -} diff --git a/internal/servants/base/base.go b/internal/servants/base/base.go index eb77d2f2..a418b052 100644 --- a/internal/servants/base/base.go +++ b/internal/servants/base/base.go @@ -10,7 +10,7 @@ import ( "math" "net/http" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/cockroachdb/errors" "github.com/getsentry/sentry-go" sentrygin "github.com/getsentry/sentry-go/gin" @@ -25,9 +25,13 @@ import ( "github.com/sirupsen/logrus" ) -type BaseServant types.Empty +type BaseServant struct { + bindAny func(c *gin.Context, obj any) mir.Error +} type DaoServant struct { + *BaseServant + Ds core.DataService Ts core.TweetSearchService Redis core.RedisCache @@ -156,6 +160,25 @@ func RenderAny(c *gin.Context, data any, err mir.Error) { } } +func (s *BaseServant) Bind(c *gin.Context, obj any) mir.Error { + return s.bindAny(c, obj) +} + +func (s *BaseServant) Render(c *gin.Context, data any, err mir.Error) { + if err == nil { + c.JSON(http.StatusOK, &JsonResp{ + Code: 0, + Msg: "success", + Data: data, + }) + } else { + c.JSON(xerror.HttpStatusCode(err), &JsonResp{ + Code: err.StatusCode(), + Msg: err.Error(), + }) + } +} + func (s *DaoServant) GetTweetBy(id int64) (*core.PostFormated, error) { post, err := s.Ds.GetPostByID(id) if err != nil { @@ -253,17 +276,24 @@ func (s *DaoServant) GetTweetList(conditions *core.ConditionsT, offset, limit in return posts, postFormated, err } -func NewDaoServant() *DaoServant { - return &DaoServant{ - Redis: cache.NewRedisCache(), - Ds: dao.DataService(), - Ts: dao.TweetSearchService(), - } -} - func NewBindAnyFn() func(c *gin.Context, obj any) mir.Error { if conf.UseSentryGin() { return bindAnySentry } return bindAny } + +func NewBaseServant() *BaseServant { + return &BaseServant{ + bindAny: NewBindAnyFn(), + } +} + +func NewDaoServant() *DaoServant { + return &DaoServant{ + BaseServant: NewBaseServant(), + Redis: cache.NewRedisCache(), + Ds: dao.DataService(), + Ts: dao.TweetSearchService(), + } +} diff --git a/internal/servants/bot/bot.go b/internal/servants/bot/bot.go index a2e0e699..8bfaeecf 100644 --- a/internal/servants/bot/bot.go +++ b/internal/servants/bot/bot.go @@ -11,5 +11,5 @@ import ( // RouteBot register Bot route func RouteBot(e *gin.Engine) { - api.RegisterUserServant(e, newUserSrv(), newUserBinding(), newUserRender()) + api.RegisterUserServant(e, newUserSrv()) } diff --git a/internal/servants/bot/user.go b/internal/servants/bot/user.go index 2d7e2d51..5ea239bd 100644 --- a/internal/servants/bot/user.go +++ b/internal/servants/bot/user.go @@ -10,42 +10,16 @@ import ( ) var ( - _ api.User = (*userSrv)(nil) - _ api.UserBinding = (*userBinding)(nil) - _ api.UserRender = (*userRender)(nil) + _ api.User = (*userSrv)(nil) ) type userSrv struct { - base.BaseServant + *base.BaseServant api.UnimplementedUserServant } -type userBinding struct { - base.BaseBinding - *api.UnimplementedUserBinding -} - -type userRender struct { - base.BaseRender - *api.UnimplementedUserRender -} - func newUserSrv() api.User { - return &userSrv{} -} - -func newUserBinding() api.UserBinding { - return &userBinding{ - UnimplementedUserBinding: &api.UnimplementedUserBinding{ - BindAny: base.NewBindAnyFn(), - }, - } -} - -func newUserRender() api.UserRender { - return &userRender{ - UnimplementedUserRender: &api.UnimplementedUserRender{ - RenderAny: base.RenderAny, - }, + return &userSrv{ + BaseServant: base.NewBaseServant(), } } diff --git a/internal/servants/localoss/localoss.go b/internal/servants/localoss/localoss.go index 97fdafbe..021c662e 100644 --- a/internal/servants/localoss/localoss.go +++ b/internal/servants/localoss/localoss.go @@ -26,5 +26,5 @@ func RouteLocalOSS(e *gin.Engine) { // RouteLocaloss register LocalOSS route if needed func RouteLocaloss(e *gin.Engine) { - api.RegisterUserServant(e, newUserSrv(), newUserBinding(), newUserRender()) + api.RegisterUserServant(e, newUserSrv()) } diff --git a/internal/servants/localoss/user.go b/internal/servants/localoss/user.go index adb65933..2d45f5b9 100644 --- a/internal/servants/localoss/user.go +++ b/internal/servants/localoss/user.go @@ -10,42 +10,16 @@ import ( ) var ( - _ api.User = (*userSrv)(nil) - _ api.UserBinding = (*userBinding)(nil) - _ api.UserRender = (*userRender)(nil) + _ api.User = (*userSrv)(nil) ) type userSrv struct { - base.BaseServant + *base.BaseServant api.UnimplementedUserServant } -type userBinding struct { - base.BaseBinding - *api.UnimplementedUserBinding -} - -type userRender struct { - base.BaseRender - *api.UnimplementedUserRender -} - func newUserSrv() api.User { - return &userSrv{} -} - -func newUserBinding() api.UserBinding { - return &userBinding{ - UnimplementedUserBinding: &api.UnimplementedUserBinding{ - BindAny: base.NewBindAnyFn(), - }, - } -} - -func newUserRender() api.UserRender { - return &userRender{ - UnimplementedUserRender: &api.UnimplementedUserRender{ - RenderAny: base.RenderAny, - }, + return &userSrv{ + BaseServant: base.NewBaseServant(), } } diff --git a/internal/servants/space/space.go b/internal/servants/space/space.go index c9952035..b80b8c93 100644 --- a/internal/servants/space/space.go +++ b/internal/servants/space/space.go @@ -11,5 +11,5 @@ import ( // RouteWeb register SpaceX route func RouteSpaceX(e *gin.Engine) { - api.RegisterUserServant(e, newUserSrv(), newUserBinding(), newUserRender()) + api.RegisterUserServant(e, newUserSrv()) } diff --git a/internal/servants/space/user.go b/internal/servants/space/user.go index 23e02b79..505b6f30 100644 --- a/internal/servants/space/user.go +++ b/internal/servants/space/user.go @@ -10,42 +10,16 @@ import ( ) var ( - _ api.User = (*userSrv)(nil) - _ api.UserBinding = (*userBinding)(nil) - _ api.UserRender = (*userRender)(nil) + _ api.User = (*userSrv)(nil) ) type userSrv struct { - base.BaseServant + *base.BaseServant api.UnimplementedUserServant } -type userBinding struct { - base.BaseBinding - *api.UnimplementedUserBinding -} - -type userRender struct { - base.BaseRender - *api.UnimplementedUserRender -} - func newUserSrv() api.User { - return &userSrv{} -} - -func newUserBinding() api.UserBinding { - return &userBinding{ - UnimplementedUserBinding: &api.UnimplementedUserBinding{ - BindAny: base.NewBindAnyFn(), - }, - } -} - -func newUserRender() api.UserRender { - return &userRender{ - UnimplementedUserRender: &api.UnimplementedUserRender{ - RenderAny: base.RenderAny, - }, + return &userSrv{ + BaseServant: base.NewBaseServant(), } } diff --git a/internal/servants/web/admin.go b/internal/servants/web/admin.go index 4db8a9b9..27d7f5c1 100644 --- a/internal/servants/web/admin.go +++ b/internal/servants/web/admin.go @@ -5,7 +5,7 @@ package web import ( - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" api "github.com/rocboss/paopao-ce/auto/api/v1" "github.com/rocboss/paopao-ce/internal/model/web" @@ -15,9 +15,7 @@ import ( ) var ( - _ api.Admin = (*adminSrv)(nil) - _ api.AdminBinding = (*adminBinding)(nil) - _ api.AdminRender = (*adminRender)(nil) + _ api.Admin = (*adminSrv)(nil) ) type adminSrv struct { @@ -25,14 +23,6 @@ type adminSrv struct { *base.DaoServant } -type adminBinding struct { - *api.UnimplementedAdminBinding -} - -type adminRender struct { - *api.UnimplementedAdminRender -} - func (s *adminSrv) Chain() gin.HandlersChain { return gin.HandlersChain{chain.JWT(), chain.Admin()} } @@ -55,19 +45,3 @@ func newAdminSrv(s *base.DaoServant) api.Admin { DaoServant: s, } } - -func newAdminBinding() api.AdminBinding { - return &adminBinding{ - UnimplementedAdminBinding: &api.UnimplementedAdminBinding{ - BindAny: base.NewBindAnyFn(), - }, - } -} - -func newAdminRender() api.AdminRender { - return &adminRender{ - UnimplementedAdminRender: &api.UnimplementedAdminRender{ - RenderAny: base.RenderAny, - }, - } -} diff --git a/internal/servants/web/alipay.go b/internal/servants/web/alipay.go index 5b4c35a3..dc8f4a84 100644 --- a/internal/servants/web/alipay.go +++ b/internal/servants/web/alipay.go @@ -7,26 +7,19 @@ package web import ( "fmt" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" api "github.com/rocboss/paopao-ce/auto/api/v1" "github.com/rocboss/paopao-ce/internal/model/web" "github.com/rocboss/paopao-ce/internal/servants/base" "github.com/rocboss/paopao-ce/internal/servants/chain" - "github.com/rocboss/paopao-ce/pkg/app" - "github.com/rocboss/paopao-ce/pkg/convert" - "github.com/rocboss/paopao-ce/pkg/xerror" "github.com/sirupsen/logrus" "github.com/smartwalle/alipay/v3" ) var ( - _ api.AlipayPub = (*alipayPubSrv)(nil) - _ api.AlipayPubBinding = (*alipayPubBinding)(nil) - _ api.AlipayPubRender = (*alipayPubRender)(nil) - _ api.AlipayPriv = (*alipayPrivSrv)(nil) - _ api.AlipayPrivBinding = (*alipayPrivBinding)(nil) - _ api.AlipayPrivRender = (*alipayPrivRender)(nil) + _ api.AlipayPub = (*alipayPubSrv)(nil) + _ api.AlipayPriv = (*alipayPrivSrv)(nil) ) type alipayPubSrv struct { @@ -34,16 +27,6 @@ type alipayPubSrv struct { *base.DaoServant } -type alipayPubBinding struct { - *api.UnimplementedAlipayPubBinding - - alipayClient *alipay.Client -} - -type alipayPubRender struct { - *api.UnimplementedAlipayPubRender -} - type alipayPrivSrv struct { api.UnimplementedAlipayPrivServant *base.DaoServant @@ -51,32 +34,6 @@ type alipayPrivSrv struct { alipayClient *alipay.Client } -type alipayPrivBinding struct { - *api.UnimplementedAlipayPrivBinding -} - -type alipayPrivRender struct { - *api.UnimplementedAlipayPrivRender -} - -func (b *alipayPubBinding) BindAlipayNotify(c *gin.Context) (*web.AlipayNotifyReq, mir.Error) { - if err := c.Request.ParseForm(); err != nil { - logrus.Errorf("parse form err: %s", err) - return nil, _errRechargeNotifyError - } - noti, err := b.alipayClient.GetTradeNotification(c.Request) - if err != nil { - logrus.Errorf("alipayClient.GetTradeNotification err: %s form: %v", err, c.Request.Form) - return nil, _errRechargeNotifyError - } - return &web.AlipayNotifyReq{ - Ctx: c.Request.Context(), - ID: convert.StrTo(noti.OutTradeNo).MustInt64(), - TradeNo: noti.TradeNo, - TradeStatus: noti.TradeStatus, - }, nil -} - func (s *alipayPubSrv) AlipayNotify(req *web.AlipayNotifyReq) mir.Error { if req.TradeStatus == alipay.TradeStatusSuccess { if err := s.Redis.SetRechargeStatus(req.Ctx, req.TradeNo); err == nil { @@ -99,38 +56,6 @@ func (s *alipayPubSrv) AlipayNotify(req *web.AlipayNotifyReq) mir.Error { return nil } -func (b *alipayPrivBinding) BindUserWalletBills(c *gin.Context) (*web.UserWalletBillsReq, mir.Error) { - uid, ok := base.UserIdFrom(c) - if !ok { - return nil, xerror.UnauthorizedTokenError - } - page, pageSize := app.GetPageInfo(c) - return &web.UserWalletBillsReq{ - UserId: uid, - Page: page, - PageSize: pageSize, - }, nil -} - -func (b *alipayPrivBinding) BindUserRechargeLink(c *gin.Context) (*web.UserRechargeLinkReq, mir.Error) { - v := &web.UserRechargeLinkReq{ - Host: c.Request.Host, - } - err := b.BindAny(c, v) - return v, err -} - -func (b *alipayPrivBinding) BindUserRechargeResult(c *gin.Context) (*web.UserRechargeResultReq, mir.Error) { - uid, exist := base.UserIdFrom(c) - if !exist { - return nil, xerror.UnauthorizedTokenError - } - return &web.UserRechargeResultReq{ - UserId: uid, - Id: convert.StrTo(c.Query("id")).MustInt64(), - }, nil -} - func (s *alipayPrivSrv) Chain() gin.HandlersChain { return gin.HandlersChain{chain.JWT()} } @@ -197,42 +122,9 @@ func newAlipayPubSrv(s *base.DaoServant) api.AlipayPub { } } -func newAlipayPubBinding(alipayClient *alipay.Client) api.AlipayPubBinding { - return &alipayPubBinding{ - UnimplementedAlipayPubBinding: &api.UnimplementedAlipayPubBinding{ - BindAny: base.NewBindAnyFn(), - }, - alipayClient: alipayClient, - } -} - -func newAlipayPubRender() api.AlipayPubRender { - return &alipayPubRender{ - UnimplementedAlipayPubRender: &api.UnimplementedAlipayPubRender{ - RenderAny: base.RenderAny, - }, - } -} - func newAlipayPrivSrv(s *base.DaoServant, client *alipay.Client) api.AlipayPriv { return &alipayPrivSrv{ DaoServant: s, alipayClient: client, } } - -func newAlipayPrivBinding() api.AlipayPrivBinding { - return &alipayPrivBinding{ - UnimplementedAlipayPrivBinding: &api.UnimplementedAlipayPrivBinding{ - BindAny: base.NewBindAnyFn(), - }, - } -} - -func newAlipayPrivRender() api.AlipayPrivRender { - return &alipayPrivRender{ - UnimplementedAlipayPrivRender: &api.UnimplementedAlipayPrivRender{ - RenderAny: base.RenderAny, - }, - } -} diff --git a/internal/servants/web/core.go b/internal/servants/web/core.go index daad3b30..637108b8 100644 --- a/internal/servants/web/core.go +++ b/internal/servants/web/core.go @@ -10,14 +10,13 @@ import ( "time" "unicode/utf8" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" api "github.com/rocboss/paopao-ce/auto/api/v1" "github.com/rocboss/paopao-ce/internal/core" "github.com/rocboss/paopao-ce/internal/model/web" "github.com/rocboss/paopao-ce/internal/servants/base" "github.com/rocboss/paopao-ce/internal/servants/chain" - "github.com/rocboss/paopao-ce/pkg/convert" "github.com/rocboss/paopao-ce/pkg/xerror" "github.com/sirupsen/logrus" ) @@ -29,9 +28,7 @@ const ( ) var ( - _ api.Core = (*coreSrv)(nil) - _ api.CoreBinding = (*coreBinding)(nil) - _ api.CoreRender = (*coreRender)(nil) + _ api.Core = (*coreSrv)(nil) ) type coreSrv struct { @@ -41,77 +38,6 @@ type coreSrv struct { oss core.ObjectStorageService } -type coreBinding struct { - *api.UnimplementedCoreBinding -} - -type coreRender struct { - *api.UnimplementedCoreRender -} - -func (b *coreBinding) BindGetUserInfo(c *gin.Context) (*web.UserInfoReq, mir.Error) { - username, exist := base.UserNameFrom(c) - if !exist { - return nil, xerror.UnauthorizedAuthNotExist - } - return &web.UserInfoReq{ - Username: username, - }, nil -} - -func (b *coreBinding) BindGetMessages(c *gin.Context) (*web.GetMessagesReq, mir.Error) { - v, err := web.BasePageReqFrom(c) - return (*web.GetMessagesReq)(v), err -} - -func (b *coreBinding) BindGetCollections(c *gin.Context) (*web.GetCollectionsReq, mir.Error) { - v, err := web.BasePageReqFrom(c) - return (*web.GetCollectionsReq)(v), err -} - -func (b *coreBinding) BindGetStars(c *gin.Context) (*web.GetStarsReq, mir.Error) { - v, err := web.BasePageReqFrom(c) - return (*web.GetStarsReq)(v), err -} - -func (b *coreBinding) BindSuggestTags(c *gin.Context) (*web.SuggestTagsReq, mir.Error) { - return &web.SuggestTagsReq{ - Keyword: c.Query("k"), - }, nil -} - -func (b *coreBinding) BindSuggestUsers(c *gin.Context) (*web.SuggestUsersReq, mir.Error) { - return &web.SuggestUsersReq{ - Keyword: c.Query("k"), - }, nil -} - -func (b *coreBinding) BindTweetCollectionStatus(c *gin.Context) (*web.TweetCollectionStatusReq, mir.Error) { - UserId, exist := base.UserIdFrom(c) - if !exist { - return nil, xerror.UnauthorizedAuthNotExist - } - return &web.TweetCollectionStatusReq{ - SimpleInfo: web.SimpleInfo{ - Uid: UserId, - }, - TweetId: convert.StrTo(c.Query("id")).MustInt64(), - }, nil -} - -func (b *coreBinding) BindTweetStarStatus(c *gin.Context) (*web.TweetStarStatusReq, mir.Error) { - UserId, exist := base.UserIdFrom(c) - if !exist { - return nil, xerror.UnauthorizedAuthNotExist - } - return &web.TweetStarStatusReq{ - SimpleInfo: web.SimpleInfo{ - Uid: UserId, - }, - TweetId: convert.StrTo(c.Query("id")).MustInt64(), - }, nil -} - func (s *coreSrv) Chain() gin.HandlersChain { return gin.HandlersChain{chain.JWT()} } @@ -448,19 +374,3 @@ func newCoreSrv(s *base.DaoServant, oss core.ObjectStorageService) api.Core { oss: oss, } } - -func newCoreBinding() api.CoreBinding { - return &coreBinding{ - UnimplementedCoreBinding: &api.UnimplementedCoreBinding{ - BindAny: base.NewBindAnyFn(), - }, - } -} - -func newCoreRender() api.CoreRender { - return &coreRender{ - UnimplementedCoreRender: &api.UnimplementedCoreRender{ - RenderAny: base.RenderAny, - }, - } -} diff --git a/internal/servants/web/followship.go b/internal/servants/web/followship.go index 2aeaf9cc..eb9cc14f 100644 --- a/internal/servants/web/followship.go +++ b/internal/servants/web/followship.go @@ -12,9 +12,7 @@ import ( ) var ( - _ api.Followship = (*followshipSrv)(nil) - _ api.FollowshipBinding = (*followshipBinding)(nil) - _ api.FollowshipRender = (*followshipRender)(nil) + _ api.Followship = (*followshipSrv)(nil) ) type followshipSrv struct { @@ -22,14 +20,6 @@ type followshipSrv struct { *base.DaoServant } -type followshipBinding struct { - *api.UnimplementedFollowshipBinding -} - -type followshipRender struct { - *api.UnimplementedFollowshipRender -} - func (s *followshipSrv) Chain() gin.HandlersChain { return gin.HandlersChain{chain.JWT()} } @@ -37,19 +27,3 @@ func (s *followshipSrv) Chain() gin.HandlersChain { func newFollowshipSrv(s *base.DaoServant) api.Followship { return &followshipSrv{} } - -func newFollowshipBinding() api.FollowshipBinding { - return &followshipBinding{ - UnimplementedFollowshipBinding: &api.UnimplementedFollowshipBinding{ - BindAny: base.NewBindAnyFn(), - }, - } -} - -func newFollowshipRender() api.FollowshipRender { - return &followshipRender{ - UnimplementedFollowshipRender: &api.UnimplementedFollowshipRender{ - RenderAny: base.RenderAny, - }, - } -} diff --git a/internal/servants/web/friendship.go b/internal/servants/web/friendship.go index 11f8e129..afe0dcf2 100644 --- a/internal/servants/web/friendship.go +++ b/internal/servants/web/friendship.go @@ -5,7 +5,7 @@ package web import ( - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" api "github.com/rocboss/paopao-ce/auto/api/v1" "github.com/rocboss/paopao-ce/internal/model/web" @@ -16,9 +16,7 @@ import ( ) var ( - _ api.Friendship = (*friendshipSrv)(nil) - _ api.FriendshipBinding = (*friendshipBinding)(nil) - _ api.FriendshipRender = (*friendshipRender)(nil) + _ api.Friendship = (*friendshipSrv)(nil) ) type friendshipSrv struct { @@ -26,14 +24,6 @@ type friendshipSrv struct { *base.DaoServant } -type friendshipBinding struct { - *api.UnimplementedFriendshipBinding -} - -type friendshipRender struct { - *api.UnimplementedFriendshipRender -} - func (s *friendshipSrv) Chain() gin.HandlersChain { return gin.HandlersChain{chain.JWT()} } @@ -124,19 +114,3 @@ func newFriendshipSrv(s *base.DaoServant) api.Friendship { DaoServant: s, } } - -func newFriendshipBinding() api.FriendshipBinding { - return &friendshipBinding{ - UnimplementedFriendshipBinding: &api.UnimplementedFriendshipBinding{ - BindAny: base.NewBindAnyFn(), - }, - } -} - -func newFriendshipRender() api.FriendshipRender { - return &friendshipRender{ - UnimplementedFriendshipRender: &api.UnimplementedFriendshipRender{ - RenderAny: base.RenderAny, - }, - } -} diff --git a/internal/servants/web/loose.go b/internal/servants/web/loose.go index 76d3a49c..2a6c50c7 100644 --- a/internal/servants/web/loose.go +++ b/internal/servants/web/loose.go @@ -5,7 +5,7 @@ package web import ( - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gin-gonic/gin" api "github.com/rocboss/paopao-ce/auto/api/v1" "github.com/rocboss/paopao-ce/internal/core" @@ -14,14 +14,11 @@ import ( "github.com/rocboss/paopao-ce/internal/model/web" "github.com/rocboss/paopao-ce/internal/servants/base" "github.com/rocboss/paopao-ce/internal/servants/chain" - "github.com/rocboss/paopao-ce/pkg/app" "github.com/sirupsen/logrus" ) var ( - _ api.Loose = (*looseSrv)(nil) - _ api.LooseBinding = (*looseBinding)(nil) - _ api.LooseRender = (*looseRender)(nil) + _ api.Loose = (*looseSrv)(nil) ) type looseSrv struct { @@ -29,32 +26,6 @@ type looseSrv struct { *base.DaoServant } -type looseBinding struct { - *api.UnimplementedLooseBinding -} - -type looseRender struct { - *api.UnimplementedLooseRender -} - -func (s *looseBinding) BindTimeline(c *gin.Context) (*web.TimelineReq, mir.Error) { - user, _ := base.UserFrom(c) - page, pageSize := app.GetPageInfo(c) - v := &web.TimelineReq{ - BaseInfo: web.BaseInfo{ - User: user, - }, - Query: c.Query("query"), - Type: "search", - Page: page, - PageSize: pageSize, - } - if c.Query("type") == "tag" { - v.Type = "tag" - } - return v, nil -} - func (s *looseSrv) Chain() gin.HandlersChain { return gin.HandlersChain{chain.JwtLoose()} } @@ -278,19 +249,3 @@ func newLooseSrv(s *base.DaoServant) api.Loose { DaoServant: s, } } - -func newLooseBinding() api.LooseBinding { - return &looseBinding{ - UnimplementedLooseBinding: &api.UnimplementedLooseBinding{ - BindAny: base.NewBindAnyFn(), - }, - } -} - -func newLooseRender() api.LooseRender { - return &looseRender{ - UnimplementedLooseRender: &api.UnimplementedLooseRender{ - RenderAny: base.RenderAny, - }, - } -} diff --git a/internal/servants/web/priv.go b/internal/servants/web/priv.go index cecd77a1..97117749 100644 --- a/internal/servants/web/priv.go +++ b/internal/servants/web/priv.go @@ -9,7 +9,7 @@ import ( "strings" "time" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/disintegration/imaging" "github.com/gin-gonic/gin" "github.com/gofrs/uuid" @@ -19,16 +19,13 @@ import ( "github.com/rocboss/paopao-ce/internal/model/web" "github.com/rocboss/paopao-ce/internal/servants/base" "github.com/rocboss/paopao-ce/internal/servants/chain" - "github.com/rocboss/paopao-ce/pkg/convert" "github.com/rocboss/paopao-ce/pkg/utils" "github.com/rocboss/paopao-ce/pkg/xerror" "github.com/sirupsen/logrus" ) var ( - _ api.Priv = (*privSrv)(nil) - _ api.PrivBinding = (*privBinding)(nil) - _ api.PrivRender = (*privRender)(nil) + _ api.Priv = (*privSrv)(nil) _uploadAttachmentTypeMap = map[string]core.AttachmentType{ "public/image": core.AttachmentTypeImage, @@ -45,100 +42,6 @@ type privSrv struct { oss core.ObjectStorageService } -type privBinding struct { - *api.UnimplementedPrivBinding -} - -type privRender struct { - *api.UnimplementedPrivRender -} - -func (b *privBinding) BindUploadAttachment(c *gin.Context) (_ *web.UploadAttachmentReq, xerr mir.Error) { - UserId, exist := base.UserIdFrom(c) - if !exist { - return nil, xerror.UnauthorizedAuthNotExist - } - - uploadType := c.Request.FormValue("type") - file, fileHeader, err := c.Request.FormFile("file") - if err != nil { - return nil, _errFileUploadFailed - } - defer func() { - if xerr != nil { - file.Close() - } - }() - - if err := fileCheck(uploadType, fileHeader.Size); err != nil { - return nil, err - } - - contentType := fileHeader.Header.Get("Content-Type") - fileExt, xerr := getFileExt(contentType) - if xerr != nil { - return nil, xerr - } - - return &web.UploadAttachmentReq{ - SimpleInfo: web.SimpleInfo{ - Uid: UserId, - }, - UploadType: uploadType, - ContentType: contentType, - File: file, - FileSize: fileHeader.Size, - FileExt: fileExt, - }, nil -} - -func (b *privBinding) BindDownloadAttachmentPrecheck(c *gin.Context) (*web.DownloadAttachmentPrecheckReq, mir.Error) { - user, exist := base.UserFrom(c) - if !exist { - return nil, xerror.UnauthorizedAuthNotExist - } - return &web.DownloadAttachmentPrecheckReq{ - BaseInfo: web.BaseInfo{ - User: user, - }, - ContentID: convert.StrTo(c.Query("id")).MustInt64(), - }, nil -} - -func (b *privBinding) BindDownloadAttachment(c *gin.Context) (*web.DownloadAttachmentReq, mir.Error) { - user, exist := base.UserFrom(c) - if !exist { - return nil, xerror.UnauthorizedAuthNotExist - } - return &web.DownloadAttachmentReq{ - BaseInfo: web.BaseInfo{ - User: user, - }, - ContentID: convert.StrTo(c.Query("id")).MustInt64(), - }, nil -} - -func (s *privBinding) BindCreateTweet(c *gin.Context) (*web.CreateTweetReq, mir.Error) { - v := &web.CreateTweetReq{} - err := s.BindAny(c, v) - v.ClientIP = c.ClientIP() - return v, err -} - -func (s *privBinding) BindCreateCommentReply(c *gin.Context) (*web.CreateCommentReplyReq, mir.Error) { - v := &web.CreateCommentReplyReq{} - err := s.BindAny(c, v) - v.ClientIP = c.ClientIP() - return v, err -} - -func (s *privBinding) BindCreateComment(c *gin.Context) (*web.CreateCommentReq, mir.Error) { - v := &web.CreateCommentReq{} - err := s.BindAny(c, v) - v.ClientIP = c.ClientIP() - return v, err -} - func (s *privSrv) Chain() gin.HandlersChain { return gin.HandlersChain{chain.JWT(), chain.Priv()} } @@ -927,19 +830,3 @@ func newPrivSrv(s *base.DaoServant, oss core.ObjectStorageService) api.Priv { oss: oss, } } - -func newPrivBinding() api.PrivBinding { - return &privBinding{ - UnimplementedPrivBinding: &api.UnimplementedPrivBinding{ - BindAny: base.NewBindAnyFn(), - }, - } -} - -func newPrivRender() api.PrivRender { - return &privRender{ - UnimplementedPrivRender: &api.UnimplementedPrivRender{ - RenderAny: base.RenderAny, - }, - } -} diff --git a/internal/servants/web/pub.go b/internal/servants/web/pub.go index 6c58de3c..6967d3c3 100644 --- a/internal/servants/web/pub.go +++ b/internal/servants/web/pub.go @@ -14,7 +14,7 @@ import ( "unicode/utf8" "github.com/afocus/captcha" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gofrs/uuid" api "github.com/rocboss/paopao-ce/auto/api/v1" "github.com/rocboss/paopao-ce/internal/core" @@ -29,9 +29,7 @@ import ( ) var ( - _ api.Pub = (*pubSrv)(nil) - _ api.PubBinding = (*pubBinding)(nil) - _ api.PubRender = (*pubRender)(nil) + _ api.Pub = (*pubSrv)(nil) ) const ( @@ -44,14 +42,6 @@ type pubSrv struct { *base.DaoServant } -type pubBinding struct { - *api.UnimplementedPubBinding -} - -type pubRender struct { - *api.UnimplementedPubRender -} - func (s *pubSrv) TweetDetail(req *web.TweetDetailReq) (*web.TweetDetailResp, mir.Error) { post, err := s.Ds.GetPostByID(req.TweetId) if err != nil { @@ -228,19 +218,3 @@ func newPubSrv(s *base.DaoServant) api.Pub { DaoServant: s, } } - -func newPubBinding() api.PubBinding { - return &pubBinding{ - UnimplementedPubBinding: &api.UnimplementedPubBinding{ - BindAny: base.NewBindAnyFn(), - }, - } -} - -func newPubRender() api.PubRender { - return &pubRender{ - UnimplementedPubRender: &api.UnimplementedPubRender{ - RenderAny: base.RenderAny, - }, - } -} diff --git a/internal/servants/web/utils.go b/internal/servants/web/utils.go index b4dc77b8..b795d939 100644 --- a/internal/servants/web/utils.go +++ b/internal/servants/web/utils.go @@ -11,7 +11,7 @@ import ( "time" "unicode/utf8" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" "github.com/gofrs/uuid" "github.com/rocboss/paopao-ce/internal/core" "github.com/rocboss/paopao-ce/internal/model/web" diff --git a/internal/servants/web/web.go b/internal/servants/web/web.go index e4f9da1f..e4684a1e 100644 --- a/internal/servants/web/web.go +++ b/internal/servants/web/web.go @@ -13,8 +13,6 @@ import ( "github.com/rocboss/paopao-ce/internal/conf" "github.com/rocboss/paopao-ce/internal/dao" "github.com/rocboss/paopao-ce/internal/servants/base" - "github.com/sirupsen/logrus" - "github.com/smartwalle/alipay/v3" ) var ( @@ -29,49 +27,27 @@ func RouteWeb(e *gin.Engine) { oss := dao.ObjectStorageService() ds := base.NewDaoServant() // aways register servants - api.RegisterAdminServant(e, newAdminSrv(ds), newAdminBinding(), newAdminRender()) - api.RegisterCoreServant(e, newCoreSrv(ds, oss), newCoreBinding(), newCoreRender()) - api.RegisterLooseServant(e, newLooseSrv(ds), newLooseBinding(), newLooseRender()) - api.RegisterPrivServant(e, newPrivSrv(ds, oss), newPrivBinding(), newPrivRender()) - api.RegisterPubServant(e, newPubSrv(ds), newPubBinding(), newPubRender()) + api.RegisterAdminServant(e, newAdminSrv(ds)) + api.RegisterCoreServant(e, newCoreSrv(ds, oss)) + api.RegisterLooseServant(e, newLooseSrv(ds)) + api.RegisterPrivServant(e, newPrivSrv(ds, oss)) + api.RegisterPubServant(e, newPubSrv(ds)) // regster servants if needed by configure cfg.In(cfg.Actions{ "Alipay": func() { - client := mustAlipayClient() - api.RegisterAlipayPubServant(e, newAlipayPubSrv(ds), newAlipayPubBinding(client), newAlipayPubRender()) - api.RegisterAlipayPrivServant(e, newAlipayPrivSrv(ds, client), newAlipayPrivBinding(), newAlipayPrivRender()) + client := conf.MustAlipayClient() + api.RegisterAlipayPubServant(e, newAlipayPubSrv(ds)) + api.RegisterAlipayPrivServant(e, newAlipayPrivSrv(ds, client)) }, "Followship": func() { - api.RegisterFollowshipServant(e, newFollowshipSrv(ds), newFollowshipBinding(), newFollowshipRender()) + api.RegisterFollowshipServant(e, newFollowshipSrv(ds)) }, "Friendship": func() { - api.RegisterFriendshipServant(e, newFriendshipSrv(ds), newFriendshipBinding(), newFriendshipRender()) + api.RegisterFriendshipServant(e, newFriendshipSrv(ds)) }, }) } -func mustAlipayClient() *alipay.Client { - s := conf.AlipaySetting - // 将 key 的验证调整到初始化阶段 - client, err := alipay.New(s.AppID, s.PrivateKey, s.InProduction) - if err != nil { - logrus.Fatalf("alipay.New err: %s", err) - } - // 加载应用公钥证书 - if err = client.LoadAppPublicCertFromFile(s.AppPublicCertFile); err != nil { - logrus.Fatalf("client.LoadAppPublicCertFromFile err: %s\n", err) - } - // 加载支付宝根证书 - if err = client.LoadAliPayRootCertFromFile(s.RootCertFile); err != nil { - logrus.Fatalf("client.LoadAliPayRootCertFromFile err: %s\n", err) - } - // 加载支付宝公钥证书 - if err = client.LoadAliPayPublicCertFromFile(s.PublicCertFile); err != nil { - logrus.Fatalf("client.LoadAliPayPublicCertFromFile err: %s\n", err) - } - return client -} - // lazyInitial do some package lazy initialize for performance func lazyInitial() { _onceInitial.Do(func() { diff --git a/mirc/admin/v1/user.go b/mirc/admin/v1/user.go index 0924ca84..c8e690e8 100644 --- a/mirc/admin/v1/user.go +++ b/mirc/admin/v1/user.go @@ -1,8 +1,8 @@ package v1 import ( - . "github.com/alimy/mir/v3" - . "github.com/alimy/mir/v3/engine" + . "github.com/alimy/mir/v4" + . "github.com/alimy/mir/v4/engine" ) func init() { diff --git a/mirc/bot/v1/user.go b/mirc/bot/v1/user.go index e9f614b6..ffe4d8da 100644 --- a/mirc/bot/v1/user.go +++ b/mirc/bot/v1/user.go @@ -1,8 +1,8 @@ package v1 import ( - . "github.com/alimy/mir/v3" - . "github.com/alimy/mir/v3/engine" + . "github.com/alimy/mir/v4" + . "github.com/alimy/mir/v4/engine" ) func init() { diff --git a/mirc/gen.go b/mirc/gen.go index 15574b06..0f0acca9 100644 --- a/mirc/gen.go +++ b/mirc/gen.go @@ -10,8 +10,8 @@ package main import ( "log" - . "github.com/alimy/mir/v3/core" - . "github.com/alimy/mir/v3/engine" + . "github.com/alimy/mir/v4/core" + . "github.com/alimy/mir/v4/engine" _ "github.com/rocboss/paopao-ce/mirc/admin/v1" _ "github.com/rocboss/paopao-ce/mirc/bot/v1" diff --git a/mirc/localoss/v1/user.go b/mirc/localoss/v1/user.go index 481d70a5..e7380750 100644 --- a/mirc/localoss/v1/user.go +++ b/mirc/localoss/v1/user.go @@ -1,8 +1,8 @@ package v1 import ( - . "github.com/alimy/mir/v3" - . "github.com/alimy/mir/v3/engine" + . "github.com/alimy/mir/v4" + . "github.com/alimy/mir/v4/engine" ) func init() { diff --git a/mirc/space/v1/user.go b/mirc/space/v1/user.go index f3193c7f..f54c3298 100644 --- a/mirc/space/v1/user.go +++ b/mirc/space/v1/user.go @@ -1,8 +1,8 @@ package v1 import ( - . "github.com/alimy/mir/v3" - . "github.com/alimy/mir/v3/engine" + . "github.com/alimy/mir/v4" + . "github.com/alimy/mir/v4/engine" ) func init() { diff --git a/mirc/web/v1/admin.go b/mirc/web/v1/admin.go index c8126ba3..8799fc8a 100644 --- a/mirc/web/v1/admin.go +++ b/mirc/web/v1/admin.go @@ -1,8 +1,8 @@ package v1 import ( - . "github.com/alimy/mir/v3" - . "github.com/alimy/mir/v3/engine" + . "github.com/alimy/mir/v4" + . "github.com/alimy/mir/v4/engine" "github.com/rocboss/paopao-ce/internal/model/web" ) diff --git a/mirc/web/v1/alipay.go b/mirc/web/v1/alipay.go index b012c568..0234639b 100644 --- a/mirc/web/v1/alipay.go +++ b/mirc/web/v1/alipay.go @@ -1,8 +1,8 @@ package v1 import ( - . "github.com/alimy/mir/v3" - . "github.com/alimy/mir/v3/engine" + . "github.com/alimy/mir/v4" + . "github.com/alimy/mir/v4/engine" "github.com/rocboss/paopao-ce/internal/model/web" ) diff --git a/mirc/web/v1/core.go b/mirc/web/v1/core.go index 70d9c1a5..d81fa520 100644 --- a/mirc/web/v1/core.go +++ b/mirc/web/v1/core.go @@ -1,8 +1,8 @@ package v1 import ( - . "github.com/alimy/mir/v3" - . "github.com/alimy/mir/v3/engine" + . "github.com/alimy/mir/v4" + . "github.com/alimy/mir/v4/engine" "github.com/rocboss/paopao-ce/internal/model/web" ) diff --git a/mirc/web/v1/followship.go b/mirc/web/v1/followship.go index 456fd5eb..e0123479 100644 --- a/mirc/web/v1/followship.go +++ b/mirc/web/v1/followship.go @@ -1,8 +1,8 @@ package v1 import ( - . "github.com/alimy/mir/v3" - . "github.com/alimy/mir/v3/engine" + . "github.com/alimy/mir/v4" + . "github.com/alimy/mir/v4/engine" "github.com/rocboss/paopao-ce/internal/model/web" ) diff --git a/mirc/web/v1/friendship.go b/mirc/web/v1/friendship.go index b753eee3..69757d27 100644 --- a/mirc/web/v1/friendship.go +++ b/mirc/web/v1/friendship.go @@ -1,8 +1,8 @@ package v1 import ( - . "github.com/alimy/mir/v3" - . "github.com/alimy/mir/v3/engine" + . "github.com/alimy/mir/v4" + . "github.com/alimy/mir/v4/engine" "github.com/rocboss/paopao-ce/internal/model/web" ) diff --git a/mirc/web/v1/loose.go b/mirc/web/v1/loose.go index 810b2f87..a5119656 100644 --- a/mirc/web/v1/loose.go +++ b/mirc/web/v1/loose.go @@ -1,8 +1,8 @@ package v1 import ( - . "github.com/alimy/mir/v3" - . "github.com/alimy/mir/v3/engine" + . "github.com/alimy/mir/v4" + . "github.com/alimy/mir/v4/engine" "github.com/rocboss/paopao-ce/internal/model/web" ) diff --git a/mirc/web/v1/priv.go b/mirc/web/v1/priv.go index 15817543..0c1f2f27 100644 --- a/mirc/web/v1/priv.go +++ b/mirc/web/v1/priv.go @@ -1,8 +1,8 @@ package v1 import ( - . "github.com/alimy/mir/v3" - . "github.com/alimy/mir/v3/engine" + . "github.com/alimy/mir/v4" + . "github.com/alimy/mir/v4/engine" "github.com/rocboss/paopao-ce/internal/model/web" ) diff --git a/mirc/web/v1/pub.go b/mirc/web/v1/pub.go index 5320c537..6dcd8bc5 100644 --- a/mirc/web/v1/pub.go +++ b/mirc/web/v1/pub.go @@ -1,8 +1,8 @@ package v1 import ( - . "github.com/alimy/mir/v3" - . "github.com/alimy/mir/v3/engine" + . "github.com/alimy/mir/v4" + . "github.com/alimy/mir/v4/engine" "github.com/rocboss/paopao-ce/internal/model/web" ) diff --git a/pkg/xerror/xerror.go b/pkg/xerror/xerror.go index 5bdcb115..2f8d01f2 100644 --- a/pkg/xerror/xerror.go +++ b/pkg/xerror/xerror.go @@ -9,7 +9,7 @@ import ( "net/http" "strings" - "github.com/alimy/mir/v3" + "github.com/alimy/mir/v4" ) var (