Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
c31b73f937 | |||
aee2908ed1 | |||
f85cbcdca2 | |||
8edb53d141 |
12
.gitignore
vendored
12
.gitignore
vendored
@@ -1,3 +1,9 @@
|
|||||||
|
# Develop tools
|
||||||
|
/.vscode/
|
||||||
|
/.idea/
|
||||||
|
.idea
|
||||||
|
.vscode
|
||||||
|
|
||||||
# Binaries for programs and plugins
|
# Binaries for programs and plugins
|
||||||
*.exe
|
*.exe
|
||||||
*.exe~
|
*.exe~
|
||||||
@@ -5,6 +11,12 @@
|
|||||||
*.so
|
*.so
|
||||||
*.dylib
|
*.dylib
|
||||||
|
|
||||||
|
# Folders
|
||||||
|
_obj
|
||||||
|
_test
|
||||||
|
_build
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
# Test binary, built with `go test -c`
|
# Test binary, built with `go test -c`
|
||||||
*.test
|
*.test
|
||||||
|
|
||||||
|
33
requestid.go
33
requestid.go
@@ -2,26 +2,13 @@ package requestid // import "go.unistack.org/micro-wrapper-requestid/v3"
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"net/textproto"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"go.unistack.org/micro/v3/client"
|
"go.unistack.org/micro/v3/client"
|
||||||
"go.unistack.org/micro/v3/logger"
|
|
||||||
"go.unistack.org/micro/v3/metadata"
|
"go.unistack.org/micro/v3/metadata"
|
||||||
"go.unistack.org/micro/v3/server"
|
"go.unistack.org/micro/v3/server"
|
||||||
"go.unistack.org/micro/v3/util/id"
|
"go.unistack.org/micro/v3/util/id"
|
||||||
|
"net/textproto"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
|
||||||
requestIDLog := strings.ToLower(DefaultMetadataKey)
|
|
||||||
logger.DefaultContextAttrFuncs = append(logger.DefaultContextAttrFuncs, func(ctx context.Context) []interface{} {
|
|
||||||
if v, ok := ctx.Value(XRequestIDKey{}).(string); ok {
|
|
||||||
return []interface{}{requestIDLog, v}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
type XRequestIDKey struct{}
|
type XRequestIDKey struct{}
|
||||||
|
|
||||||
// DefaultMetadataKey contains metadata key
|
// DefaultMetadataKey contains metadata key
|
||||||
@@ -81,11 +68,13 @@ var DefaultMetadataFunc = func(ctx context.Context) (context.Context, error) {
|
|||||||
return ctx, nil
|
return ctx, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type Hook struct{}
|
type hook struct{}
|
||||||
|
|
||||||
var Wrapper = &Hook{}
|
func NewHook() *hook {
|
||||||
|
return &hook{}
|
||||||
|
}
|
||||||
|
|
||||||
func (w *Hook) ServerSubscriber(next server.FuncSubHandler) server.FuncSubHandler {
|
func (w *hook) ServerSubscriber(next server.FuncSubHandler) server.FuncSubHandler {
|
||||||
return func(ctx context.Context, msg server.Message) error {
|
return func(ctx context.Context, msg server.Message) error {
|
||||||
var err error
|
var err error
|
||||||
if xid, ok := msg.Header()[DefaultMetadataKey]; ok {
|
if xid, ok := msg.Header()[DefaultMetadataKey]; ok {
|
||||||
@@ -98,7 +87,7 @@ func (w *Hook) ServerSubscriber(next server.FuncSubHandler) server.FuncSubHandle
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *Hook) ServerHandler(next server.FuncHandler) server.FuncHandler {
|
func (w *hook) ServerHandler(next server.FuncHandler) server.FuncHandler {
|
||||||
return func(ctx context.Context, req server.Request, rsp interface{}) error {
|
return func(ctx context.Context, req server.Request, rsp interface{}) error {
|
||||||
var err error
|
var err error
|
||||||
if ctx, err = DefaultMetadataFunc(ctx); err != nil {
|
if ctx, err = DefaultMetadataFunc(ctx); err != nil {
|
||||||
@@ -108,7 +97,7 @@ func (w *Hook) ServerHandler(next server.FuncHandler) server.FuncHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *Hook) ClientBatchPublish(next client.FuncBatchPublish) client.FuncBatchPublish {
|
func (w *hook) ClientBatchPublish(next client.FuncBatchPublish) client.FuncBatchPublish {
|
||||||
return func(ctx context.Context, msgs []client.Message, opts ...client.PublishOption) error {
|
return func(ctx context.Context, msgs []client.Message, opts ...client.PublishOption) error {
|
||||||
var err error
|
var err error
|
||||||
if ctx, err = DefaultMetadataFunc(ctx); err != nil {
|
if ctx, err = DefaultMetadataFunc(ctx); err != nil {
|
||||||
@@ -118,7 +107,7 @@ func (w *Hook) ClientBatchPublish(next client.FuncBatchPublish) client.FuncBatch
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *Hook) ClientPublish(next client.FuncPublish) client.FuncPublish {
|
func (w *hook) ClientPublish(next client.FuncPublish) client.FuncPublish {
|
||||||
return func(ctx context.Context, msg client.Message, opts ...client.PublishOption) error {
|
return func(ctx context.Context, msg client.Message, opts ...client.PublishOption) error {
|
||||||
var err error
|
var err error
|
||||||
if ctx, err = DefaultMetadataFunc(ctx); err != nil {
|
if ctx, err = DefaultMetadataFunc(ctx); err != nil {
|
||||||
@@ -128,7 +117,7 @@ func (w *Hook) ClientPublish(next client.FuncPublish) client.FuncPublish {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *Hook) ClientCall(next client.FuncCall) client.FuncCall {
|
func (w *hook) ClientCall(next client.FuncCall) client.FuncCall {
|
||||||
return func(ctx context.Context, req client.Request, rsp interface{}, opts ...client.CallOption) error {
|
return func(ctx context.Context, req client.Request, rsp interface{}, opts ...client.CallOption) error {
|
||||||
var err error
|
var err error
|
||||||
if ctx, err = DefaultMetadataFunc(ctx); err != nil {
|
if ctx, err = DefaultMetadataFunc(ctx); err != nil {
|
||||||
@@ -138,7 +127,7 @@ func (w *Hook) ClientCall(next client.FuncCall) client.FuncCall {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *Hook) ClientStream(next client.FuncStream) client.FuncStream {
|
func (w *hook) ClientStream(next client.FuncStream) client.FuncStream {
|
||||||
return func(ctx context.Context, req client.Request, opts ...client.CallOption) (client.Stream, error) {
|
return func(ctx context.Context, req client.Request, opts ...client.CallOption) (client.Stream, error) {
|
||||||
var err error
|
var err error
|
||||||
if ctx, err = DefaultMetadataFunc(ctx); err != nil {
|
if ctx, err = DefaultMetadataFunc(ctx); err != nil {
|
||||||
|
Reference in New Issue
Block a user