Mercurial > repos > cathywise > truststore_import
comparison PythonTrustStore-0.2.0/py_ts/parts.py @ 1:ff126718bdc5
Uploaded
author | cathywise |
---|---|
date | Wed, 11 Dec 2013 21:05:12 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:22cc897d85c5 | 1:ff126718bdc5 |
---|---|
1 import pprint | |
2 import json | |
3 import base64 | |
4 import traceback | |
5 | |
6 | |
7 class Elem(object): | |
8 expires = -1 | |
9 name = "Elem" | |
10 remote_size = -1 | |
11 remote_last_modified = -1 | |
12 | |
13 def __init__(self, eDict=None): | |
14 if eDict: | |
15 self.expires = eDict['expiryDateTime'] | |
16 self.name = eDict['name'] | |
17 self.remote_size = eDict['remoteSize'] | |
18 if 'remoteLastmodified' in eDict: | |
19 self.remote_last_modified = eDict['remoteLastmodified'] | |
20 # if self.remote_last_modified >= 0: | |
21 # self.remote_last_modified = datetime.utcfromtimestamp(self.remote_last_modified / 1000) # JAVA RAGE | |
22 | |
23 def dict(self): | |
24 return {'expiryDateTime': self.expires, | |
25 'name': self.name, | |
26 'remoteSize': self.remote_size} | |
27 | |
28 def __repr__(self): | |
29 # return json.dumps(self.dict(), sort_keys=True, indent=4) | |
30 return "Elem: " + pprint.pformat(self.dict()) | |
31 | |
32 | |
33 class Directory(Elem): | |
34 name = "Virtual Directory" | |
35 children = [] | |
36 | |
37 def __init__(self, eDict=None, jsonText=None): | |
38 self.children = [] | |
39 if jsonText: | |
40 eDict = json.loads(jsonText) | |
41 if eDict: | |
42 Elem.__init__(self, eDict=eDict) | |
43 | |
44 for child in eDict['children']: | |
45 if child['isDir']: | |
46 self.children.append(Directory(child)) | |
47 else: | |
48 self.children.append(File(child)) | |
49 | |
50 def dict(self): | |
51 me = Elem.dict(self) | |
52 me['isDir'] = True | |
53 me['children'] = [kid.dict() for kid in self.children] | |
54 return me | |
55 | |
56 def __repr__(self): | |
57 this = self.dict() | |
58 return "Directory: " + pprint.pformat(this) | |
59 # return json.dumps(this, sort_keys=True, indent=4) | |
60 | |
61 | |
62 class File(Elem): | |
63 name = "file" | |
64 remote_size = 0 | |
65 local_path = "" | |
66 fragments = [] | |
67 | |
68 def __init__(self, extras=None): | |
69 self.fragments = [] | |
70 if extras: | |
71 Elem.__init__(self, eDict=extras) | |
72 | |
73 for fragment in extras['fragments']: | |
74 self.fragments.append(Fragment(fragment)) | |
75 | |
76 def dict(self): | |
77 me = Elem.dict(self) | |
78 me['isDir'] = False | |
79 me['fragments'] = [fragment.dict() for fragment in self.fragments] | |
80 return me | |
81 | |
82 def __repr__(self): | |
83 # return json.dumps(self.dict(), sort_keys=True, indent=4) | |
84 return "File: " + pprint.pformat(self.dict()) | |
85 | |
86 | |
87 class Fragment(object): | |
88 name = "" | |
89 order = 0 | |
90 providers = [] | |
91 # Newer root files have these | |
92 length = None | |
93 iv = None | |
94 offset = None | |
95 | |
96 def __init__(self, eDict=None): | |
97 if eDict: | |
98 self.name = eDict['codename'] | |
99 self.order = eDict['orderNo'] | |
100 self.providers = eDict['sasProviders'] | |
101 if "length" in eDict: | |
102 self.length = eDict["length"] | |
103 if "iv" in eDict: | |
104 self.iv = base64.b64decode(eDict["iv"]) | |
105 if "offset" in eDict: | |
106 self.offset = eDict["offset"] | |
107 else: | |
108 self.providers = [] | |
109 | |
110 def dict(self): | |
111 form = {'codename': self.name, 'orderNo': self.order, 'sasProviders': self.providers} | |
112 if self.length: | |
113 form["length"] = self.length | |
114 if self.iv: | |
115 form["iv"] = base64.b64encode(self.iv) | |
116 if self.offset != None: | |
117 form["offset"] = self.offset | |
118 return form | |
119 | |
120 def __repr__(self): | |
121 return json.dumps(self.dict()) |