Fix daily limits for API key holders

This commit is contained in:
Piero Toffanin 2021-06-03 10:36:25 -04:00
parent 29c1f2cd2e
commit df78ec93ef

View file

@ -21,32 +21,40 @@ def get_remote_address():
return ip return ip
def get_req_limits(default_limit, api_keys_db, multiplier = 1):
req_limit = default_limit
if api_keys_db:
if request.is_json:
json = get_json_dict(request)
api_key = json.get("api_key")
else:
api_key = request.values.get("api_key")
if api_key:
db_req_limit = api_keys_db.lookup(api_key)
if db_req_limit is not None:
req_limit = db_req_limit
return req_limit
def get_routes_limits(default_req_limit, daily_req_limit, api_keys_db): def get_routes_limits(default_req_limit, daily_req_limit, api_keys_db):
if default_req_limit == -1: if default_req_limit == -1:
# TODO: better way? # TODO: better way?
default_req_limit = 9999999999999 default_req_limit = 9999999999999
def limits(): def minute_limits():
req_limit = default_req_limit return "%s per minute" % get_req_limits(default_req_limit, api_keys_db)
if api_keys_db: def daily_limits():
if request.is_json: return "%s per day" % get_req_limits(daily_req_limit, api_keys_db, 1440)
json = get_json_dict(request)
api_key = json.get('api_key')
else:
api_key = request.values.get("api_key")
if api_key: res = [minute_limits]
db_req_limit = api_keys_db.lookup(api_key)
if db_req_limit is not None:
req_limit = db_req_limit
return "%s per minute" % req_limit
res = [limits]
if daily_req_limit > 0: if daily_req_limit > 0:
res.append("%s per day" % daily_req_limit) res.append(daily_limits)
return res return res