feat(context): return GIN Context from Value method

This commit is contained in:
Faisal Alam 2021-08-14 23:56:57 +05:30
parent b463b1c2a1
commit 2f7c905ab8
2 changed files with 7 additions and 0 deletions

View File

@ -40,6 +40,9 @@ const (
// BodyBytesKey indicates a default body bytes key.
const BodyBytesKey = "_gin-gonic/gin/bodybyteskey"
// ContextKey is the key that a Context returns itself for.
const ContextKey = "_gin-gonic/gin/contextkey"
// abortIndex represents a typical value used in abort functions.
const abortIndex int8 = math.MaxInt8 >> 1
@ -1192,6 +1195,9 @@ func (c *Context) Value(key interface{}) interface{} {
if key == 0 {
return c.Request
}
if key == ContextKey {
return c
}
if keyAsString, ok := key.(string); ok {
if val, exists := c.Get(keyAsString); exists {
return val

View File

@ -1861,6 +1861,7 @@ func TestContextGolangContext(t *testing.T) {
assert.Equal(t, ti, time.Time{})
assert.False(t, ok)
assert.Equal(t, c.Value(0), c.Request)
assert.Equal(t, c.Value(ContextKey), c)
assert.Nil(t, c.Value("foo"))
c.Set("foo", "bar")