parent
ff91b9782b
commit
48f78863a4
53 changed files with 73 additions and 1088 deletions
@ -1,4 +1,4 @@ |
|||||||
package errors |
package errorx |
||||||
|
|
||||||
import "bytes" |
import "bytes" |
||||||
|
|
@ -1,4 +1,4 @@ |
|||||||
package errors |
package errorx |
||||||
|
|
||||||
import ( |
import ( |
||||||
"errors" |
"errors" |
@ -1,5 +1,5 @@ |
|||||||
// nolint:gomnd
|
// nolint:gomnd
|
||||||
package errors |
package errorx |
||||||
|
|
||||||
// BadRequest new BadRequest error that is mapped to a 400 response.
|
// BadRequest new BadRequest error that is mapped to a 400 response.
|
||||||
func BadRequest(reason, message string) *Error { |
func BadRequest(reason, message string) *Error { |
@ -1,4 +1,4 @@ |
|||||||
package errors |
package errorx |
||||||
|
|
||||||
import ( |
import ( |
||||||
stderrors "errors" |
stderrors "errors" |
@ -1,4 +1,4 @@ |
|||||||
package xgo |
package gox |
||||||
|
|
||||||
import "fmt" |
import "fmt" |
||||||
|
|
@ -1,4 +1,4 @@ |
|||||||
package log |
package logx |
||||||
|
|
||||||
type FilterOption func(*Filter) |
type FilterOption func(*Filter) |
||||||
|
|
@ -1,4 +1,4 @@ |
|||||||
package log |
package logx |
||||||
|
|
||||||
import ( |
import ( |
||||||
"testing" |
"testing" |
@ -1,4 +1,4 @@ |
|||||||
package log |
package logx |
||||||
|
|
||||||
import ( |
import ( |
||||||
"context" |
"context" |
@ -1,4 +1,4 @@ |
|||||||
package log |
package logx |
||||||
|
|
||||||
import ( |
import ( |
||||||
"testing" |
"testing" |
@ -1,4 +1,4 @@ |
|||||||
package log |
package logx |
||||||
|
|
||||||
import ( |
import ( |
||||||
"context" |
"context" |
@ -1,4 +1,4 @@ |
|||||||
package log |
package logx |
||||||
|
|
||||||
import "testing" |
import "testing" |
||||||
|
|
@ -1,4 +1,4 @@ |
|||||||
package log |
package logx |
||||||
|
|
||||||
import "strings" |
import "strings" |
||||||
|
|
@ -1,4 +1,4 @@ |
|||||||
package log |
package logx |
||||||
|
|
||||||
import ( |
import ( |
||||||
"context" |
"context" |
@ -1,4 +1,4 @@ |
|||||||
package log |
package logx |
||||||
|
|
||||||
import ( |
import ( |
||||||
"testing" |
"testing" |
@ -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())) |
||||||
|
} |
@ -1,4 +1,4 @@ |
|||||||
package log |
package logx |
||||||
|
|
||||||
import ( |
import ( |
||||||
"bytes" |
"bytes" |
@ -1,4 +1,4 @@ |
|||||||
package log |
package logx |
||||||
|
|
||||||
import ( |
import ( |
||||||
"context" |
"context" |
@ -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)) |
|
||||||
} |
|
@ -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 |
|
||||||
} |
|
||||||
} |
|
@ -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) |
|
||||||
} |
|
||||||
} |
|
@ -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 |
|
||||||
} |
|
@ -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) |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -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()) |
|
||||||
} |
|
||||||
} |
|
@ -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())) |
|
||||||
} |
|
@ -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 |
|
||||||
} |
|
@ -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{} |
|
@ -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{ |
|
||||||
} |
|
@ -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", |
|
||||||
} |
|
@ -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("/") |
|
||||||
} |
|
Loading…
Reference in new issue