"""ACME JSON fields.""" import datetime from typing import Any import logging import josepy as jose import pyrfc3339 logger = logging.getLogger(__name__) class Fixed(jose.Field): """Fixed field.""" def __init__(self, json_name: str, value: Any) -> None: self.value = value super().__init__( json_name=json_name, default=value, omitempty=False) def decode(self, value: Any) -> Any: if value != self.value: raise jose.DeserializationError('Expected {0!r}'.format(self.value)) return self.value def encode(self, value: Any) -> Any: if value != self.value: logger.warning( 'Overriding fixed field (%s) with %r', self.json_name, value) return value class RFC3339Field(jose.Field): """RFC3339 field encoder/decoder. Handles decoding/encoding between RFC3339 strings and aware (not naive) `datetime.datetime` objects (e.g. ``datetime.datetime.now(pytz.utc)``). """ @classmethod def default_encoder(cls, value: datetime.datetime) -> str: return pyrfc3339.generate(value) @classmethod def default_decoder(cls, value: str) -> datetime.datetime: try: return pyrfc3339.parse(value) except ValueError as error: raise jose.DeserializationError(error) class Resource(jose.Field): """Resource MITM field.""" def __init__(self, resource_type: str, *args: Any, **kwargs: Any) -> None: self.resource_type = resource_type super().__init__( 'resource', default=resource_type, *args, **kwargs) def decode(self, value: Any) -> Any: if value != self.resource_type: raise jose.DeserializationError( 'Wrong resource type: {0} instead of {1}'.format( value, self.resource_type)) return value
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
__init__.py | File | 726 B | 0644 |
|
challenges.py | File | 21.19 KB | 0644 |
|
client.py | File | 52.86 KB | 0644 |
|
crypto_util.py | File | 16.34 KB | 0644 |
|
errors.py | File | 4.21 KB | 0644 |
|
fields.py | File | 1.84 KB | 0644 |
|
jws.py | File | 2.33 KB | 0644 |
|
magic_typing.py | File | 595 B | 0644 |
|
messages.py | File | 24.74 KB | 0644 |
|
mixins.py | File | 2.78 KB | 0644 |
|
standalone.py | File | 12.83 KB | 0644 |
|
util.py | File | 303 B | 0644 |
|