[Checkins] SVN: zopyx.smartprintng.client/trunk/ supporting new email API

Andreas Jung andreas at andreas-jung.com
Sat Jul 18 05:26:08 EDT 2009


Log message for revision 101982:
  supporting new email API
  

Changed:
  U   zopyx.smartprintng.client/trunk/docs/HISTORY.txt
  U   zopyx.smartprintng.client/trunk/zopyx/smartprintng/client/zip_client.py

-=-
Modified: zopyx.smartprintng.client/trunk/docs/HISTORY.txt
===================================================================
--- zopyx.smartprintng.client/trunk/docs/HISTORY.txt	2009-07-18 08:56:28 UTC (rev 101981)
+++ zopyx.smartprintng.client/trunk/docs/HISTORY.txt	2009-07-18 09:26:08 UTC (rev 101982)
@@ -1,6 +1,12 @@
 Changelog
 =========
 
+0.3.0 (unreleased)
+------------------
+
+* preliminary support for the email API
+
+
 0.2.0 (2009-07-08)
 ------------------
 

Modified: zopyx.smartprintng.client/trunk/zopyx/smartprintng/client/zip_client.py
===================================================================
--- zopyx.smartprintng.client/trunk/zopyx/smartprintng/client/zip_client.py	2009-07-18 08:56:28 UTC (rev 101981)
+++ zopyx.smartprintng.client/trunk/zopyx/smartprintng/client/zip_client.py	2009-07-18 09:26:08 UTC (rev 101982)
@@ -18,6 +18,24 @@
         self.host = host
         self.port = port
 
+    def _makeZipFromDirectory(self, directory):
+        """ generate a ZIP file from a directory containing all its 
+            contents
+        """
+
+        directory = os.path.abspath(directory)
+
+        zip_filename = tempfile.mktemp()
+        ZF = zipfile.ZipFile(zip_filename, 'w')
+        for dirname, dirnames, filenames in os.walk(directory):
+            for fname in filenames:
+                arcname = os.path.join(dirname, fname).replace(directory + os.path.sep, '')
+                fullname = os.path.abspath(os.path.join(dirname, fname))
+                ZF.write(fullname, arcname)
+
+        ZF.close()
+        return zip_filename
+
     def ping(self):
         server = xmlrpclib.ServerProxy('http://%s:%d/ping' % (self.host, self.port))
         return server()
@@ -28,23 +46,16 @@
 
     def convertZIP(self, dirname, converter_name='pdf-prince'):
         """ XMLRPC client to SmartPrintNG server """
-        cwd = os.getcwd()
-        os.chdir(dirname)
-        server = xmlrpclib.ServerProxy('http://%s:%d/convertZIP' % (self.host, self.port))
-        zip_filename = tempfile.mktemp()
-        ZF = zipfile.ZipFile(zip_filename, 'w')
-        for fname in os.listdir('.'):
-            if not os.path.isfile(fname):
-                continue
-            fullname = os.path.join(dirname, fname)
-            ZF.write(fname)
-        ZF.close()
 
+        zip_filename = self._makeZipFromDirectory(dirname)
+
         # send the ZIP archive base64 encoded
+        server = xmlrpclib.ServerProxy('http://%s:%d/convertZIP' % (self.host, self.port))
         zip_data = server(base64.encodestring(file(zip_filename, 'rb').read()),
                           converter_name)
 
-        # and receive the result PDF as base64 encoded ZIP archive
+        # and receive the conversion result as base64 encoded ZIP archive
+        # (it will contain only *one* file)
         zip_temp = tempfile.mktemp()
         file(zip_temp, 'wb').write(base64.decodestring(zip_data))
         ZF = zipfile.ZipFile(zip_temp, 'r')
@@ -54,24 +65,14 @@
         ZF.close()
         os.unlink(zip_filename)
         os.unlink(zip_temp)
-        os.chdir(cwd)
         return output_filename
 
     def convertZIPEmail(self, dirname, converter_name='pdf-prince'):
 
-        cwd = os.getcwd()
-        os.chdir(dirname)
-        server = xmlrpclib.ServerProxy('http://%s:%d/convertZIPEmail' % (self.host, self.port))
-        zip_filename = tempfile.mktemp()
-        ZF = zipfile.ZipFile(zip_filename, 'w')
-        for fname in os.listdir('.'):
-            if not os.path.isfile(fname):
-                continue
-            fullname = os.path.join(dirname, fname)
-            ZF.write(fname)
-        ZF.close()
+        zip_filename = self._makeZipFromDirectory(dirname)
 
         # send the ZIP archive base64 encoded
+        server = xmlrpclib.ServerProxy('http://%s:%d/convertZIPEmail' % (self.host, self.port))
         result = server.convertZIPEmail(base64.encodestring(file(zip_filename, 'rb').read()),
                                         converter_name)
         return result
@@ -83,6 +84,6 @@
     proxy = Proxy(port=6543)
     print proxy.ping()
     print proxy.availableConverters()
-#    print proxy.convertZIP(sys.argv[1])
+    print proxy.convertZIP(sys.argv[1])
     print proxy.convertZIPEmail(sys.argv[1])
 



More information about the Checkins mailing list