sipgate:
- fax wird nun als string erwartet
- fax wird nun als xmlrpclib.Binary übertragen
- mehr debug messages
--- 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