Changeset 2612
- Timestamp:
- 09/03/07 05:43:06 (1 year ago)
- Files:
-
- xmlrpcplugin/trunk/tracrpc/web_ui.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
xmlrpcplugin/trunk/tracrpc/web_ui.py
r2610 r2612 1 import re 2 import xmlrpclib 1 3 from pkg_resources import resource_filename 2 4 from trac.core import * … … 5 7 from tracrpc.api import IXMLRPCHandler, XMLRPCSystem 6 8 from trac.wiki.formatter import wiki_to_oneliner 7 import xmlrpclib8 9 9 10 class XMLRPCWeb(Component): … … 11 12 methods available to the currently logged in user. Browsing to 12 13 <trac>/xmlrpc or <trac>/login/xmlrpc will display this list. """ 14 15 content_type_re = re.compile(r'(text|application)/xml') 13 16 14 17 implements(IRequestHandler, ITemplateProvider) … … 18 21 return req.path_info in ('/login/xmlrpc', '/xmlrpc') 19 22 20 def _send_response(self, req, response ):23 def _send_response(self, req, response, content_type='application/xml'): 21 24 req.send_response(200) 22 req.send_header('Content-Type', 'text/xml')25 req.send_header('Content-Type', content_type) 23 26 req.send_header('Content-Length', len(response)) 24 27 req.end_headers() … … 30 33 31 34 # Dump RPC functions 32 content_type = req.get_header('Content-Type') 33 if content_type is None or 'text/xml' not in content_type: 35 content_type = req.get_header('Content-Type') or 'text/html' 36 self.env.log.debug(content_type) 37 if not self.content_type_re.match(content_type): 34 38 namespaces = {} 35 39 for method in XMLRPCSystem(self.env).all_methods(req): … … 56 60 try: 57 61 result = XMLRPCSystem(self.env).get_method(method)(req, args) 58 self._send_response(req, xmlrpclib.dumps(result, methodresponse=True) )62 self._send_response(req, xmlrpclib.dumps(result, methodresponse=True), content_type) 59 63 except xmlrpclib.Fault, e: 60 64 self.log.error(e) 61 self._send_response(req, xmlrpclib.dumps(e) )65 self._send_response(req, xmlrpclib.dumps(e), content_type) 62 66 except Exception, e: 63 67 self.log.error(e)
