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()
|
db := SetupDatabase()
|
||||||
SetupRsvpsTable(db)
|
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()
|
SetupAuth()
|
||||||
hnd := &Handler{db, ntfy, visits}
|
hnd := &Handler{db, ntfy, visits}
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ type VisitHandler struct {
|
||||||
pastRequests []int64
|
pastRequests []int64
|
||||||
rateLimitAmount int
|
rateLimitAmount int
|
||||||
rateLimitDurationSeconds int
|
rateLimitDurationSeconds int
|
||||||
|
cacheDurationSeconds int
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *VisitHandler) buildUrl(ipAddress string) string {
|
func (v *VisitHandler) buildUrl(ipAddress string) string {
|
||||||
|
|
@ -110,7 +111,7 @@ func (v *VisitHandler) HandleVisit(remoteAddr string) *Visit {
|
||||||
v.visitsCache = make(map[string]int64)
|
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)
|
visit := v.createVisit(remoteAddr)
|
||||||
if visit == nil {
|
if visit == nil {
|
||||||
return nil
|
return nil
|
||||||
|
|
@ -126,6 +127,7 @@ type VisitHandlerArgs struct {
|
||||||
baseUrl string
|
baseUrl string
|
||||||
rateLimitAmount int
|
rateLimitAmount int
|
||||||
rateLimitDurationSeconds int
|
rateLimitDurationSeconds int
|
||||||
|
cacheDurationSeconds int
|
||||||
}
|
}
|
||||||
|
|
||||||
func SetupVisitHandler(args *VisitHandlerArgs) *VisitHandler {
|
func SetupVisitHandler(args *VisitHandlerArgs) *VisitHandler {
|
||||||
|
|
@ -135,5 +137,6 @@ func SetupVisitHandler(args *VisitHandlerArgs) *VisitHandler {
|
||||||
pastRequests: make([]int64, 0),
|
pastRequests: make([]int64, 0),
|
||||||
rateLimitAmount: args.rateLimitAmount,
|
rateLimitAmount: args.rateLimitAmount,
|
||||||
rateLimitDurationSeconds: args.rateLimitDurationSeconds,
|
rateLimitDurationSeconds: args.rateLimitDurationSeconds,
|
||||||
|
cacheDurationSeconds: args.cacheDurationSeconds,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -152,7 +152,7 @@ func TestHandleVisit_Cache(t *testing.T) {
|
||||||
}))
|
}))
|
||||||
defer server.Close()
|
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")
|
visit := v.HandleVisit("home.collinduncan.com")
|
||||||
if visit == nil {
|
if visit == nil {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue