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())