diff options
| author | Yuval Adam <_@yuv.al> | 2018-02-19 23:29:37 +0100 |
|---|---|---|
| committer | Yuval Adam <_@yuv.al> | 2018-02-19 23:29:37 +0100 |
| commit | cc29d5564825541f1d21068fca2c61bda3923c92 (patch) | |
| tree | df9afd7014187579a6575b719dccf9154ec8c125 | |
| parent | 4a0f1ed2929a78d34cf6a1bbf4e67eab28026c00 (diff) | |
Refactor file structure
| -rw-r--r-- | viewstate/__init__.py | 2 | ||||
| -rw-r--r-- | viewstate/parse.py (renamed from viewstate/core.py) | 41 | ||||
| -rw-r--r-- | viewstate/viewstate.py | 43 |
3 files changed, 44 insertions, 42 deletions
diff --git a/viewstate/__init__.py b/viewstate/__init__.py index c166e0c..b6858bb 100644 --- a/viewstate/__init__.py +++ b/viewstate/__init__.py @@ -1,3 +1,3 @@ -from .core import ViewState +from .viewstate import ViewState from .exceptions import ViewStateException diff --git a/viewstate/core.py b/viewstate/parse.py index b86afc7..0692c5c 100644 --- a/viewstate/core.py +++ b/viewstate/parse.py @@ -1,6 +1,3 @@ -from base64 import b64decode, b64encode -from binascii import Error as BinAsciiError - from .exceptions import ViewStateException CONSTS = { @@ -44,7 +41,6 @@ def parse_dict(b): return d, remain def parse(b): - if not b: return None else: @@ -64,40 +60,3 @@ def parse(b): raise ViewStateException('Unable to parse remainder of bytes {}'.format(b)) return b, bytes() - -class ViewState(object): - - def __init__(self, base64=None, raw=None): - if base64: - self.base64 = base64 - try: - self.raw = b64decode(self.base64) - except BinAsciiError as bae: - raise ViewStateException('Cannot decode base64 input') - elif raw: - self.raw = raw - self.decoded = None - - @property - def preamble(self): - return self.raw[:2] - - @property - def body(self): - return self.raw[2:] - - def is_valid(self): - format_marker = b'\xff' - version_marker = b'\x01' - preamble = format_marker + version_marker - - try: - return self.preamble == preamble - except AttributeError: - return False - - def decode(self): - if not self.is_valid(): - raise ViewStateException('Cannot decode invalid viewstate, bad preamble') - self.decoded, self.remainder = parse(self.body) - return self.decoded diff --git a/viewstate/viewstate.py b/viewstate/viewstate.py new file mode 100644 index 0000000..a4e86cd --- /dev/null +++ b/viewstate/viewstate.py @@ -0,0 +1,43 @@ +from base64 import b64decode, b64encode +from binascii import Error as BinAsciiError + +from .exceptions import ViewStateException +from .parse import parse + + +class ViewState(object): + + def __init__(self, base64=None, raw=None): + if base64: + self.base64 = base64 + try: + self.raw = b64decode(self.base64) + except BinAsciiError as bae: + raise ViewStateException('Cannot decode base64 input') + elif raw: + self.raw = raw + self.decoded = None + + @property + def preamble(self): + return self.raw[:2] + + @property + def body(self): + return self.raw[2:] + + def is_valid(self): + format_marker = b'\xff' + version_marker = b'\x01' + preamble = format_marker + version_marker + + try: + return self.preamble == preamble + except AttributeError: + return False + + def decode(self): + if not self.is_valid(): + raise ViewStateException('Cannot decode invalid viewstate, bad preamble') + self.decoded, self.remainder = parse(self.body) + return self.decoded |
