Compare commits
2 Commits
v3.11.16
...
19b04fe070
| Author | SHA1 | Date | |
|---|---|---|---|
| 19b04fe070 | |||
| 4cd55875c6 |
@@ -11,6 +11,34 @@ type (
|
|||||||
mdKey struct{}
|
mdKey struct{}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// MustIncomingContext returns metadata from incoming ctx
|
||||||
|
// returned metadata shoud not be modified or race condition happens.
|
||||||
|
// If metadata not exists panics.
|
||||||
|
func MustIncomingContext(ctx context.Context) Metadata {
|
||||||
|
if ctx == nil {
|
||||||
|
panic("missing metadata")
|
||||||
|
}
|
||||||
|
md, ok := ctx.Value(mdIncomingKey{}).(*rawMetadata)
|
||||||
|
if !ok {
|
||||||
|
panic("missing metadata")
|
||||||
|
}
|
||||||
|
return md.md
|
||||||
|
}
|
||||||
|
|
||||||
|
// MustOutgoingContext returns metadata from outgoing ctx
|
||||||
|
// returned metadata shoud not be modified or race condition happens.
|
||||||
|
// If metadata not exists panics.
|
||||||
|
func MustOutgoingContext(ctx context.Context) Metadata {
|
||||||
|
if ctx == nil {
|
||||||
|
panic("missing metadata")
|
||||||
|
}
|
||||||
|
md, ok := ctx.Value(mdOutgoingKey{}).(*rawMetadata)
|
||||||
|
if !ok {
|
||||||
|
panic("missing metadata")
|
||||||
|
}
|
||||||
|
return md.md
|
||||||
|
}
|
||||||
|
|
||||||
// FromIncomingContext returns metadata from incoming ctx
|
// FromIncomingContext returns metadata from incoming ctx
|
||||||
// returned metadata shoud not be modified or race condition happens
|
// returned metadata shoud not be modified or race condition happens
|
||||||
func FromIncomingContext(ctx context.Context) (Metadata, bool) {
|
func FromIncomingContext(ctx context.Context) (Metadata, bool) {
|
||||||
|
|||||||
@@ -67,6 +67,22 @@ func (md Metadata) Iterator() *Iterator {
|
|||||||
return iter
|
return iter
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (md Metadata) MustGet(key string) string {
|
||||||
|
// fast path
|
||||||
|
val, ok := md[key]
|
||||||
|
if !ok {
|
||||||
|
// slow path
|
||||||
|
val, ok = md[textproto.CanonicalMIMEHeaderKey(key)]
|
||||||
|
if !ok {
|
||||||
|
val, ok = md[strings.ToLower(key)]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !ok {
|
||||||
|
panic("missing metadata key")
|
||||||
|
}
|
||||||
|
return val
|
||||||
|
}
|
||||||
|
|
||||||
// Get returns value from metadata by key
|
// Get returns value from metadata by key
|
||||||
func (md Metadata) Get(key string) (string, bool) {
|
func (md Metadata) Get(key string) (string, bool) {
|
||||||
// fast path
|
// fast path
|
||||||
|
|||||||
Reference in New Issue
Block a user