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