From 0903f9b06475cdd95212acacd50748acf7106759 Mon Sep 17 00:00:00 2001 From: Yuval Adam Date: Thu, 24 Mar 2016 22:12:32 +0200 Subject: Fix body and preamble properties --- test.py | 14 ++++++++------ viewstate.py | 15 +++++++++++---- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/test.py b/test.py index 5ef245f..1f84bc2 100644 --- a/test.py +++ b/test.py @@ -13,14 +13,16 @@ class TestViewState(unittest.TestCase): vs = ViewState(f.read()) self.assertTrue(vs.is_valid()) - # def test_invalid_decode(self): - # with self.assertRaises(Exception): - # vs = ViewState(b'\x01\x02', decoded=True) - # vs.decode() + def test_invalid_decode(self): + with self.assertRaises(Exception): + vs = ViewState() + vs.raw = b'\x01\x02' + vs.decode() # def test_parse(self): - # vs = ViewState(b'\xff\x01\x67', decoded=True) - # assertTrue(vs.decode()) + # vs = ViewState() + # vs.raw = b'\xff\x01\x67' + # self.assertTrue(vs.decode()) if __name__ == '__main__': unittest.main() diff --git a/viewstate.py b/viewstate.py index b4c162c..01417a4 100644 --- a/viewstate.py +++ b/viewstate.py @@ -9,8 +9,11 @@ CONSTS = { '\x68': False } -def parse(): - pass +def parse(b): + print([hex(x) for x in b]) + if len(b) == 1 and b in CONSTS: + return CONSTS[b] + return None class ViewState(object): @@ -21,14 +24,18 @@ class ViewState(object): self.decoded = None @property - def body(self): + 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 - return self.body == preamble + return self.preamble == preamble def decode(self): if not self.is_valid(): -- cgit v1.3.1