Setting Get metadata method to return both an interface as well as an error to remove panic.
This commit is contained in:
		@ -38,14 +38,14 @@ func main() {
 | 
				
			|||||||
	}))
 | 
						}))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	authorized.POST("admin", func(c *gin.Context) {
 | 
						authorized.POST("admin", func(c *gin.Context) {
 | 
				
			||||||
		user := c.Get("user").(string)
 | 
							user, _ := c.Get("user")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Parse JSON
 | 
							// Parse JSON
 | 
				
			||||||
		var json struct {
 | 
							var json struct {
 | 
				
			||||||
			Value string `json:"value" binding:"required"`
 | 
								Value string `json:"value" binding:"required"`
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if c.EnsureBody(&json) {
 | 
							if c.EnsureBody(&json) {
 | 
				
			||||||
			DB[user] = json.Value
 | 
								DB[user.(string)] = json.Value
 | 
				
			||||||
			c.JSON(200, gin.H{"status": "ok"})
 | 
								c.JSON(200, gin.H{"status": "ok"})
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										15
									
								
								gin.go
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								gin.go
									
									
									
									
									
								
							@ -8,7 +8,6 @@ import (
 | 
				
			|||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"github.com/julienschmidt/httprouter"
 | 
						"github.com/julienschmidt/httprouter"
 | 
				
			||||||
	"html/template"
 | 
						"html/template"
 | 
				
			||||||
	"log"
 | 
					 | 
				
			||||||
	"math"
 | 
						"math"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	"path"
 | 
						"path"
 | 
				
			||||||
@ -283,18 +282,14 @@ func (c *Context) Set(key string, item interface{}) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Returns the value for the given key.
 | 
					// Returns the value for the given key.
 | 
				
			||||||
// It panics if the value doesn't exist.
 | 
					// It panics if the value doesn't exist.
 | 
				
			||||||
func (c *Context) Get(key string) interface{} {
 | 
					func (c *Context) Get(key string) (interface{}, error) {
 | 
				
			||||||
	var ok bool
 | 
					 | 
				
			||||||
	var item interface{}
 | 
					 | 
				
			||||||
	if c.Keys != nil {
 | 
						if c.Keys != nil {
 | 
				
			||||||
		item, ok = c.Keys[key]
 | 
							item, ok := c.Keys[key]
 | 
				
			||||||
	} else {
 | 
							if ok {
 | 
				
			||||||
		item, ok = nil, false
 | 
								return item, nil
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	if !ok || item == nil {
 | 
					 | 
				
			||||||
		log.Panicf("Key %s doesn't exist", key)
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return item
 | 
						return nil, errors.New("Key does not exist.")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/************************************/
 | 
					/************************************/
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user