Changeset 0a47d52 for fedd/fedd.py


Ignore:
Timestamp:
Jul 1, 2008 10:39:43 AM (16 years ago)
Author:
Ted Faber <faber@…>
Branches:
axis_example, compt_changes, info-ops, master, version-1.30, version-2.00, version-3.01, version-3.02
Children:
bb3769a
Parents:
329f61d
Message:

XMLRPC proxy from SOAP and XML

File:
1 edited

Legend:

Unmodified
Added
Removed
  • fedd/fedd.py

    r329f61d r0a47d52  
    4343    def send_fault(self, f, code=500):
    4444        """Send a SOAP encoded fault as reply"""
    45         self.send_xml(f.AsSOAP(), code)
     45        self.send_xml(f.AsSOAP(processContents="lax"), code)
    4646
    4747    def check_headers(self, ps):
     
    7272            ps = ParsedSoap(data)
    7373        except ParseException, e:
    74             self.send_fault(FaultFromZSIException(e))
     74            self.send_fault(Fault(Fault.Client, str(e)))
    7575            return
    7676        except Exception, e:
     
    108108        resp = None
    109109        data = None
     110        method = None
    110111        cl = int(self.headers['content-length'])
    111112        data = self.rfile.read(cl)
    112         params, method = xmlrpclib.loads(data)
    113113
    114114        try:
    115             resp = self.server.impl.xmlrpc_dispatch(method, params,
    116                         fedid(cert=self.request.get_peer_cert()))
    117             data = xmlrpclib.dumps((resp,), methodresponse=True)
    118         except Fault, f:
    119             xf = xmlrpclib.Fault(f.code, f.string)
    120             data = xmlrpclib.dumps(xf, methodresponse=True)
    121             resp = None
    122         except xmlrpclib.Fault, f:
    123             data = xmlrpclib.dumps(f, methodresponse=True)
    124             resp = None
    125 
     115            params, method = xmlrpclib.loads(data)
     116        except xmlrpclib.ResponseError:
     117            data = xmlrpclib.dumps(xmlrpclib.Fault("Client",
     118                "Malformed request"), methodresponse=True)
     119       
     120        if method != None:
     121            try:
     122                resp = self.server.impl.xmlrpc_dispatch(method, params,
     123                            fedid(cert=self.request.get_peer_cert()))
     124                data = xmlrpclib.dumps((resp,), methodresponse=True)
     125            except Fault, f:
     126                xf = xmlrpclib.Fault(f.code, f.string)
     127                data = xmlrpclib.dumps(xf, methodresponse=True)
     128                resp = None
     129            except xmlrpclib.Fault, f:
     130                data = xmlrpclib.dumps(f, methodresponse=True)
     131                resp = None
    126132        self.send_xml(data)
    127133
Note: See TracChangeset for help on using the changeset viewer.