diff options
| author | Yuval Adam <_@yuv.al> | 2018-03-09 11:23:18 +0200 |
|---|---|---|
| committer | Yuval Adam <_@yuv.al> | 2018-03-09 11:23:18 +0200 |
| commit | 519590839ec777b5b95a7779180fba9a0d03c05a (patch) | |
| tree | 0fc3f8b31047edef46203fc6068f6a5e675b9348 | |
| parent | c940933e2183e3d23b57212d187dabf201b4cf4f (diff) | |
Add triplet support
| -rw-r--r-- | tests/test_parse.py | 4 | ||||
| -rw-r--r-- | viewstate/parse.py | 8 |
2 files changed, 12 insertions, 0 deletions
diff --git a/tests/test_parse.py b/tests/test_parse.py index bc213eb..862cf24 100644 --- a/tests/test_parse.py +++ b/tests/test_parse.py @@ -32,6 +32,10 @@ class TestParse(object): vs = ViewState(raw=b'\xff\x01\x0f\x67\x68') assert vs.decode() == (True, False) + def test_simple_triplet(self): + vs = ViewState(raw=b'\xff\x01\x10\x67\x68\x67') + assert vs.decode() == (True, False, True) + def test_complex_pair(self): vs = ViewState() vs.raw = b'\xff\x01\x0f\x67\x0f\x68\x66' diff --git a/viewstate/parse.py b/viewstate/parse.py index 6eee3fa..2afca9a 100644 --- a/viewstate/parse.py +++ b/viewstate/parse.py @@ -43,6 +43,12 @@ def parse_pair(b): second, remain = parse(remain) return (first, second), remain +def parse_triplet(b): + first, remain = parse(b) + second, remain = parse(remain) + third, remain = parse(remain) + return (first, second, third), remain + def parse_str_array(b): n, remain = parse_int(b) l = [] @@ -116,6 +122,8 @@ def parse(b): return parse_int(b[1:]) elif b[0] in (0x5, 0x1e): return parse_string(b[1:]) + elif b[0] == 0x10: + return parse_triplet(b[1:]) elif b[0] == 0xb: return parse_enum(b[1:]) elif b[0] == 0xf: |
