31 lines
719 B
Go
31 lines
719 B
Go
package middleware
|
|
|
|
import (
|
|
"math/rand"
|
|
"softdown.com/shusou/geziyor/client"
|
|
"time"
|
|
)
|
|
|
|
// delay delays requests
|
|
type delay struct {
|
|
requestDelayRandomize bool
|
|
requestDelay time.Duration
|
|
}
|
|
|
|
func NewDelay(requestDelayRandomize bool, requestDelay time.Duration) RequestProcessor {
|
|
if requestDelayRandomize {
|
|
rand.Seed(time.Now().UnixNano())
|
|
}
|
|
return &delay{requestDelayRandomize: requestDelayRandomize, requestDelay: requestDelay}
|
|
}
|
|
|
|
func (a *delay) ProcessRequest(r *client.Request) {
|
|
if a.requestDelayRandomize {
|
|
min := float64(a.requestDelay) * 0.5
|
|
max := float64(a.requestDelay) * 1.5
|
|
time.Sleep(time.Duration(rand.Intn(int(max-min)) + int(min)))
|
|
} else {
|
|
time.Sleep(a.requestDelay)
|
|
}
|
|
}
|