Fixing visits cache
This commit is contained in:
parent
ffae8abba0
commit
b3aa9ea672
3 changed files with 6 additions and 3 deletions
2
main.go
2
main.go
|
|
@ -16,7 +16,7 @@ func main() {
|
|||
db := SetupDatabase()
|
||||
SetupRsvpsTable(db)
|
||||
|
||||
visits := SetupVisitHandler(&VisitHandlerArgs{baseUrl: "http://ip-api.com", rateLimitAmount: 45, rateLimitDurationSeconds: 60})
|
||||
visits := SetupVisitHandler(&VisitHandlerArgs{baseUrl: "http://ip-api.com", rateLimitAmount: 45, rateLimitDurationSeconds: 60, cacheDurationSeconds: 60 * 60})
|
||||
|
||||
SetupAuth()
|
||||
hnd := &Handler{db, ntfy, visits}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ type VisitHandler struct {
|
|||
pastRequests []int64
|
||||
rateLimitAmount int
|
||||
rateLimitDurationSeconds int
|
||||
cacheDurationSeconds int
|
||||
}
|
||||
|
||||
func (v *VisitHandler) buildUrl(ipAddress string) string {
|
||||
|
|
@ -110,7 +111,7 @@ func (v *VisitHandler) HandleVisit(remoteAddr string) *Visit {
|
|||
v.visitsCache = make(map[string]int64)
|
||||
}
|
||||
|
||||
if v.visitsCache[remoteAddr] == 0 || time.Since(time.Unix(v.visitsCache[remoteAddr], 0)) > time.Duration(v.rateLimitDurationSeconds) {
|
||||
if v.visitsCache[remoteAddr] == 0 || time.Since(time.Unix(v.visitsCache[remoteAddr], 0)).Seconds() > float64(v.cacheDurationSeconds) {
|
||||
visit := v.createVisit(remoteAddr)
|
||||
if visit == nil {
|
||||
return nil
|
||||
|
|
@ -126,6 +127,7 @@ type VisitHandlerArgs struct {
|
|||
baseUrl string
|
||||
rateLimitAmount int
|
||||
rateLimitDurationSeconds int
|
||||
cacheDurationSeconds int
|
||||
}
|
||||
|
||||
func SetupVisitHandler(args *VisitHandlerArgs) *VisitHandler {
|
||||
|
|
@ -135,5 +137,6 @@ func SetupVisitHandler(args *VisitHandlerArgs) *VisitHandler {
|
|||
pastRequests: make([]int64, 0),
|
||||
rateLimitAmount: args.rateLimitAmount,
|
||||
rateLimitDurationSeconds: args.rateLimitDurationSeconds,
|
||||
cacheDurationSeconds: args.cacheDurationSeconds,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -152,7 +152,7 @@ func TestHandleVisit_Cache(t *testing.T) {
|
|||
}))
|
||||
defer server.Close()
|
||||
|
||||
v := SetupVisitHandler(&VisitHandlerArgs{baseUrl: server.URL, rateLimitDurationSeconds: 1})
|
||||
v := SetupVisitHandler(&VisitHandlerArgs{baseUrl: server.URL, cacheDurationSeconds: 1})
|
||||
|
||||
visit := v.HandleVisit("home.collinduncan.com")
|
||||
if visit == nil {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue