in pkg/mock/events/events.go [50:91]
func Handler(res http.ResponseWriter, req *http.Request) {
log.Printf("RemoteAddr: %s sent request to mock scheduled event: %s\n", req.URL.Path, req.RemoteAddr)
// specify negative value to disable this feature
if c.MockIPCount >= 0 {
// req.RemoteAddr is formatted as IP:port
requestIP := strings.Split(req.RemoteAddr, ":")[0]
if !eligibleIPs[requestIP] {
if len(eligibleIPs) < c.MockIPCount {
eligibleIPs[requestIP] = true
} else {
log.Printf("Requesting IP %s is not eligible for Scheduled Event because the max number of IPs configured (%d) has been reached.\n", requestIP, c.MockIPCount)
server.ReturnNotFoundResponse(res)
return
}
}
}
requestTime := time.Now().Unix()
if c.MockTriggerTime != "" {
triggerTime, _ := time.Parse(time.RFC3339, c.MockTriggerTime)
delayRemaining := triggerTime.Unix() - requestTime
if delayRemaining > 0 {
log.Printf("MockTriggerTime %s was not reached yet. The mock response will be available in %ds. Returning `notFoundResponse` for now", triggerTime, delayRemaining)
server.ReturnNotFoundResponse(res)
return
}
} else {
delayInSeconds := c.MockDelayInSec
delayRemaining := delayInSeconds - (requestTime - appStartTime)
if delayRemaining > 0 {
log.Printf("Delaying the response by %ds as requested. The mock response will be available in %ds. Returning `notFoundResponse` for now", delayInSeconds, delayRemaining)
server.ReturnNotFoundResponse(res)
return
}
}
// return mock response after the delay or trigger time has elapsed
server.FormatAndReturnJSONResponse(res, getMetadata())
}