From 4d0ef070e8f5e2670ec2c14f428a4b0b9625dfc3 Mon Sep 17 00:00:00 2001 From: Bruno Peixoto Date: Thu, 15 Aug 2024 08:23:21 -0300 Subject: [PATCH 1/4] refac: DRY code added for ip address --- slowapi/util.py | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/slowapi/util.py b/slowapi/util.py index c44faa9..ce6f39b 100644 --- a/slowapi/util.py +++ b/slowapi/util.py @@ -1,27 +1,23 @@ from starlette.requests import Request -def get_ipaddr(request: Request) -> str: +def get_remote_address(request: Request) -> str: """ Returns the ip address for the current request (or 127.0.0.1 if none found) - based on the X-Forwarded-For headers. - Note that a more robust method for determining IP address of the client is - provided by uvicorn's ProxyHeadersMiddleware. """ - if "X_FORWARDED_FOR" in request.headers: - return request.headers["X_FORWARDED_FOR"] - else: - if not request.client or not request.client.host: - return "127.0.0.1" + is_local = not request.client or not request.client.host - return request.client.host + return "127.0.0.1" if is_local else request.client.host -def get_remote_address(request: Request) -> str: +def get_ipaddr(request: Request) -> str: """ Returns the ip address for the current request (or 127.0.0.1 if none found) + based on the X-Forwarded-For headers. + Note that a more robust method for determining IP address of the client is + provided by uvicorn's ProxyHeadersMiddleware. """ - if not request.client or not request.client.host: - return "127.0.0.1" + has_forwarded = "X_FORWARDED_FOR" in request.headers + return request.headers["X_FORWARDED_FOR"] if has_forwarded else get_remote_address(request) + - return request.client.host From 12a88f4e34aa03dd71026b89c3888edbfe06f47c Mon Sep 17 00:00:00 2001 From: Bruno Peixoto Date: Fri, 16 Aug 2024 08:00:03 -0300 Subject: [PATCH 2/4] lint: run black --- slowapi/util.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/slowapi/util.py b/slowapi/util.py index ce6f39b..ad1755d 100644 --- a/slowapi/util.py +++ b/slowapi/util.py @@ -18,6 +18,8 @@ def get_ipaddr(request: Request) -> str: provided by uvicorn's ProxyHeadersMiddleware. """ has_forwarded = "X_FORWARDED_FOR" in request.headers - return request.headers["X_FORWARDED_FOR"] if has_forwarded else get_remote_address(request) - - + return ( + request.headers["X_FORWARDED_FOR"] + if has_forwarded + else get_remote_address(request) + ) From 3109b4817c6bfc02c27389f97404da703c564e87 Mon Sep 17 00:00:00 2001 From: Bruno Peixoto Date: Tue, 20 Aug 2024 11:17:11 -0300 Subject: [PATCH 3/4] refactor: review code structure --- slowapi/util.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/slowapi/util.py b/slowapi/util.py index ad1755d..de674ca 100644 --- a/slowapi/util.py +++ b/slowapi/util.py @@ -7,7 +7,10 @@ def get_remote_address(request: Request) -> str: """ is_local = not request.client or not request.client.host - return "127.0.0.1" if is_local else request.client.host + if is_local: + return "127.0.0.1" + else: + return request.client.host def get_ipaddr(request: Request) -> str: @@ -18,8 +21,8 @@ def get_ipaddr(request: Request) -> str: provided by uvicorn's ProxyHeadersMiddleware. """ has_forwarded = "X_FORWARDED_FOR" in request.headers - return ( - request.headers["X_FORWARDED_FOR"] - if has_forwarded - else get_remote_address(request) - ) + + if has_forwarded: + return request.headers["X_FORWARDED_FOR"] + else: + return get_remote_address(request) From 201055a3e70736357c2fd587f93634fec72b136b Mon Sep 17 00:00:00 2001 From: Bruno Peixoto Date: Thu, 22 Aug 2024 07:58:24 -0300 Subject: [PATCH 4/4] format: black --- slowapi/util.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/slowapi/util.py b/slowapi/util.py index de674ca..a596003 100644 --- a/slowapi/util.py +++ b/slowapi/util.py @@ -21,8 +21,8 @@ def get_ipaddr(request: Request) -> str: provided by uvicorn's ProxyHeadersMiddleware. """ has_forwarded = "X_FORWARDED_FOR" in request.headers - + if has_forwarded: return request.headers["X_FORWARDED_FOR"] else: - return get_remote_address(request) + return get_remote_address(request)