diff --git a/Makefile b/Makefile index 29ae74a..a64099d 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ gen: protoc -I ./third_party -I ./proto --ts_out=prefix=/api/v1/sendmail:./api --go_out=./api --go-grpc_out=./api --kit_out=./api --validate_out="lang=go:./api" ./proto/*.proto auth: protoc --go_out=. ./third_party/auth/auth.proto -gitpush: +git: git add . git commit -m "auto commit" git push \ No newline at end of file diff --git a/app.go b/app.go index 0882caf..b3ea930 100644 --- a/app.go +++ b/app.go @@ -7,7 +7,6 @@ import ( _ "git.diulo.com/mogfee/kit/encoding/form" _ "git.diulo.com/mogfee/kit/encoding/json" _ "git.diulo.com/mogfee/kit/encoding/xml" - "git.diulo.com/mogfee/kit/log" "git.diulo.com/mogfee/kit/registry" "git.diulo.com/mogfee/kit/transport" "github.com/google/uuid" @@ -50,7 +49,7 @@ func New(opts ...Option) *App { } fmt.Println(o.id) if o.logger != nil { - log.SetLogger(o.logger) + logx.SetLogger(o.logger) } ctx, cancel := context.WithCancel(o.ctx) return &App{ diff --git a/cmd/mysql-kit/main.go b/cmd/mysql-kit/main.go index 7dc64ce..ceafff4 100644 --- a/cmd/mysql-kit/main.go +++ b/cmd/mysql-kit/main.go @@ -5,8 +5,8 @@ import ( "flag" "fmt" "git.diulo.com/mogfee/kit/cmd/mysql-kit/core" + "git.diulo.com/mogfee/kit/core/pathx" "git.diulo.com/mogfee/kit/mysql/ddl" - "git.diulo.com/mogfee/kit/pathx" "os" "os/exec" "strings" diff --git a/errors/batcherror.go b/core/errorx/batcherror.go similarity index 97% rename from errors/batcherror.go rename to core/errorx/batcherror.go index 97f8877..4b53542 100644 --- a/errors/batcherror.go +++ b/core/errorx/batcherror.go @@ -1,4 +1,4 @@ -package errors +package errorx import "bytes" diff --git a/errors/errors.go b/core/errorx/errors.go similarity index 99% rename from errors/errors.go rename to core/errorx/errors.go index 8ae26d0..43cfd4d 100644 --- a/errors/errors.go +++ b/core/errorx/errors.go @@ -1,4 +1,4 @@ -package errors +package errorx import ( "errors" diff --git a/errors/errors.pb.go b/core/errorx/errors.pb.go similarity index 99% rename from errors/errors.pb.go rename to core/errorx/errors.pb.go index 541600d..6df604e 100644 --- a/errors/errors.pb.go +++ b/core/errorx/errors.pb.go @@ -4,7 +4,7 @@ // protoc v4.22.0 // source: errors.proto -package errors +package errorx import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" diff --git a/errors/errors.proto b/core/errorx/errors.proto similarity index 100% rename from errors/errors.proto rename to core/errorx/errors.proto diff --git a/errors/types.go b/core/errorx/types.go similarity index 99% rename from errors/types.go rename to core/errorx/types.go index e3d033b..a5deecb 100644 --- a/errors/types.go +++ b/core/errorx/types.go @@ -1,5 +1,5 @@ // nolint:gomnd -package errors +package errorx // BadRequest new BadRequest error that is mapped to a 400 response. func BadRequest(reason, message string) *Error { diff --git a/errors/warp.go b/core/errorx/warp.go similarity index 94% rename from errors/warp.go rename to core/errorx/warp.go index 24f56f0..2b74286 100644 --- a/errors/warp.go +++ b/core/errorx/warp.go @@ -1,4 +1,4 @@ -package errors +package errorx import ( stderrors "errors" diff --git a/xgo/xgo.go b/core/gox/gox.go similarity index 91% rename from xgo/xgo.go rename to core/gox/gox.go index 74b5c1a..d00e7cd 100644 --- a/xgo/xgo.go +++ b/core/gox/gox.go @@ -1,4 +1,4 @@ -package xgo +package gox import "fmt" diff --git a/log/filter.go b/core/logx/filter.go similarity index 99% rename from log/filter.go rename to core/logx/filter.go index e9a8cc6..47f7079 100644 --- a/log/filter.go +++ b/core/logx/filter.go @@ -1,4 +1,4 @@ -package log +package logx type FilterOption func(*Filter) diff --git a/log/filter_test.go b/core/logx/filter_test.go similarity index 97% rename from log/filter_test.go rename to core/logx/filter_test.go index f7d8bea..08bc8a9 100644 --- a/log/filter_test.go +++ b/core/logx/filter_test.go @@ -1,4 +1,4 @@ -package log +package logx import ( "testing" diff --git a/log/global.go b/core/logx/global.go similarity index 99% rename from log/global.go rename to core/logx/global.go index 5975bce..9762937 100644 --- a/log/global.go +++ b/core/logx/global.go @@ -1,4 +1,4 @@ -package log +package logx import ( "context" diff --git a/log/global_test.go b/core/logx/global_test.go similarity index 84% rename from log/global_test.go rename to core/logx/global_test.go index 1c6efb6..310789f 100644 --- a/log/global_test.go +++ b/core/logx/global_test.go @@ -1,4 +1,4 @@ -package log +package logx import ( "testing" diff --git a/log/helper.go b/core/logx/helper.go similarity index 99% rename from log/helper.go rename to core/logx/helper.go index 0ef52ec..e8631b3 100644 --- a/log/helper.go +++ b/core/logx/helper.go @@ -1,4 +1,4 @@ -package log +package logx import ( "context" diff --git a/log/helper_test.go b/core/logx/helper_test.go similarity index 93% rename from log/helper_test.go rename to core/logx/helper_test.go index 32db525..23482a1 100644 --- a/log/helper_test.go +++ b/core/logx/helper_test.go @@ -1,4 +1,4 @@ -package log +package logx import "testing" diff --git a/log/level.go b/core/logx/level.go similarity index 98% rename from log/level.go rename to core/logx/level.go index 0807fee..27d5ec0 100644 --- a/log/level.go +++ b/core/logx/level.go @@ -1,4 +1,4 @@ -package log +package logx import "strings" diff --git a/log/log.go b/core/logx/log.go similarity index 98% rename from log/log.go rename to core/logx/log.go index cf3a012..8c34bf3 100644 --- a/log/log.go +++ b/core/logx/log.go @@ -1,4 +1,4 @@ -package log +package logx import ( "context" diff --git a/log/log_test.go b/core/logx/log_test.go similarity index 94% rename from log/log_test.go rename to core/logx/log_test.go index 037b494..2a7986d 100644 --- a/log/log_test.go +++ b/core/logx/log_test.go @@ -1,4 +1,4 @@ -package log +package logx import ( "testing" diff --git a/core/logx/nsq_test.go b/core/logx/nsq_test.go new file mode 100644 index 0000000..8f81fee --- /dev/null +++ b/core/logx/nsq_test.go @@ -0,0 +1,18 @@ +package logx + +import ( + "context" + "fmt" + "testing" +) + +func Test_nsqLogger_Log(t *testing.T) { + nsqWriter := NewNsqLogger("localhost:4150", "app_log") + nsqWriter.Start(context.Background()) + logger := With(nsqWriter, + "ts", DefaultTimestamp, + "caller", DefaultCaller, + ) + logger.Log(LevelInfo, "user name ttt") + fmt.Println(nsqWriter.Stop(context.Background())) +} diff --git a/log/mq/nsq.go b/core/logx/nsqwriter.go similarity index 88% rename from log/mq/nsq.go rename to core/logx/nsqwriter.go index 72a02ec..c976772 100644 --- a/log/mq/nsq.go +++ b/core/logx/nsqwriter.go @@ -1,11 +1,10 @@ -package mq +package logx import ( "context" "encoding/json" "fmt" - "git.diulo.com/mogfee/kit/log" - "git.diulo.com/mogfee/kit/xgo" + "git.diulo.com/mogfee/kit/core/gox" "github.com/nsqio/go-nsq" "sync" "sync/atomic" @@ -20,12 +19,11 @@ type nsqLogger struct { } func (s *nsqLogger) Start(ctx context.Context) error { - xgo.Go(func() { + gox.Go(func() { for v := range s.list { if s.stop.Load() { break } - fmt.Println(string(v)) func(v []byte) { s.wg.Add(1) defer s.wg.Done() @@ -66,7 +64,7 @@ func NewNsqLogger(host string, topic string) *nsqLogger { return std } -func (l *nsqLogger) Log(level log.Level, keyvals ...any) error { +func (l *nsqLogger) Log(level Level, keyvals ...any) error { if l.stop.Load() { fmt.Println("log is stop") return nil diff --git a/log/std.go b/core/logx/std.go similarity index 98% rename from log/std.go rename to core/logx/std.go index 9203215..3048729 100644 --- a/log/std.go +++ b/core/logx/std.go @@ -1,4 +1,4 @@ -package log +package logx import ( "bytes" diff --git a/log/value.go b/core/logx/value.go similarity index 98% rename from log/value.go rename to core/logx/value.go index 77417f5..0b6c03f 100644 --- a/log/value.go +++ b/core/logx/value.go @@ -1,4 +1,4 @@ -package log +package logx import ( "context" diff --git a/core/mapping/mapping.go b/core/mapping/mapping.go index e2d70bd..b05c232 100644 --- a/core/mapping/mapping.go +++ b/core/mapping/mapping.go @@ -3,7 +3,6 @@ package mapping import ( "errors" "fmt" - "git.diulo.com/mogfee/kit/lang" "reflect" "sync" ) @@ -47,6 +46,3 @@ func ValidatePtr(v *reflect.Value) error { } return nil } -func Repr(v any) string { - return lang.Repr(v) -} diff --git a/pathx/file.go b/core/pathx/file.go similarity index 100% rename from pathx/file.go rename to core/pathx/file.go diff --git a/pathx/file_test.go b/core/pathx/file_test.go similarity index 100% rename from pathx/file_test.go rename to core/pathx/file_test.go diff --git a/core/syncx/resourcemanager.go b/core/syncx/resourcemanager.go index 99c605e..e7d66c8 100644 --- a/core/syncx/resourcemanager.go +++ b/core/syncx/resourcemanager.go @@ -1,7 +1,6 @@ package syncx import ( - "git.diulo.com/mogfee/kit/errors" "io" "sync" ) @@ -21,7 +20,7 @@ func NewResourceManager() *ResourceManager { func (manager *ResourceManager) Close() error { manager.lock.Lock() defer manager.lock.Unlock() - var be errors.BatchError + var be errorx.BatchError for _, resource := range manager.resource { if err := resource.Close(); err != nil { be.Add(err) diff --git a/core/timex/repr.go b/core/timex/repr.go deleted file mode 100644 index 856eb96..0000000 --- a/core/timex/repr.go +++ /dev/null @@ -1,11 +0,0 @@ -package timex - -import ( - "fmt" - "time" -) - -// ReprOfDuration returns the string representation of given duration in ms. -func ReprOfDuration(duration time.Duration) string { - return fmt.Sprintf("%.1fms", float32(duration)/float32(time.Millisecond)) -} diff --git a/core/timex/ticker.go b/core/timex/ticker.go deleted file mode 100644 index 44b126a..0000000 --- a/core/timex/ticker.go +++ /dev/null @@ -1,73 +0,0 @@ -package timex - -import ( - "errors" - "git.diulo.com/mogfee/kit/lang" - "time" -) - -var errTimeout = errors.New("timeout") - -type ( - Ticker interface { - Chan() <-chan time.Time - Stop() - } - - FakeTicker interface { - Ticker - Done() - Tick() - Wait(d time.Duration) error - } - - fakeTicker struct { - c chan time.Time - done chan lang.PlaceholderType - } - - realTicker struct { - *time.Ticker - } -) - -func NewTicker(d time.Duration) Ticker { - return &realTicker{ - Ticker: time.NewTicker(d), - } -} - -func (r *realTicker) Chan() <-chan time.Time { - return r.C -} -func NewFakeTicker() FakeTicker { - return &fakeTicker{ - c: make(chan time.Time, 1), - done: make(chan lang.PlaceholderType, 1), - } -} - -func (f *fakeTicker) Chan() <-chan time.Time { - return f.c -} - -func (f *fakeTicker) Stop() { - close(f.c) -} - -func (f *fakeTicker) Done() { - f.done <- lang.Placeholder -} - -func (f *fakeTicker) Tick() { - f.c <- time.Now() -} - -func (f *fakeTicker) Wait(d time.Duration) error { - select { - case <-time.After(d): - return errTimeout - case <-f.done: - return nil - } -} diff --git a/internal/encoding/encoding.go b/internal/encoding/encoding.go deleted file mode 100644 index 0ffbace..0000000 --- a/internal/encoding/encoding.go +++ /dev/null @@ -1,65 +0,0 @@ -package encoding - -import ( - "bytes" - "encoding/json" - "git.diulo.com/mogfee/kit/lang" - "github.com/pelletier/go-toml/v2" - "gopkg.in/yaml.v3" -) - -func TomlToJson(data []byte) ([]byte, error) { - var val any - if err := toml.NewDecoder(bytes.NewReader(data)).Decode(&val); err != nil { - return nil, err - } - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(val); err != nil { - return nil, err - } - return buf.Bytes(), nil -} -func YamlToJson(data []byte) ([]byte, error) { - var val any - if err := yaml.Unmarshal(data, &val); err != nil { - return nil, err - } - val = toStringKeyMap(val) - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(val); err != nil { - return nil, err - } - return buf.Bytes(), nil -} -func convertKeyToString(in map[any]any) map[string]any { - res := make(map[string]any) - for k, v := range in { - res[lang.Repr(k)] = toStringKeyMap(v) - } - return res -} - -func convertNumberToJsonNumber(in any) json.Number { - return json.Number(lang.Repr(in)) -} -func covertSlice(in []any) []any { - res := make([]any, len(in)) - for i, v := range in { - res[i] = toStringKeyMap(v) - } - return res -} -func toStringKeyMap(v any) any { - switch v := v.(type) { - case []any: - return covertSlice(v) - case map[any]any: - return convertKeyToString(v) - case bool, string: - return v - case int, uint, int8, uint8, int16, uint16, int32, uint32, int64, uint64, float32, float64: - return convertNumberToJsonNumber(v) - default: - return lang.Repr(v) - } -} diff --git a/internal/endpoint/endpoint.go b/internal/endpoint/endpoint.go deleted file mode 100644 index 160b694..0000000 --- a/internal/endpoint/endpoint.go +++ /dev/null @@ -1,34 +0,0 @@ -package endpoint - -import ( - "net/url" -) - -// NewEndpoint new an Endpoint URL. -func NewEndpoint(scheme, host string) *url.URL { - return &url.URL{Scheme: scheme, Host: host} -} - -// ParseEndpoint parses an Endpoint URL. -func ParseEndpoint(endpoints []string, scheme string) (string, error) { - for _, e := range endpoints { - u, err := url.Parse(e) - if err != nil { - return "", err - } - - if u.Scheme == scheme { - return u.Host, nil - } - } - return "", nil -} - -// Scheme is the scheme of endpoint url. -// examples: scheme="http",isSecure=true get "https" -func Scheme(scheme string, isSecure bool) string { - if isSecure { - return scheme + "s" - } - return scheme -} diff --git a/internal/endpoint/endpoint_test.go b/internal/endpoint/endpoint_test.go deleted file mode 100644 index c02878f..0000000 --- a/internal/endpoint/endpoint_test.go +++ /dev/null @@ -1,126 +0,0 @@ -package endpoint - -import ( - "net/url" - "reflect" - "testing" -) - -func TestNewEndpoint(t *testing.T) { - type args struct { - scheme string - host string - } - tests := []struct { - name string - args args - want *url.URL - }{ - { - name: "https://github.com/go-kratos/kratos/", - args: args{"https", "github.com/go-kratos/kratos/"}, - want: &url.URL{Scheme: "https", Host: "github.com/go-kratos/kratos/"}, - }, - { - name: "https://go-kratos.dev/", - args: args{"https", "go-kratos.dev/"}, - want: &url.URL{Scheme: "https", Host: "go-kratos.dev/"}, - }, - { - name: "https://www.google.com/", - args: args{"https", "www.google.com/"}, - want: &url.URL{Scheme: "https", Host: "www.google.com/"}, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if got := NewEndpoint(tt.args.scheme, tt.args.host); !reflect.DeepEqual(got, tt.want) { - t.Errorf("NewEndpoint() = %v, want %v", got, tt.want) - } - }) - } -} - -func TestParseEndpoint(t *testing.T) { - type args struct { - endpoints []string - scheme string - } - tests := []struct { - name string - args args - want string - wantErr bool - }{ - { - name: "kratos", - args: args{endpoints: []string{"https://github.com/go-kratos/kratos"}, scheme: "https"}, - want: "github.com", - wantErr: false, - }, - { - name: "test", - args: args{endpoints: []string{"http://go-kratos.dev/"}, scheme: "https"}, - want: "", - wantErr: false, - }, - { - name: "localhost:8080", - args: args{endpoints: []string{"grpcs://localhost:8080/"}, scheme: "grpcs"}, - want: "localhost:8080", - wantErr: false, - }, - { - name: "localhost:8081", - args: args{endpoints: []string{"grpcs://localhost:8080/"}, scheme: "grpc"}, - want: "", - wantErr: false, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got, err := ParseEndpoint(tt.args.endpoints, tt.args.scheme) - if (err != nil) != tt.wantErr { - t.Errorf("ParseEndpoint() error = %v, wantErr %v", err, tt.wantErr) - return - } - if got != tt.want { - t.Errorf("ParseEndpoint() got = %v, want %v", got, tt.want) - } - }) - } -} - -func TestSchema(t *testing.T) { - tests := []struct { - schema string - secure bool - want string - }{ - { - schema: "http", - secure: true, - want: "https", - }, - { - schema: "http", - secure: false, - want: "http", - }, - { - schema: "grpc", - secure: true, - want: "grpcs", - }, - { - schema: "grpc", - secure: false, - want: "grpc", - }, - } - for _, tt := range tests { - if got := Scheme(tt.schema, tt.secure); got != tt.want { - t.Errorf("Schema() = %v, want %v", got, tt.want) - } - } -} diff --git a/lang/lang.go b/lang/lang.go deleted file mode 100644 index 16e18f2..0000000 --- a/lang/lang.go +++ /dev/null @@ -1,71 +0,0 @@ -package lang - -import ( - "fmt" - "reflect" - "strconv" -) - -var Placeholder PlaceholderType - -type ( - AnyType = any - PlaceholderType struct{} -) - -func Repr(v any) string { - if v == nil { - return "" - } - switch vt := v.(type) { - case fmt.Stringer: - return vt.String() - } - val := reflect.ValueOf(v) - - if val.Kind() == reflect.Ptr && !val.IsNil() { - val = val.Elem() - } - return reprOfValue(val) -} - -func reprOfValue(val reflect.Value) string { - switch vt := val.Interface().(type) { - case bool: - return strconv.FormatBool(vt) - case error: - return vt.Error() - case float32: - return strconv.FormatFloat(float64(vt), 'f', -1, 32) - case float64: - return strconv.FormatFloat(vt, 'f', -1, 64) - case fmt.Stringer: - return vt.String() - case int: - return strconv.Itoa(vt) - case int8: - return strconv.Itoa(int(vt)) - case int16: - return strconv.Itoa(int(vt)) - case int32: - return strconv.Itoa(int(vt)) - case int64: - return strconv.FormatInt(vt, 10) - case string: - return vt - case uint: - return strconv.FormatUint(uint64(vt), 10) - case uint8: - return strconv.FormatUint(uint64(vt), 10) - case uint16: - return strconv.FormatUint(uint64(vt), 10) - case uint32: - return strconv.FormatUint(uint64(vt), 10) - case uint64: - return strconv.FormatUint(vt, 10) - case []byte: - return string(vt) - default: - return fmt.Sprint(val.Interface()) - } -} diff --git a/log/mq/nsq_test.go b/log/mq/nsq_test.go deleted file mode 100644 index 221d4d0..0000000 --- a/log/mq/nsq_test.go +++ /dev/null @@ -1,19 +0,0 @@ -package mq - -import ( - "context" - "fmt" - "git.diulo.com/mogfee/kit/log" - "testing" -) - -func Test_nsqLogger_Log(t *testing.T) { - nsqWriter := NewNsqLogger("localhost:4150", "app_log") - nsqWriter.Start() - logger := log.With(nsqWriter, - "ts", log.DefaultTimestamp, - "caller", log.DefaultCaller, - ) - logger.Log(log.LevelInfo, "user name ttt") - fmt.Println(nsqWriter.Shutdown(context.Background())) -} diff --git a/middleware/jwt/default.go b/middleware/jwt/default.go index 9f3f777..7f5a4d5 100644 --- a/middleware/jwt/default.go +++ b/middleware/jwt/default.go @@ -2,7 +2,6 @@ package jwt import ( "context" - "git.diulo.com/mogfee/kit/errors" "git.diulo.com/mogfee/kit/transport" "git.diulo.com/mogfee/kit/transport/http" "strings" @@ -54,5 +53,5 @@ func (j *JwtDefault) Validate(ctx context.Context, permission string, permission return nil } } - return errors.Forbidden("TOKEN_PERMISSION_BAD", "权限不足") + return errorx.Forbidden("TOKEN_PERMISSION_BAD", "权限不足") } diff --git a/middleware/jwt/jwt.go b/middleware/jwt/jwt.go index d7f1029..5ea42f2 100644 --- a/middleware/jwt/jwt.go +++ b/middleware/jwt/jwt.go @@ -2,7 +2,6 @@ package jwt import ( "context" - "git.diulo.com/mogfee/kit/errors" "git.diulo.com/mogfee/kit/middleware" ) @@ -61,7 +60,7 @@ func JWT(opts ...JwtOption) middleware.Middleware { // 解析token tokenStr := cfg.validate.GetToken(ctx, cfg.fromKey) if tokenStr == "" && needAuth { - return nil, errors.Unauthorized("NO_TOKEN", "") + return nil, errorx.Unauthorized("NO_TOKEN", "") } if tokenStr != "" { @@ -71,7 +70,7 @@ func JWT(opts ...JwtOption) middleware.Middleware { return err } if needAuth && userInfo.UserId == "" { - return errors.Unauthorized("TOKEN_BAD", "") + return errorx.Unauthorized("TOKEN_BAD", "") } if authKey != "" { if err = cfg.validate.Validate(ctx, authKey, userInfo.Permissions); err != nil { diff --git a/middleware/jwt/token.go b/middleware/jwt/token.go index cf50924..f02e458 100644 --- a/middleware/jwt/token.go +++ b/middleware/jwt/token.go @@ -2,7 +2,6 @@ package jwt import ( "encoding/json" - "git.diulo.com/mogfee/kit/errors" "git.diulo.com/mogfee/kit/internal/xuuid" "github.com/golang-jwt/jwt/v5" "time" @@ -59,16 +58,16 @@ func Parse(key string, tokenStr string) (*UserInfo, error) { } str, err := Decrypt(tokenStr, []byte(key), key) if err != nil { - return nil, errors.Unauthorized("TOKEN_ERROR", err.Error()) + return nil, errorx.Unauthorized("TOKEN_ERROR", err.Error()) } token, err := jwt.Parse(str, func(token *jwt.Token) (interface{}, error) { return []byte(key), nil }) if err != nil { - if errors.Is(err, jwt.ErrTokenExpired) { - return nil, errors.Unauthorized("TOKEN_EXPIRED", "") + if errorx.Is(err, jwt.ErrTokenExpired) { + return nil, errorx.Unauthorized("TOKEN_EXPIRED", "") } - return nil, errors.Unauthorized("TOKEN_ERROR", err.Error()) + return nil, errorx.Unauthorized("TOKEN_ERROR", err.Error()) } if token.Valid { @@ -77,11 +76,11 @@ func Parse(key string, tokenStr string) (*UserInfo, error) { }{} b, _ := json.Marshal(token.Claims) if err = json.Unmarshal(b, &row); err != nil { - return nil, errors.Unauthorized("TOKEN_ERROR", err.Error()) + return nil, errorx.Unauthorized("TOKEN_ERROR", err.Error()) } return row.Info, nil - } else if errors.Is(err, jwt.ErrTokenExpired) || errors.Is(err, jwt.ErrTokenNotValidYet) { - return nil, errors.Unauthorized("TOKEN_EXPIRED", "") + } else if errorx.Is(err, jwt.ErrTokenExpired) || errorx.Is(err, jwt.ErrTokenNotValidYet) { + return nil, errorx.Unauthorized("TOKEN_EXPIRED", "") } - return nil, errors.Unauthorized("TOKEN_ERROR", "") + return nil, errorx.Unauthorized("TOKEN_ERROR", "") } diff --git a/middleware/logger.go b/middleware/logger.go index 0d497d9..a78a427 100644 --- a/middleware/logger.go +++ b/middleware/logger.go @@ -2,10 +2,9 @@ package middleware import ( "context" - "git.diulo.com/mogfee/kit/log" ) -func Logger(logger log.Logger) Middleware { +func Logger(logger logx.Logger) Middleware { //helper:=log.NewHelper(logger) return func(handler Handler) Handler { return func(ctx context.Context, a any) (any, error) { diff --git a/middleware/prome/prome.go b/middleware/prome/prome.go index d94ee2d..04ab8e3 100644 --- a/middleware/prome/prome.go +++ b/middleware/prome/prome.go @@ -3,7 +3,6 @@ package prome import ( "context" "fmt" - "git.diulo.com/mogfee/kit/errors" "git.diulo.com/mogfee/kit/middleware" "git.diulo.com/mogfee/kit/transport" "github.com/prometheus/client_golang/prometheus" @@ -66,7 +65,7 @@ func Prometheus() middleware.Middleware { code := "500" if err != nil { switch aerr := err.(type) { - case *errors.Error: + case *errorx.Error: code = fmt.Sprintf("%d", aerr.Code) default: code = "500" diff --git a/middleware/validate/validate.go b/middleware/validate/validate.go index a70f1a7..12772f3 100644 --- a/middleware/validate/validate.go +++ b/middleware/validate/validate.go @@ -2,7 +2,6 @@ package validate import ( "context" - "git.diulo.com/mogfee/kit/errors" "git.diulo.com/mogfee/kit/middleware" "strings" ) @@ -19,7 +18,7 @@ func Server() middleware.Middleware { Reason() string }); ok { field := a.Field() - return nil, errors.BadRequest("InvalidArgument", "").WithMetadata(map[string]string{ + return nil, errorx.BadRequest("InvalidArgument", "").WithMetadata(map[string]string{ strings.ToLower(field[0:1]) + field[1:]: a.Reason(), }) } diff --git a/options.go b/options.go index 40998fd..548e0b3 100644 --- a/options.go +++ b/options.go @@ -2,7 +2,6 @@ package kit import ( "context" - "git.diulo.com/mogfee/kit/log" "git.diulo.com/mogfee/kit/registry" "git.diulo.com/mogfee/kit/transport" "net/url" @@ -21,7 +20,7 @@ type options struct { ctx context.Context sigs []os.Signal - logger log.Logger + logger logx.Logger registrar registry.Registrar registrarTimeout time.Duration stopTimeout time.Duration @@ -64,7 +63,7 @@ func Context(ctx context.Context) Option { } // Logger with service logger. -func Logger(logger log.Logger) Option { +func Logger(logger logx.Logger) Option { return func(o *options) { o.logger = logger } } diff --git a/proto/v1/user.pb.go b/proto/v1/user.pb.go deleted file mode 100644 index a67a0fe..0000000 --- a/proto/v1/user.pb.go +++ /dev/null @@ -1,221 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.28.1 -// protoc v3.18.1 -// source: user.proto - -package user - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type Request struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserId int64 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` - UserPassword string `protobuf:"bytes,2,opt,name=user_password,json=userPassword,proto3" json:"user_password,omitempty"` -} - -func (x *Request) Reset() { - *x = Request{} - if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Request) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Request) ProtoMessage() {} - -func (x *Request) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Request.ProtoReflect.Descriptor instead. -func (*Request) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{0} -} - -func (x *Request) GetUserId() int64 { - if x != nil { - return x.UserId - } - return 0 -} - -func (x *Request) GetUserPassword() string { - if x != nil { - return x.UserPassword - } - return "" -} - -type Response struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // 密钥 - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` -} - -func (x *Response) Reset() { - *x = Response{} - if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Response) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Response) ProtoMessage() {} - -func (x *Response) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Response.ProtoReflect.Descriptor instead. -func (*Response) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{1} -} - -func (x *Response) GetToken() string { - if x != nil { - return x.Token - } - return "" -} - -var File_user_proto protoreflect.FileDescriptor - -var file_user_proto_rawDesc = []byte{ - 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x63, 0x6f, - 0x6d, 0x2e, 0x64, 0x69, 0x75, 0x6c, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x22, 0x47, 0x0a, 0x07, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x23, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x50, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x22, 0x20, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x32, 0x41, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x39, - 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x69, 0x75, - 0x6c, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, - 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x69, 0x75, 0x6c, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x09, 0x5a, 0x07, 0x2e, 0x2f, 0x3b, - 0x75, 0x73, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_user_proto_rawDescOnce sync.Once - file_user_proto_rawDescData = file_user_proto_rawDesc -) - -func file_user_proto_rawDescGZIP() []byte { - file_user_proto_rawDescOnce.Do(func() { - file_user_proto_rawDescData = protoimpl.X.CompressGZIP(file_user_proto_rawDescData) - }) - return file_user_proto_rawDescData -} - -var file_user_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_user_proto_goTypes = []interface{}{ - (*Request)(nil), // 0: com.diulo.api.request - (*Response)(nil), // 1: com.diulo.api.response -} -var file_user_proto_depIdxs = []int32{ - 0, // 0: com.diulo.api.user.list:input_type -> com.diulo.api.request - 1, // 1: com.diulo.api.user.list:output_type -> com.diulo.api.response - 1, // [1:2] is the sub-list for method output_type - 0, // [0:1] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_user_proto_init() } -func file_user_proto_init() { - if File_user_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_user_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Request); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_user_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Response); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_user_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_user_proto_goTypes, - DependencyIndexes: file_user_proto_depIdxs, - MessageInfos: file_user_proto_msgTypes, - }.Build() - File_user_proto = out.File - file_user_proto_rawDesc = nil - file_user_proto_goTypes = nil - file_user_proto_depIdxs = nil -} diff --git a/proto/v1/user.pb.validate.go b/proto/v1/user.pb.validate.go deleted file mode 100644 index b62fee9..0000000 --- a/proto/v1/user.pb.validate.go +++ /dev/null @@ -1,239 +0,0 @@ -// Code generated by protoc-gen-validate. DO NOT EDIT. -// source: user.proto - -package user - -import ( - "bytes" - "errors" - "fmt" - "net" - "net/mail" - "net/url" - "regexp" - "sort" - "strings" - "time" - "unicode/utf8" - - "google.golang.org/protobuf/types/known/anypb" -) - -// ensure the imports are used -var ( - _ = bytes.MinRead - _ = errors.New("") - _ = fmt.Print - _ = utf8.UTFMax - _ = (*regexp.Regexp)(nil) - _ = (*strings.Reader)(nil) - _ = net.IPv4len - _ = time.Duration(0) - _ = (*url.URL)(nil) - _ = (*mail.Address)(nil) - _ = anypb.Any{} - _ = sort.Sort -) - -// Validate checks the field values on Request with the rules defined in the -// proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *Request) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Request with the rules defined in the -// proto definition for this message. If any rules are violated, the result is -// a list of violation errors wrapped in RequestMultiError, or nil if none found. -func (m *Request) ValidateAll() error { - return m.validate(true) -} - -func (m *Request) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for UserId - - // no validation rules for UserPassword - - if len(errors) > 0 { - return RequestMultiError(errors) - } - - return nil -} - -// RequestMultiError is an error wrapping multiple validation errors returned -// by Request.ValidateAll() if the designated constraints aren't met. -type RequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m RequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m RequestMultiError) AllErrors() []error { return m } - -// RequestValidationError is the validation error returned by Request.Validate -// if the designated constraints aren't met. -type RequestValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e RequestValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e RequestValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e RequestValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e RequestValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e RequestValidationError) ErrorName() string { return "RequestValidationError" } - -// Error satisfies the builtin error interface -func (e RequestValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sRequest.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = RequestValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = RequestValidationError{} - -// Validate checks the field values on Response with the rules defined in the -// proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *Response) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Response with the rules defined in -// the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in ResponseMultiError, or nil -// if none found. -func (m *Response) ValidateAll() error { - return m.validate(true) -} - -func (m *Response) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for Token - - if len(errors) > 0 { - return ResponseMultiError(errors) - } - - return nil -} - -// ResponseMultiError is an error wrapping multiple validation errors returned -// by Response.ValidateAll() if the designated constraints aren't met. -type ResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ResponseMultiError) AllErrors() []error { return m } - -// ResponseValidationError is the validation error returned by -// Response.Validate if the designated constraints aren't met. -type ResponseValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e ResponseValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e ResponseValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e ResponseValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e ResponseValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e ResponseValidationError) ErrorName() string { return "ResponseValidationError" } - -// Error satisfies the builtin error interface -func (e ResponseValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sResponse.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = ResponseValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = ResponseValidationError{} diff --git a/proto/v1/user.ts b/proto/v1/user.ts deleted file mode 100644 index 4e123fc..0000000 --- a/proto/v1/user.ts +++ /dev/null @@ -1,15 +0,0 @@ -// http.prefix:/ -// @ts-ignore -import {Config,http} from "./http"; -export interface request { - userId: number - userPassword: string -} - -export interface response { - //密钥 - token: string -} - -export class userService{ -} diff --git a/proto/v1/user_grpc.pb.go b/proto/v1/user_grpc.pb.go deleted file mode 100644 index dfc3b19..0000000 --- a/proto/v1/user_grpc.pb.go +++ /dev/null @@ -1,109 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v3.18.1 -// source: user.proto - -package user - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -const ( - User_List_FullMethodName = "/com.diulo.api.user/list" -) - -// UserClient is the client API for User service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type UserClient interface { - List(ctx context.Context, in *Request, opts ...grpc.CallOption) (*Response, error) -} - -type userClient struct { - cc grpc.ClientConnInterface -} - -func NewUserClient(cc grpc.ClientConnInterface) UserClient { - return &userClient{cc} -} - -func (c *userClient) List(ctx context.Context, in *Request, opts ...grpc.CallOption) (*Response, error) { - out := new(Response) - err := c.cc.Invoke(ctx, User_List_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// UserServer is the server API for User service. -// All implementations must embed UnimplementedUserServer -// for forward compatibility -type UserServer interface { - List(context.Context, *Request) (*Response, error) - mustEmbedUnimplementedUserServer() -} - -// UnimplementedUserServer must be embedded to have forward compatible implementations. -type UnimplementedUserServer struct { -} - -func (UnimplementedUserServer) List(context.Context, *Request) (*Response, error) { - return nil, status.Errorf(codes.Unimplemented, "method List not implemented") -} -func (UnimplementedUserServer) mustEmbedUnimplementedUserServer() {} - -// UnsafeUserServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to UserServer will -// result in compilation errors. -type UnsafeUserServer interface { - mustEmbedUnimplementedUserServer() -} - -func RegisterUserServer(s grpc.ServiceRegistrar, srv UserServer) { - s.RegisterService(&User_ServiceDesc, srv) -} - -func _User_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Request) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserServer).List(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: User_List_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserServer).List(ctx, req.(*Request)) - } - return interceptor(ctx, in, info, handler) -} - -// User_ServiceDesc is the grpc.ServiceDesc for User service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var User_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "com.diulo.api.user", - HandlerType: (*UserServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "list", - Handler: _User_List_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "user.proto", -} diff --git a/proto/v1/user_http.pb.go b/proto/v1/user_http.pb.go deleted file mode 100644 index b81a416..0000000 --- a/proto/v1/user_http.pb.go +++ /dev/null @@ -1,14 +0,0 @@ -package user - -import ( - "context" - "git.diulo.com/mogfee/kit/transport/http" -) - -type UserHTTPServer interface { - List(context.Context, *Request) (*Response, error) -} - -func RegisterUserHTTPServer(s *http.Server, srv UserServer) { - r := s.Route("/") -} diff --git a/response/response.go b/response/response.go index cbe71bc..76f5b39 100644 --- a/response/response.go +++ b/response/response.go @@ -2,7 +2,6 @@ package response import ( "encoding/json" - "git.diulo.com/mogfee/kit/errors" "github.com/gin-gonic/gin" "github.com/go-playground/form" "net/http" @@ -53,7 +52,7 @@ func (s *result) Error(err error) { }) return } - gs := errors.FromError(err) + gs := errorx.FromError(err) s.Result(int(gs.Code), gs.Reason, gs.Message, gs.Metadata) } diff --git a/selector/selector.go b/selector/selector.go index 3ab0c95..d893a66 100644 --- a/selector/selector.go +++ b/selector/selector.go @@ -2,10 +2,9 @@ package selector import ( "context" - "git.diulo.com/mogfee/kit/errors" ) -var ErrNoAvailable = errors.ServiceUnavailable("no_available_node", "") +var ErrNoAvailable = errorx.ServiceUnavailable("no_available_node", "") type Selector interface { Rebalancer diff --git a/transport/http/binding/bind.go b/transport/http/binding/bind.go index 796f442..6413e13 100644 --- a/transport/http/binding/bind.go +++ b/transport/http/binding/bind.go @@ -3,14 +3,13 @@ package binding import ( "git.diulo.com/mogfee/kit/encoding" "git.diulo.com/mogfee/kit/encoding/form" - "git.diulo.com/mogfee/kit/errors" "net/http" "net/url" ) func BindQuery(vars url.Values, target any) error { if err := encoding.GetCodec(form.Name).Unmarshal([]byte(vars.Encode()), target); err != nil { - return errors.BadRequest("CODEC", err.Error()) + return errorx.BadRequest("CODEC", err.Error()) } return nil } @@ -19,7 +18,7 @@ func BindForm(req *http.Request, target any) error { return err } if err := encoding.GetCodec(form.Name).Unmarshal([]byte(req.Form.Encode()), target); err != nil { - return errors.BadRequest("CODEC", err.Error()) + return errorx.BadRequest("CODEC", err.Error()) } return nil } diff --git a/transport/http/client.go b/transport/http/client.go index bdc7c45..24760b9 100644 --- a/transport/http/client.go +++ b/transport/http/client.go @@ -6,7 +6,6 @@ import ( "crypto/tls" "fmt" "git.diulo.com/mogfee/kit/encoding" - "git.diulo.com/mogfee/kit/errors" "git.diulo.com/mogfee/kit/internal/host" "git.diulo.com/mogfee/kit/internal/httputil" "git.diulo.com/mogfee/kit/middleware" @@ -260,7 +259,7 @@ func (client *Client) do(req *http.Request) (*http.Response, error) { node selector.Node ) if node, done, err = client.selector.Select(req.Context(), selector.WithNodeFilter(client.opts.nodeFilters...)); err != nil { - return nil, errors.ServiceUnavailable("NODE_NOT_FOUND", err.Error()) + return nil, errorx.ServiceUnavailable("NODE_NOT_FOUND", err.Error()) } if client.insecure { req.URL.Scheme = "http" @@ -307,13 +306,13 @@ func DefaultErrorDecoder(ctx context.Context, res *http.Response) error { data, err := io.ReadAll(res.Body) defer res.Body.Close() if err == nil { - e := new(errors.Error) + e := new(errorx.Error) if err = CodecForResponse(res).Unmarshal(data, e); err == nil { e.Code = int32(res.StatusCode) return e } } - return errors.Newf(res.StatusCode, errors.UnknownReason, "").WithCause(err) + return errorx.Newf(res.StatusCode, errorx.UnknownReason, "").WithCause(err) } func CodecForResponse(r *http.Response) encoding.Codec { codec := encoding.GetCodec(httputil.ContentSubtype(r.Request.Header.Get("Content-Type"))) diff --git a/transport/http/codec.go b/transport/http/codec.go index 3ad3ade..a67d893 100644 --- a/transport/http/codec.go +++ b/transport/http/codec.go @@ -4,7 +4,6 @@ import ( "bytes" "fmt" "git.diulo.com/mogfee/kit/encoding" - "git.diulo.com/mogfee/kit/errors" "git.diulo.com/mogfee/kit/internal/httputil" "git.diulo.com/mogfee/kit/transport/http/binding" "github.com/gorilla/mux" @@ -39,18 +38,18 @@ func DefaultRequestQuery(r *http.Request, v any) error { func DefaultRequestDecoder(r *http.Request, v any) error { codec, ok := CodeForRequest(r, "Content-Type") if !ok { - return errors.BadRequest("CODEC", fmt.Sprintf("unregister Content-Type: %s", codec)) + return errorx.BadRequest("CODEC", fmt.Sprintf("unregister Content-Type: %s", codec)) } data, err := io.ReadAll(r.Body) if err != nil { - return errors.BadRequest("CODEC", err.Error()) + return errorx.BadRequest("CODEC", err.Error()) } r.Body = io.NopCloser(bytes.NewBuffer(data)) if len(data) == 0 { return nil } if err = codec.Unmarshal(data, v); err != nil { - return errors.BadRequest("CODEC", err.Error()) + return errorx.BadRequest("CODEC", err.Error()) } return nil } @@ -73,7 +72,7 @@ func DefaultResponseEncoder(w http.ResponseWriter, r *http.Request, v any) error return err } func DefaultErrorEncoder(w http.ResponseWriter, r *http.Request, err error) { - se := errors.FromError(err) + se := errorx.FromError(err) codec, _ := CodeForRequest(r, "Accept") body, err := codec.Marshal(se) if err != nil { diff --git a/transport/http/server.go b/transport/http/server.go index d073c6d..6e6bce8 100644 --- a/transport/http/server.go +++ b/transport/http/server.go @@ -7,7 +7,6 @@ import ( "git.diulo.com/mogfee/kit/internal/endpoint" "git.diulo.com/mogfee/kit/internal/host" "git.diulo.com/mogfee/kit/internal/matcher" - "git.diulo.com/mogfee/kit/log" "git.diulo.com/mogfee/kit/middleware" "git.diulo.com/mogfee/kit/transport" "net" @@ -50,7 +49,7 @@ func Timeout(timeout time.Duration) ServerOption { // Logger with server logger. // Deprecated: use global logger instead. -func Logger(logger log.Logger) ServerOption { +func Logger(logger logx.Logger) ServerOption { return func(s *Server) {} } @@ -259,7 +258,7 @@ func (s *Server) Start(ctx context.Context) error { s.BaseContext = func(listener net.Listener) context.Context { return ctx } - log.Infof("[HTTP] server listening on: %s", s.endpoint) + logx.Infof("[HTTP] server listening on: %s", s.endpoint) var err error if s.tlsConf != nil { err = s.ServeTLS(s.lis, "", "") @@ -273,7 +272,7 @@ func (s *Server) Start(ctx context.Context) error { } func (s *Server) Stop(ctx context.Context) error { - log.Info("[HTTP] server stopping") + logx.Info("[HTTP] server stopping") return s.Shutdown(ctx) } func (s *Server) filter() mux.MiddlewareFunc { diff --git a/user.ts b/user.ts deleted file mode 100644 index 77f703c..0000000 --- a/user.ts +++ /dev/null @@ -1,15 +0,0 @@ -//none -// @ts-ignore -import {Config,http} from "./http"; -export interface request { - userId: number - userPassword: string -} - -export interface response { - //密钥 - token: string -} - -export class userService{ -}