2019-04-22 02:59:20 +00:00

46 lines
1.2 KiB
Go

package antispam_test
import (
"time"
"go-common/library/cache/redis"
"go-common/library/container/pool"
"go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/antispam"
xtime "go-common/library/time"
)
// This example create a antispam middleware instance and attach to a blademaster engine,
// it will protect '/ping' API with specified policy.
// If anyone who requests this API more frequently than 1 req/second or 1 req/hour,
// a StatusServiceUnavailable error will be raised.
func Example() {
anti := antispam.New(&antispam.Config{
On: true,
Second: 1,
N: 1,
Hour: 1,
M: 1,
Redis: &redis.Config{
Config: &pool.Config{
Active: 10,
Idle: 10,
IdleTimeout: xtime.Duration(time.Second * 60),
},
Name: "test",
Proto: "tcp",
Addr: "172.18.33.60:6889",
DialTimeout: xtime.Duration(time.Second),
ReadTimeout: xtime.Duration(time.Second),
WriteTimeout: xtime.Duration(time.Second),
},
})
engine := blademaster.Default()
engine.Use(anti)
engine.GET("/ping", func(c *blademaster.Context) {
c.String(200, "%s", "pong")
})
engine.Run(":18080")
}