aboutsummaryrefslogtreecommitdiff
path: root/src/hydrilla/proxy/policies/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/hydrilla/proxy/policies/base.py')
-rw-r--r--src/hydrilla/proxy/policies/base.py18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/hydrilla/proxy/policies/base.py b/src/hydrilla/proxy/policies/base.py
index 0c37185..7ce5105 100644
--- a/src/hydrilla/proxy/policies/base.py
+++ b/src/hydrilla/proxy/policies/base.py
@@ -62,12 +62,20 @@ popup_script = jinja_env.get_template('popup.js.jinja').render()
popup_script_sha256_bytes = sha256(popup_script.encode()).digest()
popup_script_sha256_b64 = b64encode(popup_script_sha256_bytes).decode()
+
class PolicyPriority(int, enum.Enum):
"""...."""
_ONE = 1
_TWO = 2
_THREE = 3
+
+class MsgProcessOpt(enum.Enum):
+ """...."""
+ MUST = True
+ MUST_NOT = False
+
+
MessageInfo = t.Union[
http_messages.RequestInfo,
http_messages.ResponseInfo
@@ -91,8 +99,8 @@ BOMs = (
# https://stackoverflow.com/questions/70999513/conflict-between-mix-ins-for-abstract-dataclasses/70999704#70999704
@dc.dataclass(frozen=True) # type: ignore[misc]
class Policy(ABC):
- _process_request: t.ClassVar[bool] = False
- _process_response: t.ClassVar[bool] = False
+ _process_request: t.ClassVar[t.Optional[MsgProcessOpt]] = None
+ _process_response: t.ClassVar[t.Optional[MsgProcessOpt]] = None
anticache: t.ClassVar[bool] = True
priority: t.ClassVar[PolicyPriority]
@@ -107,15 +115,15 @@ class Policy(ABC):
self,
request_info: http_messages.BodylessRequestInfo
) -> bool:
- return self._process_request
+ return self._process_request == MsgProcessOpt.MUST
def should_process_response(
self,
request_info: http_messages.RequestInfo,
response_info: http_messages.AnyResponseInfo
) -> bool:
- if self._process_response:
- return True
+ if self._process_response is not None:
+ return self._process_response.value
return (self.current_popup_settings.popup_enabled and
http_messages.is_likely_a_page(request_info, response_info))