# HG changeset patch # User Sandro Knauß # Date 1290045743 -3600 # Node ID 7d4ddab659ad81ab8851950069d2186611982b4e # Parent 3df3da063cff25e939047c01133bccc6b61f85c2 sipgate: - fax wird nun als string erwartet - fax wird nun als xmlrpclib.Binary übertragen - mehr debug messages diff -r 3df3da063cff -r 7d4ddab659ad iro/anbieter/sipgate.py --- a/iro/anbieter/sipgate.py Thu Nov 18 03:00:47 2010 +0100 +++ b/iro/anbieter/sipgate.py Thu Nov 18 03:02:23 2010 +0100 @@ -16,12 +16,15 @@ from telnumber import telnumber, NotATelNumber import ConfigParser import xmlrpclib -import base64 import logging logger=logging.getLogger("sipgate") class NoValidStatusCode(Exception): - pass + def __init__(self, value): + self.value = value + + def __str__(self): + return repr(self.value) class sipgate(anbieter): """ @@ -53,30 +56,30 @@ def sendFAX(self,fax,recipients): """send the PDF file $fax to $recipients""" logger.debug('sipgate.sendFAX(%s,%s)'%(fax, str(recipients))) - logger.debug(fax.getAttachment(0)); - pdf=open(fax.getAttachment(0),"rb") args={ "TOS" : "fax", - "Content" : base64.encodestring(pdf.read()) + "Content" : xmlrpclib.Binary(fax.getAttachment(0)), } - pdf.close() self.__send(args,recipients) def __connect(self): """connect to sipgate XMLRPC Server""" logger.debug("sipgate.__connect()-"+self.url%(self.user,"XXXXXXXX")) - - self.samurai=xmlrpclib.Server(self.url%(self.user,self.password)).samurai + + self.serv=xmlrpclib.ServerProxy(self.url%(self.user,self.password)) + self.samurai=self.serv.samurai + args_identify = { "ClientName" : "anbieter.py", "ClientVersion" : "V1.0", "ClientVendor" : "Sandro Knauss" } - self.__send_method(self.samurai.ClientIdentify, args_identify) + return self.serv def __send_method(self, func, args=None): """execute $func and test weather if the func ran successfully or not""" + logger.debug("sipgate.__send_method(func,%s)"%( args)) if args==None: xmlrpc_result = func() @@ -84,16 +87,15 @@ xmlrpc_result = func(args) if xmlrpc_result['StatusCode'] != 200: raise NoValidStatusCode("There was an error during identification to the server! %d %s"% (xmlrpc_result['StatusCode'], xmlrpc_result['StatusString'])) - - + logger.debug("sipgate.__send_method(..):ok"); return xmlrpc_result def __send(self,args,recipients): """main sending method - sending the args to $recipients""" sended=[] - self.__connect() - logger.debug('sipgate.__send(%s,%s)'%(str(args), str(recipients))) + serv=self.__connect() + logger.debug('sipgate.__send(%s,%s)'%(args, recipients)) for recipient in recipients: try: tel = telnumber(recipient) @@ -103,10 +105,10 @@ sended.append(tel) args["RemoteUri"]="sip:%s%s@sipgate.net"%(tel.land,tel.number) - self.__send_method(self.samurai.SessionInitiate, args) + self.__send_method(serv.samurai.SessionInitiate, args) self.updateStatus(arranged=recipient) - except NotATelNumber, NoValidStatusCode: + except (NotATelNumber, NoValidStatusCode): self.updateStatus(failed=recipient) self.__disconnect() @@ -149,4 +151,7 @@ def __disconnect(self): """disconnect xmlrpc client""" + logger.debug('sipgate.__disconnect()') + self.samurai=None + self.serv=None self.xmlrpc=None