Rev 189: Added first run at XMLRPC implementation. in http://bzr.daniel-watkins.co.uk/pqm/xmlrpc

Daniel Watkins daniel at daniel-watkins.co.uk
Thu Jul 31 07:11:42 BST 2008


At http://bzr.daniel-watkins.co.uk/pqm/xmlrpc

------------------------------------------------------------
revno: 189
revision-id: daniel at daniel-watkins.co.uk-20080731061007-75p4l4jeumuv5sca
parent: daniel at daniel-watkins.co.uk-20080731060950-30tvvr16rvo7w3wm
committer: Daniel Watkins <daniel at daniel-watkins.co.uk>
branch nick: xmlrpc
timestamp: Thu 2008-07-31 07:10:07 +0100
message:
  Added first run at XMLRPC implementation.
-------------- next part --------------
=== modified file 'pqm/ui/twistd.py'
--- a/pqm/ui/twistd.py	2008-07-31 05:57:47 +0000
+++ b/pqm/ui/twistd.py	2008-07-31 06:10:07 +0000
@@ -186,7 +186,7 @@
     port_str = os.environ.get('PQM_PORT', '8000')
     r = resource.Resource()
     r.putChild('', QueueResource(pqminfo))
-    r.putChild('RPC2', PQM_XMLRPC())
+    r.putChild('RPC2', PQM_XMLRPC(pqminfo))
     internet.TCPServer(int(port_str), server.Site(r)
         ).setServiceParent(serviceCollection)
     internet.TimerService(30, pqminfo.refresh).setServiceParent(serviceCollection)

=== modified file 'pqm/ui/xmlrpc.py'
--- a/pqm/ui/xmlrpc.py	2008-07-31 04:17:14 +0000
+++ b/pqm/ui/xmlrpc.py	2008-07-31 06:10:07 +0000
@@ -1,9 +1,52 @@
+import logging
+import os.path
+from StringIO import StringIO
+import time
+
 from twisted.web.xmlrpc import XMLRPC
 
+import pqm
+from pqm.errors import PQMException
+from pqm.script import get_email_string, read_email_from_string
+
+
+class Options(object):
+
+    pass
+
 
 class PQM_XMLRPC(XMLRPC):
 
+    def __init__(self, pqminfo):
+        XMLRPC.__init__(self)
+        self.pqminfo = pqminfo
+        self.logger = logging.getLogger('pqm')
+
     def xmlrpc_submit(self, text):
-        print text
-
-        return text
+        try:
+            queuedir = self.pqminfo.queuedir
+            queuedir = os.path.abspath(queuedir)
+            # Set up options for processing
+            options = Options()
+            options.verify_sigs = False #self.pqminfo.configp.get_boolean_option(
+            #    'DEFAULT', 'verify_sigs', True)
+            options.keyring = self.pqminfo.configp.get('DEFAULT', 'keyring')
+            # TODO: Eww.
+            pqm.gpgv_path = self.pqminfo.configp.get_option('DEFAULT',
+                'gpgv_path', 'gpgv')
+            pqm_subdir = os.path.join(queuedir, 'pqm')
+            pqm.pqm_subdir = pqm_subdir
+            # Process input
+            email = read_email_from_string(self.logger, text)
+            email_string = get_email_string(self.logger, options, email)
+            # Write patch
+            fname = 'patch.%d' % (time.time(),)
+            self.logger.info('new patch ' + fname)
+            f = open(os.path.join(queuedir, 'tmp.%s' % (fname,)), 'w')
+            f.write(email_string)
+            f.close()
+            os.rename(os.path.join(queuedir, 'tmp.%s' % (fname,)),
+                      os.path.join(queuedir, fname))
+            return "Success!"
+        except PQMException, e:
+            return "Error: %s" % (e,)



More information about the bazaar-commits mailing list