diff options
author | Wojtek Kosior <koszko@koszko.org> | 2022-08-11 15:47:13 +0200 |
---|---|---|
committer | Wojtek Kosior <koszko@koszko.org> | 2022-08-11 15:47:13 +0200 |
commit | a38d19576c387e505cc468b20ca5b8bcf2fa4759 (patch) | |
tree | a578f4056dfea683d3bb2714ae1620eac576da0e /src/hydrilla/proxy/policies/payload.py | |
parent | ad97639bbf982b5b3b2757e75c3f91556e3a8eac (diff) | |
download | haketilo-hydrilla-a38d19576c387e505cc468b20ca5b8bcf2fa4759.tar.gz haketilo-hydrilla-a38d19576c387e505cc468b20ca5b8bcf2fa4759.zip |
move classes/protocols for representing HTTP requests and responses data into a separate file
Diffstat (limited to 'src/hydrilla/proxy/policies/payload.py')
-rw-r--r-- | src/hydrilla/proxy/policies/payload.py | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/hydrilla/proxy/policies/payload.py b/src/hydrilla/proxy/policies/payload.py index 1a88ea1..ad0fa05 100644 --- a/src/hydrilla/proxy/policies/payload.py +++ b/src/hydrilla/proxy/policies/payload.py @@ -38,8 +38,9 @@ import re import bs4 # type: ignore from ...url_patterns import ParsedUrl -from .. import state from .. import csp +from .. import state +from .. import http_messages from . import base @dc.dataclass(frozen=True) # type: ignore[misc] @@ -96,7 +97,7 @@ charset= # no whitespace allowed in parameter as per RFC $ # forbid possible dangling characters after closing '"' ''', re.VERBOSE | re.IGNORECASE) -def deduce_content_type(headers: base.IHeaders) \ +def deduce_content_type(headers: http_messages.IHeaders) \ -> tuple[t.Optional[str], t.Optional[str]]: """....""" content_type = headers.get('content-type') @@ -157,7 +158,7 @@ class PayloadInjectPolicy(PayloadAwarePolicy): "script-src-attr 'none'" )) - def _modify_headers(self, response_info: base.ResponseInfo) \ + def _modify_headers(self, response_info: http_messages.ResponseInfo) \ -> t.Iterable[tuple[bytes, bytes]]: """....""" for header_name, header_value in response_info.headers.items(): @@ -211,8 +212,10 @@ class PayloadInjectPolicy(PayloadAwarePolicy): # https://www.w3.org/International/tests/repository/html5/the-input-byte-stream/results-basics#precedence return UTF8_BOM + soup.encode() - def _consume_response_unsafe(self, response_info: base.ResponseInfo) \ - -> base.ProducedResponse: + def _consume_response_unsafe( + self, + response_info: http_messages.ResponseInfo + ) -> http_messages.ProducedResponse: """....""" new_response = response_info.make_produced_response() @@ -237,8 +240,8 @@ class PayloadInjectPolicy(PayloadAwarePolicy): return dc.replace(new_response, body=new_data) - def consume_response(self, response_info: base.ResponseInfo) \ - -> base.ProducedResponse: + def consume_response(self, response_info: http_messages.ResponseInfo) \ + -> http_messages.ProducedResponse: """....""" try: return self._consume_response_unsafe(response_info) @@ -252,7 +255,7 @@ class PayloadInjectPolicy(PayloadAwarePolicy): e.__traceback__ ) - return base.ProducedResponse( + return http_messages.ProducedResponse( 500, ((b'Content-Type', b'text/plain; charset=utf-8'),), '\n'.join(error_info_list).encode() @@ -282,11 +285,11 @@ class PayloadSuggestPolicy(PayloadAwarePolicy): """....""" priority: t.ClassVar[base.PolicyPriority] = base.PolicyPriority._ONE - def make_response(self, request_info: base.RequestInfo) \ - -> base.ProducedResponse: + def make_response(self, request_info: http_messages.RequestInfo) \ + -> http_messages.ProducedResponse: """....""" # TODO: implement - return base.ProducedResponse(200, ((b'a', b'b'),), b'') + return http_messages.ProducedResponse(200, ((b'a', b'b'),), b'') @dc.dataclass(frozen=True, unsafe_hash=True) # type: ignore[misc] |