context.go 794 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package protocol
  2. import (
  3. "context"
  4. )
  5. type key int
  6. const (
  7. userKey key = iota
  8. requestKey
  9. )
  10. // ContextWithUser returns a context combined with a User.
  11. func ContextWithUser(ctx context.Context, user *User) context.Context {
  12. return context.WithValue(ctx, userKey, user)
  13. }
  14. // UserFromContext extracts a User from the given context, if any.
  15. func UserFromContext(ctx context.Context) *User {
  16. v := ctx.Value(userKey)
  17. if v == nil {
  18. return nil
  19. }
  20. return v.(*User)
  21. }
  22. func ContextWithRequestHeader(ctx context.Context, request *RequestHeader) context.Context {
  23. return context.WithValue(ctx, requestKey, request)
  24. }
  25. func RequestHeaderFromContext(ctx context.Context) *RequestHeader {
  26. request := ctx.Value(requestKey)
  27. if request == nil {
  28. return nil
  29. }
  30. return request.(*RequestHeader)
  31. }