from sanic.request import Request
from sanic_ipware import get_client_ip
from sanic_boom.utils import REQUEST_CACHE_KEY
[docs]class BoomRequest(Request):
@property
def remote_addr(self):
if not hasattr(self, "_remote_addr"):
proxy_count = None
proxy_trusted_ips = None
request_header_order = None
if self.app and self.app.config:
proxy_count = getattr(
self.app.config, "IPWARE_PROXY_COUNT", None
)
proxy_trusted_ips = getattr(
self.app.config, "IPWARE_PROXY_TRUSTED_IPS", None
)
request_header_order = getattr(
self.app.config, "IPWARE_REQUEST_HEADER_ORDER", None
)
ip, _ = get_client_ip(
self,
proxy_count=proxy_count,
proxy_trusted_ips=proxy_trusted_ips,
request_header_order=request_header_order,
)
self._remote_addr = ip
return self._remote_addr
@property
def components(self):
if REQUEST_CACHE_KEY in self:
return self[REQUEST_CACHE_KEY]
return None