annotate PythonTrustStore-0.2.0/py_ts/parts.py @ 1:ff126718bdc5

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