Lol
This commit is contained in:
		
							
								
								
									
										83
									
								
								venv/lib/python3.11/site-packages/itsdangerous/url_safe.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								venv/lib/python3.11/site-packages/itsdangerous/url_safe.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | ||||
| from __future__ import annotations | ||||
|  | ||||
| import typing as t | ||||
| import zlib | ||||
|  | ||||
| from ._json import _CompactJSON | ||||
| from .encoding import base64_decode | ||||
| from .encoding import base64_encode | ||||
| from .exc import BadPayload | ||||
| from .serializer import _PDataSerializer | ||||
| from .serializer import Serializer | ||||
| from .timed import TimedSerializer | ||||
|  | ||||
|  | ||||
| class URLSafeSerializerMixin(Serializer[str]): | ||||
|     """Mixed in with a regular serializer it will attempt to zlib | ||||
|     compress the string to make it shorter if necessary. It will also | ||||
|     base64 encode the string so that it can safely be placed in a URL. | ||||
|     """ | ||||
|  | ||||
|     default_serializer: _PDataSerializer[str] = _CompactJSON | ||||
|  | ||||
|     def load_payload( | ||||
|         self, | ||||
|         payload: bytes, | ||||
|         *args: t.Any, | ||||
|         serializer: t.Any | None = None, | ||||
|         **kwargs: t.Any, | ||||
|     ) -> t.Any: | ||||
|         decompress = False | ||||
|  | ||||
|         if payload.startswith(b"."): | ||||
|             payload = payload[1:] | ||||
|             decompress = True | ||||
|  | ||||
|         try: | ||||
|             json = base64_decode(payload) | ||||
|         except Exception as e: | ||||
|             raise BadPayload( | ||||
|                 "Could not base64 decode the payload because of an exception", | ||||
|                 original_error=e, | ||||
|             ) from e | ||||
|  | ||||
|         if decompress: | ||||
|             try: | ||||
|                 json = zlib.decompress(json) | ||||
|             except Exception as e: | ||||
|                 raise BadPayload( | ||||
|                     "Could not zlib decompress the payload before decoding the payload", | ||||
|                     original_error=e, | ||||
|                 ) from e | ||||
|  | ||||
|         return super().load_payload(json, *args, **kwargs) | ||||
|  | ||||
|     def dump_payload(self, obj: t.Any) -> bytes: | ||||
|         json = super().dump_payload(obj) | ||||
|         is_compressed = False | ||||
|         compressed = zlib.compress(json) | ||||
|  | ||||
|         if len(compressed) < (len(json) - 1): | ||||
|             json = compressed | ||||
|             is_compressed = True | ||||
|  | ||||
|         base64d = base64_encode(json) | ||||
|  | ||||
|         if is_compressed: | ||||
|             base64d = b"." + base64d | ||||
|  | ||||
|         return base64d | ||||
|  | ||||
|  | ||||
| class URLSafeSerializer(URLSafeSerializerMixin, Serializer[str]): | ||||
|     """Works like :class:`.Serializer` but dumps and loads into a URL | ||||
|     safe string consisting of the upper and lowercase character of the | ||||
|     alphabet as well as ``'_'``, ``'-'`` and ``'.'``. | ||||
|     """ | ||||
|  | ||||
|  | ||||
| class URLSafeTimedSerializer(URLSafeSerializerMixin, TimedSerializer[str]): | ||||
|     """Works like :class:`.TimedSerializer` but dumps and loads into a | ||||
|     URL safe string consisting of the upper and lowercase character of | ||||
|     the alphabet as well as ``'_'``, ``'-'`` and ``'.'``. | ||||
|     """ | ||||
		Reference in New Issue
	
	Block a user
	 klein panic
					klein panic