[Checkins] SVN: zopyx.smartprintng.client/trunk/ updated

Andreas Jung andreas at andreas-jung.com
Tue Aug 2 07:21:05 EDT 2011


Log message for revision 122440:
  updated

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

-=-
Modified: zopyx.smartprintng.client/trunk/README.txt
===================================================================
--- zopyx.smartprintng.client/trunk/README.txt	2011-08-01 21:02:31 UTC (rev 122439)
+++ zopyx.smartprintng.client/trunk/README.txt	2011-08-02 11:21:04 UTC (rev 122440)
@@ -9,7 +9,6 @@
 =======
 This package is licensed under the Zope Public License V 2.1 (ZPL).
 
-
 Contact
 =======
 

Modified: zopyx.smartprintng.client/trunk/docs/HISTORY.txt
===================================================================
--- zopyx.smartprintng.client/trunk/docs/HISTORY.txt	2011-08-01 21:02:31 UTC (rev 122439)
+++ zopyx.smartprintng.client/trunk/docs/HISTORY.txt	2011-08-02 11:21:04 UTC (rev 122440)
@@ -1,6 +1,11 @@
 Changelog
 =========
 
+0.8.0 (2011-08-02)
+------------------
+- obsoleted Proxy() implementation
+- added Proxy2() implementation supporting a standard URL 
+
 0.7.0 (2011-03-02)
 ------------------
 - removed convertZIP() api method

Modified: zopyx.smartprintng.client/trunk/setup.py
===================================================================
--- zopyx.smartprintng.client/trunk/setup.py	2011-08-01 21:02:31 UTC (rev 122439)
+++ zopyx.smartprintng.client/trunk/setup.py	2011-08-02 11:21:04 UTC (rev 122440)
@@ -7,7 +7,7 @@
 from setuptools import setup, find_packages
 import os
 
-version = '0.7.0'
+version = '0.8.0'
 
 setup(name='zopyx.smartprintng.client',
       version=version,

Modified: zopyx.smartprintng.client/trunk/zopyx/smartprintng/client/zip_client.py
===================================================================
--- zopyx.smartprintng.client/trunk/zopyx/smartprintng/client/zip_client.py	2011-08-01 21:02:31 UTC (rev 122439)
+++ zopyx.smartprintng.client/trunk/zopyx/smartprintng/client/zip_client.py	2011-08-02 11:21:04 UTC (rev 122440)
@@ -17,6 +17,7 @@
 
 
 class Proxy(object):
+    """ THIS IMPLEMENTATION IS OBSOLETE, USE 'Proxy2' INSTEAD """
 
     def __init__(self, host='localhost', port=6543, username='', password=''):
         self.host = host
@@ -121,17 +122,103 @@
         return result
 
 
+class Proxy2(Proxy):
+    """ ZIP Client proxy """
+
+    def __init__(self, url):
+        """ Accepts the url of P&P server as
+            http://user:password@host:port
+        """
+        self.url = url
+        self.setOutputDirectory(os.path.join(tempfile.gettempdir(), 'smartprintng_client', str(time.time())))
+
+    def setOutputDirectory(self, output_directory):
+        if not os.path.exists(output_directory):
+            os.makedirs(output_directory)
+        self.output_directory = output_directory
+
+    def _makeZipFromDirectory(self, directory):
+        """ Generate a ZIP file from a directory containing all its
+            contents. Returns the filename of the generated ZIP file.
+        """
+
+        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(self.url + '/ping')
+        return server()
+
+    def availableConverters(self):
+        server = xmlrpclib.ServerProxy(self.url + '/availableConverters')
+        return server()
+
+    def convertZIP2(self, dirname, converter_name='pdf-prince', workdir=None):
+        """ XMLRPC client to SmartPrintNG server """
+
+        zip_filename = self._makeZipFromDirectory(dirname)
+        server = xmlrpclib.ServerProxy(self.url + '/convertZIP')
+        zip_data = server('',
+                          base64.encodestring(file(zip_filename, 'rb').read()),
+                          converter_name)
+
+        # 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))
+
+        result = dict()
+        ZF = zipfile.ZipFile(zip_temp, 'r')
+        for name in ZF.namelist():
+            fullname = os.path.join(workdir or self.output_directory, os.path.basename(name))
+            file(fullname, 'wb').write(ZF.read(name))
+            if name.startswith('output.'):
+                result['output_filename'] = fullname
+            elif name.startswith('conversion-output'):
+                result['conversion_output'] = fullname
+        ZF.close()
+        os.unlink(zip_filename)
+        os.unlink(zip_temp)
+        return result
+
+    def convertZIPandRedirect(self, dirname, converter_name='pdf-prince', prefix=None):
+        """ XMLRPC client to SmartPrintNG server """
+
+        zip_filename = self._makeZipFromDirectory(dirname)
+        server = xmlrpclib.ServerProxy(self.url + '/convertZIPandRedirect')
+        location = server('',
+                          base64.encodestring(file(zip_filename, 'rb').read()),
+                          converter_name,
+                          prefix)
+        os.unlink(zip_filename)
+        return location
+
+    def convertZIPEmail(self, dirname, converter_name='pdf-prince', 
+                        sender=None, recipients=None, subject=None, body=None):
+
+        zip_filename = self._makeZipFromDirectory(dirname)
+        server = xmlrpclib.ServerProxy(self.url + '/convertZIPEmail')
+        result = server.convertZIPEmail('',
+                                        base64.encodestring(file(zip_filename, 'rb').read()),
+                                        converter_name,
+                                        sender,
+                                        recipients,
+                                        subject,
+                                        body)
+        return result
+
+
 if __name__ == '__main__':
-    # usage: convertZIP <dirname>
-
-    proxy = Proxy(host='localhost', port=6543)
+    
+    proxy = Proxy2('http://localhost:6543')
     print proxy.ping()
     print proxy.availableConverters()
-    print proxy.convertZIP(sys.argv[1])
     print proxy.convertZIP2(sys.argv[1])
-#    print proxy.convertZIPEmail(sys.argv[1], 
-#                                sender='foo at bar.org', 
-#                                recipients='foo at bar.org', 
-#                                subject=unicode('üöä', 'latin1').encode('utf-8'),
-#                                body=unicode('üöä', 'latin1').encode('utf-8'))
-



More information about the checkins mailing list