diff --git a/examples/realtime-advanced/limit.go b/examples/realtime-advanced/limit.go new file mode 100644 index 0000000..0347191 --- /dev/null +++ b/examples/realtime-advanced/limit.go @@ -0,0 +1,15 @@ +package main + +import "github.com/gin-gonic/gin" + +import "github.com/manucorporat/stats" + +var ips = stats.New() + +func ratelimit(c *gin.Context) { + ip := c.ClientIP() + value := ips.Add(ip, 1) + if value > 1000 { + c.AbortWithStatus(401) + } +} diff --git a/examples/realtime-advanced/main.go b/examples/realtime-advanced/main.go index 751990b..729f0e8 100644 --- a/examples/realtime-advanced/main.go +++ b/examples/realtime-advanced/main.go @@ -8,7 +8,9 @@ import ( ) func main() { - router := gin.Default() + router := gin.New() + router.Use(ratelimit, gin.Recovery(), gin.Logger()) + router.LoadHTMLGlob("resources/*.templ.html") router.Static("/static", "resources/static") router.GET("/", index)