all(minor): replace django-ipware with custom implementation

This commit is contained in:
Jens Langhammer
2019-12-05 14:33:55 +01:00
parent 328c999cb9
commit b08ec0477e
7 changed files with 226 additions and 219 deletions

View File

@ -0,0 +1,24 @@
"""http helpers"""
from typing import Any, Dict, Optional
from django.http import HttpRequest
def _get_client_ip_from_meta(meta: Dict[str, Any]) -> Optional[str]:
"""Attempt to get the client's IP by checking common HTTP Headers.
Returns none if no IP Could be found"""
headers = (
'HTTP_X_FORWARDED_FOR',
'HTTP_X_REAL_IP',
'REMOTE_ADDR',
)
for _header in headers:
if _header in meta:
return meta.get(_header)
return None
def get_client_ip(request: HttpRequest) -> Optional[str]:
"""Attempt to get the client's IP by checking common HTTP Headers.
Returns none if no IP Could be found"""
return _get_client_ip_from_meta(request.META)