Remove cachetools dependency
This commit is contained in:
parent
5eee66d071
commit
f6ad5e5c55
5
ipapi.py
5
ipapi.py
|
@ -9,7 +9,6 @@ from zlib import decompress
|
|||
from re import compile
|
||||
from urllib.parse import unquote
|
||||
from hilbertcurve.hilbertcurve import HilbertCurve
|
||||
from cachetools import TTLCache
|
||||
from ipaddress import IPv4Network
|
||||
from dns.resolver import resolve_address, NXDOMAIN, NoAnswer, LifetimeTimeout, NoNameservers
|
||||
from dns.exception import SyntaxError
|
||||
|
@ -56,13 +55,13 @@ def error_response(message: str, status_code: int, headers: dict = {}):
|
|||
|
||||
limit = int(args.limit)
|
||||
limit_ttl = 3600
|
||||
ttl_cache = TTLCache(maxsize = 1024, ttl = limit_ttl)
|
||||
ttl_cache: dict[str, list[int]] = dict()
|
||||
|
||||
@app.before_request()
|
||||
def middleware(request: Request):
|
||||
if request.ip_addr:
|
||||
current_timestamp = int(time())
|
||||
timestamps = [t for t in ttl_cache.get(request.ip_addr, default = []) if t > current_timestamp - limit_ttl] + [current_timestamp]
|
||||
timestamps = [t for t in ttl_cache.get(request.ip_addr, []) if t > current_timestamp - limit_ttl] + [current_timestamp]
|
||||
ttl_cache[request.ip_addr] = timestamps
|
||||
if len(timestamps) > limit:
|
||||
return error_response("Rate limit exceeded!", 429)
|
||||
|
|
|
@ -1,16 +1,5 @@
|
|||
# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand.
|
||||
|
||||
[[package]]
|
||||
name = "cachetools"
|
||||
version = "5.3.3"
|
||||
description = "Extensible memoizing collections and decorators"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "cachetools-5.3.3-py3-none-any.whl", hash = "sha256:0abad1021d3f8325b2fc1d2e9c8b9c9d57b04c3932657a72465447332c24d945"},
|
||||
{file = "cachetools-5.3.3.tar.gz", hash = "sha256:ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dill"
|
||||
version = "0.3.8"
|
||||
|
@ -435,4 +424,4 @@ files = [
|
|||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.11"
|
||||
content-hash = "805d5d3d73ead8269e5250a2ba6be33cdc9b6201a97ac39479dc335c1db014c6"
|
||||
content-hash = "70433eecb2a0b956cabdef7a442fb1adde89a8d1fd19c53f52d6ad2fb8ef3e48"
|
||||
|
|
|
@ -11,7 +11,6 @@ python = "^3.11"
|
|||
dnspython = "^2.6.1"
|
||||
hilbertcurve = "^2.0.5"
|
||||
robyn = "^0.54.1"
|
||||
cachetools = "^5.3.3"
|
||||
|
||||
|
||||
[build-system]
|
||||
|
|
Loading…
Reference in New Issue