Diff for /XMLRpcTools/XMLRpcTools.py between versions 1.2 and 1.7

version 1.2, 2006/11/14 21:15:44 version 1.7, 2007/10/22 18:34:35
Line 1 Line 1
   
 from OFS.SimpleItem import SimpleItem  from OFS.SimpleItem import SimpleItem
 import xmlrpclib  import xmlrpclib
   import httplib
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile  from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 import os.path  import os.path
 from Globals import package_home  from Globals import package_home
Line 11  class XMLRpcServerProxy(SimpleItem): Line 12  class XMLRpcServerProxy(SimpleItem):
           
     meta_type="XMLRpcServerProxy"      meta_type="XMLRpcServerProxy"
           
       rpc_arg_expr='[^A-z0-9]'
       
     manage_options= (      manage_options= (
         {'label':'Main Config','action':'mainConfigHTML'},          {'label':'Main Config','action':'mainConfigHTML'},
         )+ SimpleItem.manage_options          )+ SimpleItem.manage_options
   
     def __init__(self,id,serverUrl):      def __init__(self,id,serverUrl,use_xmlrpc=True):
         """init server proxy"""          """init server proxy"""
         self.id=id          self.id=id
         self.serverUrl=id          self.serverUrl=serverUrl
           self.use_xmlrpc = use_xmlrpc
           
                   
     def ServerProxy(self,serverUrl=None):      def ServerProxy(self,serverUrl=None):
         """get the proxy"""          """get the proxy"""
         if not serverUrl:          if not serverUrl:
             serverUrl=self.serverUrl              serverUrl=self.serverUrl
               
           if self.use_xmlrpc:
         pr=xmlrpclib.ServerProxy(serverUrl)          pr=xmlrpclib.ServerProxy(serverUrl)
           else:
               pr = httplib.HTTPConnection(serverUrl)
                 
         return pr          return pr
           
       
     def eval(self,method,argument):      def eval(self,method,argument):
         """do proxy request"""          """do proxy request"""
         #only letters are allowed          server=self.ServerProxy()
         method=re.sub('[^A-z]','',method)  
         argument=re.sub('[^A-z]','',argument)  
                   
         sr=self.ServerProxy()          if self.use_xmlrpc:
         mtstr="""sr.%s('%s')"""%(method,argument)              # for XML-RPC methods only letters are allowed
               method=re.sub('[^A-z0-9_]','',method)
               # clean argument
               argument=re.sub(self.rpc_arg_expr,'',argument)
               
               cmd="""server.%s('%s')"""%(method,argument)
              
               return eval(cmd)
           else:
               # HTTP
               # TODO: check arguments
               uri = method
               if argument:
                   uri += '?' + argument
               
               #print "GET: ", uri
               server.request("GET", uri)
               resp = server.getresponse()
               data = resp.read()
               #print "GOT: ", resp.status, ", ", resp.reason, " = ", data
                   
               return data.decode('UTF-8')
             
         return eval(mtstr)  
           
     def mainConfigHTML(self):      def mainConfigHTML(self):
         """main config form"""          """main config form"""
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','manageXMLRpcServerProxy.zpt')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','manageXMLRpcServerProxy.zpt')).__of__(self)
         return pt()          return pt()
           
     def mainConfig(self,serverUrl,RESPONSE=None):      def mainConfig(self,serverUrl,use_xmlrpc=True,rpc_arg_expr=None,RESPONSE=None):
         """main config"""          """main config"""
                   
         self.serverUrl=serverUrl          self.serverUrl=serverUrl
                   
           if use_xmlrpc and use_xmlrpc != "no":
               use_xmlrpc = True
           else:
               use_xmlrpc = False
           
           self.use_xmlrpc=use_xmlrpc
           
           if rpc_arg_expr is not None:
               self.rpc_arg_expr = rpc_arg_expr
                   
         if RESPONSE:          if RESPONSE:
             RESPONSE.redirect("/manage_main")              RESPONSE.redirect("/manage_main")
Line 61  def manage_addXMLRpcServerProxyForm(self Line 96  def manage_addXMLRpcServerProxyForm(self
     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addXMLRpcServerProxy.zpt')).__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addXMLRpcServerProxy.zpt')).__of__(self)
     return pt()      return pt()
   
 def manage_addXMLRpcServerProxy(self,id,serverUrl,RESPONSE=None):  def manage_addXMLRpcServerProxy(self,id,serverUrl,use_xmlrpc=True,rpc_arg_expr=None,RESPONSE=None):
     """add the basket"""      """add the basket"""
     ob=XMLRpcServerProxy(id,serverUrl)      if use_xmlrpc and use_xmlrpc != "no":
           use_xmlrpc = True
       else:
           use_xmlrpc = False
           
       if rpc_arg_expr is not None:
           self.rpc_arg_expr = rpc_arg_expr
           
       ob=XMLRpcServerProxy(id,serverUrl,use_xmlrpc)
           
     self._setObject(id, ob)      self._setObject(id, ob)
           

Removed from v.1.2  
changed lines
  Added in v.1.7


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>