You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

93 lines
2.4 KiB

package main
import (
"context"
"fmt"
"git.diulo.com/mogfee/kit"
"git.diulo.com/mogfee/kit/errors"
"git.diulo.com/mogfee/kit/example/service"
"git.diulo.com/mogfee/kit/middleware"
"git.diulo.com/mogfee/kit/middleware/logging"
user "git.diulo.com/mogfee/kit/proto/v1"
"git.diulo.com/mogfee/kit/transport/http"
"strings"
)
func main() {
hs := http.NewServer(
http.Address("localhost:9093"),
http.Middleware(
logging.Server(),
func(handler middleware.Handler) middleware.Handler {
return func(ctx context.Context, a any) (any, error) {
if v, ok := a.(interface {
Validate() error
}); ok {
if err := v.Validate(); err != nil {
if a, ok := err.(interface {
Field() string
Reason() string
}); ok {
field := a.Field()
return nil, errors.New(400, "InvalidArgument", "").WithMetadata(map[string]string{
strings.ToLower(field[0:1]) + field[1:]: a.Reason(),
})
}
//if vv, ok := err.(ValidateError); ok {
// s.Result(http.StatusBadRequest, "InvalidArgument", vv.ErrorName(), map[string]string{
// lcfirst(vv.Field()): vv.Reason(),
// })
// return
//}
}
}
return handler(ctx, a)
}
},
),
)
route := hs.Route("/")
route.GET("/api/abc", func(ctx http.Context) error {
in := UserAddRequest{Name: "tom"}
http.SetOperation(ctx, "/api/abc")
h := ctx.Middleware(func(ctx context.Context, a any) (any, error) {
return AddUser(ctx, a.(*UserAddRequest))
})
out, err := h(ctx, &in)
if err != nil {
return err
}
reply, _ := out.(*UserAddResponse)
return ctx.Result(200, reply)
})
user.RegisterUserHTTPServer(hs, &service.UserService{})
app := kit.New(
kit.Name("kit-server"),
kit.Version("v1.0"),
kit.Server(hs),
)
fmt.Println(app.Run())
fmt.Println(app.Stop())
}
func ma1in() {
//gin.SetMode(gin.ReleaseMode)
//app := gin.Default()
//srv := service.UserService{}
//logger := log.With(log.DefaultLogger)
//user.RegisterUserHandler(app, &srv, middleware.Logger(logger), middleware.Validate())
//fmt.Println("http://localhost:8888")
//app.Run("localhost:8888")
}
type UserAddRequest struct {
Name string
}
type UserAddResponse struct {
Id string
}
func AddUser(ctx context.Context, request *UserAddRequest) (*UserAddResponse, error) {
return &UserAddResponse{Id: request.Name}, errors.New(500, "xx", "")
}