Mercurial > repos > cathywise > truststore_import
diff PythonTrustStore-0.2.0/py_ts/parts.py @ 1:ff126718bdc5
Uploaded
author | cathywise |
---|---|
date | Wed, 11 Dec 2013 21:05:12 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PythonTrustStore-0.2.0/py_ts/parts.py Wed Dec 11 21:05:12 2013 -0500 @@ -0,0 +1,121 @@ +import pprint +import json +import base64 +import traceback + + +class Elem(object): + expires = -1 + name = "Elem" + remote_size = -1 + remote_last_modified = -1 + + def __init__(self, eDict=None): + if eDict: + self.expires = eDict['expiryDateTime'] + self.name = eDict['name'] + self.remote_size = eDict['remoteSize'] + if 'remoteLastmodified' in eDict: + self.remote_last_modified = eDict['remoteLastmodified'] + # if self.remote_last_modified >= 0: + # self.remote_last_modified = datetime.utcfromtimestamp(self.remote_last_modified / 1000) # JAVA RAGE + + def dict(self): + return {'expiryDateTime': self.expires, + 'name': self.name, + 'remoteSize': self.remote_size} + + def __repr__(self): + # return json.dumps(self.dict(), sort_keys=True, indent=4) + return "Elem: " + pprint.pformat(self.dict()) + + +class Directory(Elem): + name = "Virtual Directory" + children = [] + + def __init__(self, eDict=None, jsonText=None): + self.children = [] + if jsonText: + eDict = json.loads(jsonText) + if eDict: + Elem.__init__(self, eDict=eDict) + + for child in eDict['children']: + if child['isDir']: + self.children.append(Directory(child)) + else: + self.children.append(File(child)) + + def dict(self): + me = Elem.dict(self) + me['isDir'] = True + me['children'] = [kid.dict() for kid in self.children] + return me + + def __repr__(self): + this = self.dict() + return "Directory: " + pprint.pformat(this) + # return json.dumps(this, sort_keys=True, indent=4) + + +class File(Elem): + name = "file" + remote_size = 0 + local_path = "" + fragments = [] + + def __init__(self, extras=None): + self.fragments = [] + if extras: + Elem.__init__(self, eDict=extras) + + for fragment in extras['fragments']: + self.fragments.append(Fragment(fragment)) + + def dict(self): + me = Elem.dict(self) + me['isDir'] = False + me['fragments'] = [fragment.dict() for fragment in self.fragments] + return me + + def __repr__(self): + # return json.dumps(self.dict(), sort_keys=True, indent=4) + return "File: " + pprint.pformat(self.dict()) + + +class Fragment(object): + name = "" + order = 0 + providers = [] + # Newer root files have these + length = None + iv = None + offset = None + + def __init__(self, eDict=None): + if eDict: + self.name = eDict['codename'] + self.order = eDict['orderNo'] + self.providers = eDict['sasProviders'] + if "length" in eDict: + self.length = eDict["length"] + if "iv" in eDict: + self.iv = base64.b64decode(eDict["iv"]) + if "offset" in eDict: + self.offset = eDict["offset"] + else: + self.providers = [] + + def dict(self): + form = {'codename': self.name, 'orderNo': self.order, 'sasProviders': self.providers} + if self.length: + form["length"] = self.length + if self.iv: + form["iv"] = base64.b64encode(self.iv) + if self.offset != None: + form["offset"] = self.offset + return form + + def __repr__(self): + return json.dumps(self.dict())