| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | package handlerimport (	"context"	"git.ikuban.com/server/kratos-utils/v2/transport/http/reply"	"git.ikuban.com/server/kratos-utils/v2/transport/middleware"	"github.com/go-kratos/kratos/v2/transport/http"	"google.golang.org/grpc")func unaryHandler(srv any, method grpc.MethodDesc, option *middleware.Option) http.HandlerFunc {	return func(ctx http.Context) error {		http.SetOperation(ctx, option.Path)		dec := func(in any) error {			if err := ctx.Bind(&in); err != nil {				return err			}			if err := ctx.BindQuery(&in); err != nil {				return err			}			// Bind URL path variables			if err := ctx.BindVars(&in); err != nil {				return err			}			return nil		}		httpCtx := ctx		interceptor := func(ctx context.Context, req any, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp any, err error) {			ctx = middleware.NewOptionContext(ctx, option)			h := httpCtx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {				return handler(ctx, req)			})			return h(ctx, req)		}		out, err := method.Handler(srv, ctx, dec, interceptor)		if err != nil {			return err		}		f := reply.DefaultFunc(out)		if f != nil {			success := reply.GetReplyFunc()(out)			return ctx.Result(200, success)		}		return ctx.Result(200, out)	}}
 |