mirror of https://github.com/gin-gonic/gin.git
fix(context): make context Value method adhere to Go standards (#3897)
This commit is contained in:
parent
0d9dbbb445
commit
2b1da2b0b3
|
@ -43,6 +43,10 @@ const BodyBytesKey = "_gin-gonic/gin/bodybyteskey"
|
||||||
// ContextKey is the key that a Context returns itself for.
|
// ContextKey is the key that a Context returns itself for.
|
||||||
const ContextKey = "_gin-gonic/gin/contextkey"
|
const ContextKey = "_gin-gonic/gin/contextkey"
|
||||||
|
|
||||||
|
type ContextKeyType int
|
||||||
|
|
||||||
|
const ContextRequestKey ContextKeyType = 0
|
||||||
|
|
||||||
// abortIndex represents a typical value used in abort functions.
|
// abortIndex represents a typical value used in abort functions.
|
||||||
const abortIndex int8 = math.MaxInt8 >> 1
|
const abortIndex int8 = math.MaxInt8 >> 1
|
||||||
|
|
||||||
|
@ -1225,7 +1229,7 @@ func (c *Context) Err() error {
|
||||||
// if no value is associated with key. Successive calls to Value with
|
// if no value is associated with key. Successive calls to Value with
|
||||||
// the same key returns the same result.
|
// the same key returns the same result.
|
||||||
func (c *Context) Value(key any) any {
|
func (c *Context) Value(key any) any {
|
||||||
if key == 0 {
|
if key == ContextRequestKey {
|
||||||
return c.Request
|
return c.Request
|
||||||
}
|
}
|
||||||
if key == ContextKey {
|
if key == ContextKey {
|
||||||
|
|
|
@ -1985,7 +1985,7 @@ func TestContextGolangContext(t *testing.T) {
|
||||||
ti, ok := c.Deadline()
|
ti, ok := c.Deadline()
|
||||||
assert.Equal(t, ti, time.Time{})
|
assert.Equal(t, ti, time.Time{})
|
||||||
assert.False(t, ok)
|
assert.False(t, ok)
|
||||||
assert.Equal(t, c.Value(0), c.Request)
|
assert.Equal(t, c.Value(ContextRequestKey), c.Request)
|
||||||
assert.Equal(t, c.Value(ContextKey), c)
|
assert.Equal(t, c.Value(ContextKey), c)
|
||||||
assert.Nil(t, c.Value("foo"))
|
assert.Nil(t, c.Value("foo"))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue