本文整理汇总了Golang中menu/Godeps/_workspace/src/github.com/gin-gonic/gin.Context类的典型用法代码示例。如果您正苦于以下问题:Golang Context类的具体用法?Golang Context怎么用?Golang Context使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Context类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: roomGET
func roomGET(c *gin.Context) {
roomid := c.Param("roomid")
userid := fmt.Sprint(rand.Int31())
c.HTML(200, "chat_room", gin.H{
"roomid": roomid,
"userid": userid,
})
}
示例2: GetMenus
func GetMenus(c *gin.Context) {
var menus []Menu
_, err := dbmap.Select(&menus, "select * from menu")
if err == nil {
c.JSON(200, menus)
} else {
c.JSON(404, gin.H{"error": "no items in this table"})
}
}
示例3: GetRecipes
func GetRecipes(c *gin.Context) {
var recipes []Recipe
_, err := dbmap.Select(&recipes, "select * from recipe")
if err == nil {
c.JSON(200, recipes)
} else {
c.JSON(404, gin.H{"error": "no items in this table"})
}
}
示例4: DeleteRecipe
func DeleteRecipe(c *gin.Context) {
id := c.Params.ByName("id")
var recipe Recipe
err := dbmap.SelectOne(&recipe, "select id from recipe where id=$1", id)
if err == nil {
_, err = dbmap.Delete(&recipe)
if err == nil {
c.JSON(200, gin.H{"id #" + id: "deleted"})
} else {
checkErr(err, "Delete failed")
}
} else {
c.JSON(404, gin.H{"error": "item not found"})
}
}
示例5: roomPOST
func roomPOST(c *gin.Context) {
roomid := c.Param("roomid")
userid := c.PostForm("user")
message := c.PostForm("message")
room(roomid).Submit(userid + ": " + message)
c.JSON(200, gin.H{
"status": "success",
"message": message,
})
}
示例6: GetRecipe
func GetRecipe(c *gin.Context) {
id := c.Params.ByName("id")
var recipe Recipe
err := dbmap.SelectOne(&recipe, "select * from recipe where id=$1", id)
if err == nil {
recipe_id, _ := strconv.ParseInt(id, 0, 64)
content := &Recipe{
Id: recipe_id,
Name: recipe.Name,
Description: recipe.Description,
Link: recipe.Link,
Category: recipe.Category,
Notes: recipe.Notes,
}
c.JSON(200, content)
} else {
c.JSON(404, gin.H{"error": "item not found"})
}
}
示例7: roomPOST
func roomPOST(c *gin.Context) {
roomid := c.Param("roomid")
nick := c.Query("nick")
message := c.PostForm("message")
message = strings.TrimSpace(message)
validMessage := len(message) > 1 && len(message) < 200
validNick := len(nick) > 1 && len(nick) < 14
if !validMessage || !validNick {
c.JSON(400, gin.H{
"status": "failed",
"error": "the message or nickname is too long",
})
return
}
post := gin.H{
"nick": html.EscapeString(nick),
"message": html.EscapeString(message),
}
messages.Add("inbound", 1)
room(roomid).Submit(post)
c.JSON(200, post)
}
示例8: stream
func stream(c *gin.Context) {
roomid := c.Param("roomid")
listener := openListener(roomid)
defer closeListener(roomid, listener)
c.Stream(func(w io.Writer) bool {
c.SSEvent("message", <-listener)
return true
})
}
示例9: streamRoom
func streamRoom(c *gin.Context) {
roomid := c.Param("roomid")
listener := openListener(roomid)
ticker := time.NewTicker(1 * time.Second)
users.Add("connected", 1)
defer func() {
closeListener(roomid, listener)
ticker.Stop()
users.Add("disconnected", 1)
}()
c.Stream(func(w io.Writer) bool {
select {
case msg := <-listener:
messages.Add("outbound", 1)
c.SSEvent("message", msg)
case <-ticker.C:
c.SSEvent("stats", Stats())
}
return true
})
}
示例10: rateLimit
func rateLimit(c *gin.Context) {
ip := c.ClientIP()
value := int(ips.Add(ip, 1))
if value%50 == 0 {
fmt.Printf("ip: %s, count: %d\n", ip, value)
}
if value >= 200 {
if value%200 == 0 {
fmt.Println("ip blocked")
}
c.Abort()
c.String(503, "you were automatically banned :)")
}
}
示例11: roomGET
func roomGET(c *gin.Context) {
roomid := c.Param("roomid")
nick := c.Query("nick")
if len(nick) < 2 {
nick = ""
}
if len(nick) > 13 {
nick = nick[0:12] + "..."
}
c.HTML(200, "room_login.templ.html", gin.H{
"roomid": roomid,
"nick": nick,
"timestamp": time.Now().Unix(),
})
}
示例12: UpdateRecipe
func UpdateRecipe(c *gin.Context) {
id := c.Params.ByName("id")
var recipe Recipe
err := dbmap.SelectOne(&recipe, "select * from recipe where id =$1", id)
if err == nil {
var json Recipe
c.Bind(&json)
recipe_id, _ := strconv.ParseInt(id, 0, 64)
recipe := Recipe{
Id: recipe_id,
UserId: json.UserId,
Name: json.Name,
Description: json.Description,
Link: json.Link,
Category: json.Category,
Notes: json.Notes,
}
if recipe.Name != "" {
_, err := dbmap.Update(&recipe)
if err == nil {
c.JSON(200, recipe)
} else {
checkErr(err, "Updated failed")
}
} else {
c.JSON(422, gin.H{"error": "fields are empty"})
}
} else {
c.JSON(404, gin.H{"error": "item not found"})
}
}
示例13: PostMenu
func PostMenu(c *gin.Context) {
var menu Menu
c.Bind(&menu)
if menu.Name != "" {
if insert, _ := dbmap.Exec(`insert into menu (name, data) values ($1, $2)`,
menu.Name, menu.Data); insert != nil {
content := &Menu{
Id: 0,
Name: menu.Name,
Data: menu.Data,
}
c.JSON(201, content)
}
} else {
c.JSON(422, gin.H{"error": "fields are empty"})
}
}
示例14: PostRecipe
func PostRecipe(c *gin.Context) {
var recipe Recipe
c.Bind(&recipe)
if recipe.Name != "" {
if insert, _ := dbmap.Exec(`insert into recipe (userid, name, description, link, category, notes) values ($1, $2, $3, $4, $5, $6)`,
recipe.UserId, recipe.Name, recipe.Description, recipe.Link, recipe.Category, recipe.Notes); insert != nil {
content := &Recipe{
Id: 0,
UserId: recipe.UserId,
Name: recipe.Name,
Description: recipe.Description,
Link: recipe.Link,
Category: recipe.Category,
Notes: recipe.Notes,
}
c.JSON(201, content)
}
} else {
c.JSON(422, gin.H{"error": "fields are empty"})
}
}
示例15: index
func index(c *gin.Context) {
c.Redirect(301, "/room/hn")
}