api/internal/endpoint/handler/http/conn_context.go

36 lines
805 B
Go
Raw Normal View History

2021-01-20 18:03:05 +00:00
package http
2021-01-04 16:52:21 +00:00
import (
"context"
"net"
)
type httpContextKey string
const (
2021-01-20 18:03:05 +00:00
remoteAddrKey httpContextKey = "gitlab.com/inetmock/inetmock/internal/endpoint/handler/http/context/remoteAddr"
localAddrKey httpContextKey = "gitlab.com/inetmock/inetmock/internal/endpoint/handler/http/context/localAddr"
2021-01-04 16:52:21 +00:00
)
func StoreConnPropertiesInContext(ctx context.Context, c net.Conn) context.Context {
ctx = context.WithValue(ctx, remoteAddrKey, c.RemoteAddr())
ctx = context.WithValue(ctx, localAddrKey, c.LocalAddr())
return ctx
}
2021-01-20 18:03:05 +00:00
func localAddr(ctx context.Context) net.Addr {
2021-01-04 16:52:21 +00:00
val := ctx.Value(localAddrKey)
if val == nil {
return nil
}
return val.(net.Addr)
}
2021-01-20 18:03:05 +00:00
func remoteAddr(ctx context.Context) net.Addr {
2021-01-04 16:52:21 +00:00
val := ctx.Value(remoteAddrKey)
if val == nil {
return nil
}
return val.(net.Addr)
}