summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2018-02-19 23:29:37 +0100
committerYuval Adam <_@yuv.al>2018-02-19 23:29:37 +0100
commitcc29d5564825541f1d21068fca2c61bda3923c92 (patch)
treedf9afd7014187579a6575b719dccf9154ec8c125
parent4a0f1ed2929a78d34cf6a1bbf4e67eab28026c00 (diff)
Refactor file structure
-rw-r--r--viewstate/__init__.py2
-rw-r--r--viewstate/parse.py (renamed from viewstate/core.py)41
-rw-r--r--viewstate/viewstate.py43
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