use metadata.Metadata (#8)
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
parent
e0ef8b2953
commit
daffa9e548
@ -5,6 +5,8 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -57,7 +59,7 @@ type Account struct {
|
||||
// Issuer of the account
|
||||
Issuer string `json:"issuer"`
|
||||
// Any other associated metadata
|
||||
Metadata map[string]string `json:"metadata"`
|
||||
Metadata metadata.Metadata `json:"metadata"`
|
||||
// Scopes the account has access to
|
||||
Scopes []string `json:"scopes"`
|
||||
// Secret for the account, e.g. the password
|
||||
|
@ -5,6 +5,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/unistack-org/micro/v3/logger"
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
"github.com/unistack-org/micro/v3/store"
|
||||
)
|
||||
|
||||
@ -102,7 +103,7 @@ func LoginURL(url string) Option {
|
||||
|
||||
type GenerateOptions struct {
|
||||
// Metadata associated with the account
|
||||
Metadata map[string]string
|
||||
Metadata metadata.Metadata
|
||||
// Scopes the account has access too
|
||||
Scopes []string
|
||||
// Provider of the account, e.g. oauth
|
||||
@ -132,9 +133,9 @@ func WithType(t string) GenerateOption {
|
||||
}
|
||||
|
||||
// WithMetadata for the generated account
|
||||
func WithMetadata(md map[string]string) GenerateOption {
|
||||
func WithMetadata(md metadata.Metadata) GenerateOption {
|
||||
return func(o *GenerateOptions) {
|
||||
o.Metadata = md
|
||||
o.Metadata = metadata.Copy(md)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,11 @@
|
||||
// Package broker is an interface used for asynchronous messaging
|
||||
package broker
|
||||
|
||||
import "context"
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
)
|
||||
|
||||
var (
|
||||
DefaultBroker Broker = NewBroker()
|
||||
@ -32,7 +36,7 @@ type Event interface {
|
||||
|
||||
// Message is used to transfer data
|
||||
type Message struct {
|
||||
Header map[string]string // contains message metadata
|
||||
Header metadata.Metadata // contains message metadata
|
||||
Body []byte // contains message body
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/unistack-org/micro/v3/codec"
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -57,7 +58,7 @@ type Response interface {
|
||||
// Read the response
|
||||
Codec() codec.Reader
|
||||
// read the header
|
||||
Header() map[string]string
|
||||
Header() metadata.Metadata
|
||||
// Read the undecoded response
|
||||
Read() ([]byte, error)
|
||||
}
|
||||
|
@ -66,14 +66,14 @@ func (n *noopRequest) Stream() bool {
|
||||
|
||||
type noopResponse struct {
|
||||
codec codec.Reader
|
||||
header map[string]string
|
||||
header metadata.Metadata
|
||||
}
|
||||
|
||||
func (n *noopResponse) Codec() codec.Reader {
|
||||
return n.codec
|
||||
}
|
||||
|
||||
func (n *noopResponse) Header() map[string]string {
|
||||
func (n *noopResponse) Header() metadata.Metadata {
|
||||
return n.header
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,8 @@ package codec
|
||||
import (
|
||||
"errors"
|
||||
"io"
|
||||
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -67,6 +69,6 @@ type Message struct {
|
||||
Error string
|
||||
|
||||
// The values read from the socket
|
||||
Header map[string]string
|
||||
Header metadata.Metadata
|
||||
Body []byte
|
||||
}
|
||||
|
@ -11,6 +11,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/unistack-org/micro/v3/debug/log"
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
"github.com/unistack-org/micro/v3/util/kubernetes/client"
|
||||
)
|
||||
|
||||
@ -89,7 +90,7 @@ func (k *klog) parse(line string) log.Record {
|
||||
if err := json.Unmarshal([]byte(line), &record); err != nil {
|
||||
record.Timestamp = time.Now().UTC()
|
||||
record.Message = line
|
||||
record.Metadata = make(map[string]string)
|
||||
record.Metadata = metadata.New(1)
|
||||
}
|
||||
|
||||
record.Metadata["service"] = k.Options.Name
|
||||
|
@ -5,6 +5,8 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -29,7 +31,7 @@ type Record struct {
|
||||
// Timestamp of logged event
|
||||
Timestamp time.Time `json:"timestamp"`
|
||||
// Metadata to enrich log record
|
||||
Metadata map[string]string `json:"metadata"`
|
||||
Metadata metadata.Metadata `json:"metadata"`
|
||||
// Value contains log entry
|
||||
Message interface{} `json:"message"`
|
||||
}
|
||||
|
@ -6,6 +6,8 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -36,7 +38,7 @@ type Event struct {
|
||||
// Timestamp of the event
|
||||
Timestamp time.Time
|
||||
// Metadata contains the encoded event was indexed by
|
||||
Metadata map[string]string
|
||||
Metadata metadata.Metadata
|
||||
// Payload contains the encoded message
|
||||
Payload []byte
|
||||
}
|
||||
|
@ -1,11 +1,15 @@
|
||||
package events
|
||||
|
||||
import "time"
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
)
|
||||
|
||||
// PublishOptions contains all the options which can be provided when publishing an event
|
||||
type PublishOptions struct {
|
||||
// Metadata contains any keys which can be used to query the data, for example a customer id
|
||||
Metadata map[string]string
|
||||
Metadata metadata.Metadata
|
||||
// Timestamp to set for the event, if the timestamp is a zero value, the current time will be used
|
||||
Timestamp time.Time
|
||||
}
|
||||
@ -14,9 +18,9 @@ type PublishOptions struct {
|
||||
type PublishOption func(o *PublishOptions)
|
||||
|
||||
// WithMetadata sets the Metadata field on PublishOptions
|
||||
func WithMetadata(md map[string]string) PublishOption {
|
||||
func WithMetadata(md metadata.Metadata) PublishOption {
|
||||
return func(o *PublishOptions) {
|
||||
o.Metadata = md
|
||||
o.Metadata = metadata.Copy(md)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,8 @@ package metrics
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
)
|
||||
|
||||
// NoopReporter is an noop implementation of Reporter:
|
||||
@ -25,17 +27,17 @@ func (r *noopReporter) Init(opts ...Option) error {
|
||||
}
|
||||
|
||||
// Count implements the Reporter interface Count method:
|
||||
func (r *noopReporter) Count(metricName string, value int64, tags Tags) error {
|
||||
func (r *noopReporter) Count(metricName string, value int64, md metadata.Metadata) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Gauge implements the Reporter interface Gauge method:
|
||||
func (r *noopReporter) Gauge(metricName string, value float64, tags Tags) error {
|
||||
func (r *noopReporter) Gauge(metricName string, value float64, md metadata.Metadata) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Timing implements the Reporter interface Timing method:
|
||||
func (r *noopReporter) Timing(metricName string, value time.Duration, tags Tags) error {
|
||||
func (r *noopReporter) Timing(metricName string, value time.Duration, md metadata.Metadata) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,9 @@
|
||||
package metrics
|
||||
|
||||
import "github.com/unistack-org/micro/v3/logger"
|
||||
import (
|
||||
"github.com/unistack-org/micro/v3/logger"
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
)
|
||||
|
||||
var (
|
||||
// The Prometheus metrics will be made available on this port:
|
||||
@ -18,7 +21,7 @@ type Option func(*Options)
|
||||
type Options struct {
|
||||
Address string
|
||||
Path string
|
||||
DefaultTags Tags
|
||||
DefaultTags metadata.Metadata
|
||||
TimingObjectives map[float64]float64
|
||||
Logger logger.Logger
|
||||
}
|
||||
@ -27,7 +30,7 @@ type Options struct {
|
||||
func NewOptions(opt ...Option) Options {
|
||||
opts := Options{
|
||||
Address: defaultPrometheusListenAddress,
|
||||
DefaultTags: make(Tags),
|
||||
DefaultTags: metadata.New(2),
|
||||
Path: defaultPath,
|
||||
TimingObjectives: defaultTimingObjectives,
|
||||
}
|
||||
@ -54,9 +57,9 @@ func Address(value string) Option {
|
||||
}
|
||||
|
||||
// DefaultTags will be added to every metric:
|
||||
func DefaultTags(value Tags) Option {
|
||||
func DefaultTags(md metadata.Metadata) Option {
|
||||
return func(o *Options) {
|
||||
o.DefaultTags = value
|
||||
o.DefaultTags = metadata.Copy(md)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,11 @@
|
||||
// Package metrics is for instrumentation and debugging
|
||||
package metrics
|
||||
|
||||
import "time"
|
||||
import (
|
||||
"time"
|
||||
|
||||
// Tags is a map of fields to add to a metric:
|
||||
type Tags map[string]string
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
)
|
||||
|
||||
var (
|
||||
DefaultReporter Reporter = NewReporter()
|
||||
@ -13,8 +14,8 @@ var (
|
||||
// Reporter is an interface for collecting and instrumenting metrics
|
||||
type Reporter interface {
|
||||
Init(...Option) error
|
||||
Count(id string, value int64, tags Tags) error
|
||||
Gauge(id string, value float64, tags Tags) error
|
||||
Timing(id string, value time.Duration, tags Tags) error
|
||||
Count(id string, value int64, md metadata.Metadata) error
|
||||
Gauge(id string, value float64, md metadata.Metadata) error
|
||||
Timing(id string, value time.Duration, md metadata.Metadata) error
|
||||
Options() Options
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
package wrapper
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"context"
|
||||
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
"github.com/unistack-org/micro/v3/metrics"
|
||||
"github.com/unistack-org/micro/v3/server"
|
||||
)
|
||||
@ -26,9 +26,8 @@ func (w *Wrapper) HandlerFunc(handlerFunction server.HandlerFunc) server.Handler
|
||||
return func(ctx context.Context, req server.Request, rsp interface{}) error {
|
||||
|
||||
// Build some tags to describe the call:
|
||||
tags := metrics.Tags{
|
||||
"method": req.Method(),
|
||||
}
|
||||
tags := metadata.New(2)
|
||||
tags.Set("method", req.Method())
|
||||
|
||||
// Start the clock:
|
||||
callTime := time.Now()
|
||||
|
@ -4,6 +4,8 @@ package transport
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -26,7 +28,7 @@ type Transport interface {
|
||||
|
||||
// Message is used to transfer data
|
||||
type Message struct {
|
||||
Header map[string]string
|
||||
Header metadata.Metadata
|
||||
Body []byte
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,7 @@ import (
|
||||
"github.com/unistack-org/micro/v3/config"
|
||||
"github.com/unistack-org/micro/v3/debug/profile"
|
||||
"github.com/unistack-org/micro/v3/logger"
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
"github.com/unistack-org/micro/v3/network/transport"
|
||||
"github.com/unistack-org/micro/v3/registry"
|
||||
"github.com/unistack-org/micro/v3/router"
|
||||
@ -260,7 +261,7 @@ func Version(v string) Option {
|
||||
}
|
||||
|
||||
// Metadata associated with the service
|
||||
func Metadata(md map[string]string) Option {
|
||||
func Metadata(md metadata.Metadata) Option {
|
||||
return func(o *Options) {
|
||||
if o.Server != nil {
|
||||
o.Server.Init(server.Metadata(md))
|
||||
|
@ -100,9 +100,7 @@ func ExtractEndpoint(method reflect.Method) *Endpoint {
|
||||
}
|
||||
|
||||
if stream {
|
||||
ep.Metadata = map[string]string{
|
||||
"stream": fmt.Sprintf("%v", stream),
|
||||
}
|
||||
ep.Metadata.Set("stream", fmt.Sprintf("%v", stream))
|
||||
}
|
||||
|
||||
return ep
|
||||
|
@ -4,6 +4,8 @@ package registry
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -42,7 +44,7 @@ type Registry interface {
|
||||
type Service struct {
|
||||
Name string `json:"name"`
|
||||
Version string `json:"version"`
|
||||
Metadata map[string]string `json:"metadata"`
|
||||
Metadata metadata.Metadata `json:"metadata"`
|
||||
Endpoints []*Endpoint `json:"endpoints"`
|
||||
Nodes []*Node `json:"nodes"`
|
||||
}
|
||||
@ -51,7 +53,7 @@ type Service struct {
|
||||
type Node struct {
|
||||
Id string `json:"id"`
|
||||
Address string `json:"address"`
|
||||
Metadata map[string]string `json:"metadata"`
|
||||
Metadata metadata.Metadata `json:"metadata"`
|
||||
}
|
||||
|
||||
// Endpoint holds endpoint registry info
|
||||
@ -59,7 +61,7 @@ type Endpoint struct {
|
||||
Name string `json:"name"`
|
||||
Request *Value `json:"request"`
|
||||
Response *Value `json:"response"`
|
||||
Metadata map[string]string `json:"metadata"`
|
||||
Metadata metadata.Metadata `json:"metadata"`
|
||||
}
|
||||
|
||||
// Valud holds additional kv stuff
|
||||
|
@ -2,6 +2,8 @@ package router
|
||||
|
||||
import (
|
||||
"hash/fnv"
|
||||
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -28,7 +30,7 @@ type Route struct {
|
||||
// Metric is the route cost metric
|
||||
Metric int64
|
||||
// Metadata for the route
|
||||
Metadata map[string]string
|
||||
Metadata metadata.Metadata
|
||||
}
|
||||
|
||||
// Hash returns route hash sum.
|
||||
|
@ -4,6 +4,8 @@ package runtime
|
||||
import (
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -43,7 +45,7 @@ type Logs interface {
|
||||
// Log is a log message
|
||||
type Log struct {
|
||||
Message string
|
||||
Metadata map[string]string
|
||||
Metadata metadata.Metadata
|
||||
}
|
||||
|
||||
// Scheduler is a runtime service scheduler
|
||||
@ -103,7 +105,7 @@ type Service struct {
|
||||
// url location of source
|
||||
Source string
|
||||
// Metadata stores metadata
|
||||
Metadata map[string]string
|
||||
Metadata metadata.Metadata
|
||||
}
|
||||
|
||||
// Resources which are allocated to a serivce
|
||||
|
@ -10,6 +10,7 @@ import (
|
||||
"github.com/unistack-org/micro/v3/broker"
|
||||
"github.com/unistack-org/micro/v3/codec"
|
||||
"github.com/unistack-org/micro/v3/logger"
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
"github.com/unistack-org/micro/v3/network/transport"
|
||||
"github.com/unistack-org/micro/v3/registry"
|
||||
"github.com/unistack-org/micro/v3/tracer"
|
||||
@ -24,7 +25,7 @@ type Options struct {
|
||||
Auth auth.Auth
|
||||
Logger logger.Logger
|
||||
Transport transport.Transport
|
||||
Metadata map[string]string
|
||||
Metadata metadata.Metadata
|
||||
Name string
|
||||
Address string
|
||||
Advertise string
|
||||
@ -63,7 +64,7 @@ func NewOptions(opts ...Option) Options {
|
||||
Auth: auth.DefaultAuth,
|
||||
Codecs: make(map[string]codec.NewCodec),
|
||||
Context: context.Background(),
|
||||
Metadata: map[string]string{},
|
||||
Metadata: metadata.New(0),
|
||||
RegisterInterval: DefaultRegisterInterval,
|
||||
RegisterTTL: DefaultRegisterTTL,
|
||||
RegisterCheck: DefaultRegisterCheck,
|
||||
@ -187,9 +188,9 @@ func Transport(t transport.Transport) Option {
|
||||
}
|
||||
|
||||
// Metadata associated with the server
|
||||
func Metadata(md map[string]string) Option {
|
||||
func Metadata(md metadata.Metadata) Option {
|
||||
return func(o *Options) {
|
||||
o.Metadata = md
|
||||
o.Metadata = metadata.Copy(md)
|
||||
}
|
||||
}
|
||||
|
||||
@ -271,7 +272,7 @@ type HandlerOption func(*HandlerOptions)
|
||||
// HandlerOptions struct
|
||||
type HandlerOptions struct {
|
||||
Internal bool
|
||||
Metadata map[string]map[string]string
|
||||
Metadata map[string]metadata.Metadata
|
||||
Context context.Context
|
||||
}
|
||||
|
||||
@ -317,9 +318,9 @@ func NewSubscriberOptions(opts ...SubscriberOption) SubscriberOptions {
|
||||
|
||||
// EndpointMetadata is a Handler option that allows metadata to be added to
|
||||
// individual endpoints.
|
||||
func EndpointMetadata(name string, md map[string]string) HandlerOption {
|
||||
func EndpointMetadata(name string, md metadata.Metadata) HandlerOption {
|
||||
return func(o *HandlerOptions) {
|
||||
o.Metadata[name] = md
|
||||
o.Metadata[name] = metadata.Copy(md)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,13 +2,14 @@ package server
|
||||
|
||||
import (
|
||||
"github.com/unistack-org/micro/v3/codec"
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
)
|
||||
|
||||
type rpcMessage struct {
|
||||
topic string
|
||||
contentType string
|
||||
payload interface{}
|
||||
header map[string]string
|
||||
header metadata.Metadata
|
||||
body []byte
|
||||
codec codec.Codec
|
||||
}
|
||||
@ -25,7 +26,7 @@ func (r *rpcMessage) Payload() interface{} {
|
||||
return r.payload
|
||||
}
|
||||
|
||||
func (r *rpcMessage) Header() map[string]string {
|
||||
func (r *rpcMessage) Header() metadata.Metadata {
|
||||
return r.header
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/unistack-org/micro/v3/codec"
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
"github.com/unistack-org/micro/v3/registry"
|
||||
)
|
||||
|
||||
@ -53,7 +54,7 @@ type Message interface {
|
||||
// The content type of the payload
|
||||
ContentType() string
|
||||
// The raw headers of the message
|
||||
Header() map[string]string
|
||||
Header() metadata.Metadata
|
||||
// The raw body of the message
|
||||
Body() []byte
|
||||
// Codec used to decode the message
|
||||
@ -71,7 +72,7 @@ type Request interface {
|
||||
// Content type provided
|
||||
ContentType() string
|
||||
// Header of the request
|
||||
Header() map[string]string
|
||||
Header() metadata.Metadata
|
||||
// Body is the initial decoded value
|
||||
Body() interface{}
|
||||
// Read the undecoded request body
|
||||
@ -87,7 +88,7 @@ type Response interface {
|
||||
// Encoded writer
|
||||
Codec() codec.Writer
|
||||
// Write the header
|
||||
WriteHeader(map[string]string)
|
||||
WriteHeader(metadata.Metadata)
|
||||
// write a response directly to the client
|
||||
Write([]byte) error
|
||||
}
|
||||
|
@ -134,15 +134,14 @@ func newSubscriber(topic string, sub interface{}, opts ...SubscriberOption) Subs
|
||||
}
|
||||
|
||||
handlers = append(handlers, h)
|
||||
|
||||
endpoints = append(endpoints, ®istry.Endpoint{
|
||||
Name: "Func",
|
||||
Request: registry.ExtractSubValue(typ),
|
||||
Metadata: map[string]string{
|
||||
"topic": topic,
|
||||
"subscriber": "true",
|
||||
},
|
||||
})
|
||||
ep := ®istry.Endpoint{
|
||||
Name: "Func",
|
||||
Request: registry.ExtractSubValue(typ),
|
||||
Metadata: metadata.New(2),
|
||||
}
|
||||
ep.Metadata.Set("topic", topic)
|
||||
ep.Metadata.Set("subscriber", "true")
|
||||
endpoints = append(endpoints, ep)
|
||||
} else {
|
||||
hdlr := reflect.ValueOf(sub)
|
||||
name := reflect.Indirect(hdlr).Type().Name()
|
||||
@ -162,15 +161,14 @@ func newSubscriber(topic string, sub interface{}, opts ...SubscriberOption) Subs
|
||||
}
|
||||
|
||||
handlers = append(handlers, h)
|
||||
|
||||
endpoints = append(endpoints, ®istry.Endpoint{
|
||||
Name: name + "." + method.Name,
|
||||
Request: registry.ExtractSubValue(method.Type),
|
||||
Metadata: map[string]string{
|
||||
"topic": topic,
|
||||
"subscriber": "true",
|
||||
},
|
||||
})
|
||||
ep := ®istry.Endpoint{
|
||||
Name: name + "." + method.Name,
|
||||
Request: registry.ExtractSubValue(method.Type),
|
||||
Metadata: metadata.New(2),
|
||||
}
|
||||
ep.Metadata.Set("topic", topic)
|
||||
ep.Metadata.Set("subscriber", "true")
|
||||
endpoints = append(endpoints, ep)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -29,8 +29,8 @@ func FromContext(ctx context.Context) (traceID string, parentSpanID string, isFo
|
||||
|
||||
// NewContext saves the trace and span ids in the context
|
||||
func NewContext(ctx context.Context, traceID, parentSpanID string) context.Context {
|
||||
return metadata.MergeContext(ctx, map[string]string{
|
||||
traceIDKey: traceID,
|
||||
spanIDKey: parentSpanID,
|
||||
}, true)
|
||||
md := metadata.New(2)
|
||||
md.Set(traceIDKey, traceID)
|
||||
md.Set(spanIDKey, parentSpanID)
|
||||
return metadata.MergeContext(ctx, md, true)
|
||||
}
|
||||
|
@ -4,6 +4,8 @@ package tracer
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -46,7 +48,7 @@ type Span struct {
|
||||
// Duration in nano seconds
|
||||
Duration time.Duration
|
||||
// associated data
|
||||
Metadata map[string]string
|
||||
Metadata metadata.Metadata
|
||||
// Type
|
||||
Type SpanType
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ func (r *request) Codec() codec.Reader {
|
||||
return r.Request.Codec().(codec.Reader)
|
||||
}
|
||||
|
||||
func (r *request) Header() map[string]string {
|
||||
func (r *request) Header() metadata.Metadata {
|
||||
md, _ := metadata.FromContext(r.context)
|
||||
return md
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
|
||||
"github.com/dgrijalva/jwt-go"
|
||||
"github.com/unistack-org/micro/v3/auth"
|
||||
"github.com/unistack-org/micro/v3/metadata"
|
||||
"github.com/unistack-org/micro/v3/util/token"
|
||||
)
|
||||
|
||||
@ -13,7 +14,7 @@ import (
|
||||
type authClaims struct {
|
||||
Type string `json:"type"`
|
||||
Scopes []string `json:"scopes"`
|
||||
Metadata map[string]string `json:"metadata"`
|
||||
Metadata metadata.Metadata `json:"metadata"`
|
||||
|
||||
jwt.StandardClaims
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user