You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.2 KiB
45 lines
1.2 KiB
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") |
|
}
|
|
|