package app

import (
	"strconv"
	"time"

	"zxq.co/ripple/rippleapi/limit"
)

const reqsPerSecond = 5000
const sleepTime = time.Second / reqsPerSecond

var limiter = make(chan struct{}, reqsPerSecond)

func setUpLimiter() {
	for i := 0; i < reqsPerSecond; i++ {
		limiter <- struct{}{}
	}
	go func() {
		for {
			limiter <- struct{}{}
			time.Sleep(sleepTime)
		}
	}()
}

func rateLimiter() {
	<-limiter
}
func perUserRequestLimiter(uid int, ip string) {
	if uid == 0 {
		limit.Request("ip:"+ip, 200)
	} else {
		limit.Request("user:"+strconv.Itoa(uid), 3000)
	}
}
