Fixing visits cache

This commit is contained in:
collin 2025-09-03 14:39:11 +02:00
parent ffae8abba0
commit b3aa9ea672
No known key found for this signature in database
3 changed files with 6 additions and 3 deletions

View file

@ -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}

View file

@ -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,
}
}

View file

@ -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 {