Merge abe076b8f8961378daecca4d8309929302f3c37a into 5eb0e10a78a29c69678d1e6bfca6b1ca8016be95

This commit is contained in:
Nick Gerakines 2014-07-03 22:16:50 +00:00
commit 3bb74a4c66
3 changed files with 23 additions and 19 deletions

View File

@ -275,14 +275,14 @@ func main() {
func Logger() gin.HandlerFunc {
return func(c *gin.Context) {
t := time.Now()
// Set example variable
c.Set("example", "12345")
// before request
c.Next()
// after request
latency := time.Since(t)
log.Print(latency)
@ -292,10 +292,10 @@ func Logger() gin.HandlerFunc {
func main() {
r := gin.New()
r.Use(Logger())
r.GET("/test", func(c *gin.Context){
example := r.Get("example").(string)
example := c.MustGet("example").(string)
// it would print: "12345"
log.Println(example)
})

View File

@ -38,14 +38,14 @@ func main() {
}))
authorized.POST("admin", func(c *gin.Context) {
user := c.Get("user").(string)
user, _ := c.Get("user")
// Parse JSON
var json struct {
Value string `json:"value" binding:"required"`
}
if c.EnsureBody(&json) {
DB[user] = json.Value
DB[user.(string)] = json.Value
c.JSON(200, gin.H{"status": "ok"})
}
})

24
gin.go
View File

@ -281,20 +281,24 @@ func (c *Context) Set(key string, item interface{}) {
c.Keys[key] = item
}
// Returns the value for the given key.
// It panics if the value doesn't exist.
func (c *Context) Get(key string) interface{} {
var ok bool
var item interface{}
// Get returns the value for the given key or an error if the key does not exist.
func (c *Context) Get(key string) (interface{}, error) {
if c.Keys != nil {
item, ok = c.Keys[key]
} else {
item, ok = nil, false
item, ok := c.Keys[key]
if ok {
return item, nil
}
}
if !ok || item == nil {
return nil, errors.New("Key does not exist.")
}
// MustGet returns the value for the given key or panics if the value doesn't exist.
func (c *Context) MustGet(key string) interface{} {
value, err := c.Get(key)
if err != nil || value == nil {
log.Panicf("Key %s doesn't exist", key)
}
return item
return value
}
/************************************/