iro/anbieter/sipgate.py
changeset 302 3f4bdea2abbf
parent 90 eb04ac3a8327
parent 301 d5ebbcccc41b
child 303 9708742ff89c
--- a/iro/anbieter/sipgate.py	Wed Dec 21 22:07:48 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +0,0 @@
-# -*- coding: utf-8 -*-
-#Copyright (C) 2009  Sandro Knauß <bugs@sandroknauss.de>
-
-#This program is free software; you can redistribute it and/or modify it under the terms
-#of the GNU General Public License as published by the Free Software Foundation;
-#either version 3 of the License, or any later version.
-#This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
-#without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-#See the GNU General Public License for more details.
-
-#You should have received a copy of the GNU General Public License
-#along with this program; if not, see <http://www.gnu.org/licenses/>.
-
-
-from anbieter import anbieter
-from telnumber import telnumber, NotATelNumber
-import ConfigParser
-import xmlrpclib
-import logging
-logger=logging.getLogger("sipgate")
-
-class NoValidStatusCode(Exception):
-     def __init__(self, value):
-         self.value = value
-     
-     def __str__(self):
-         return repr(self.value)
-
-class sipgate(anbieter):
-    """
-        s. auch http://www.tuxad.com/sipgate.html
-        und http://lists.sipgate.net/pipermail/sipgate-developers/2007-September/000016.html
-    """
-    section="sipgate"
-    url="https://%s:%s@samurai.sipgate.net/RPC2"
-    def __init__(self,user="",password=""):
-        self.user=user
-        self.password=password
-
-    def read_basic_config(self,filenames):
-        """Read basic options from the config file"""
-        cp = ConfigParser.ConfigParser()
-        cp.read(filenames)
-        self.user=cp.get(self.section, 'user')
-        self.password=cp.get(self.section, 'password')
-
-    def sendSMS(self,sms,recipients):
-        """send SMS with $sms to $recipients"""
-        logger.debug('sipgate.sendSMS(%s,%s)'%(sms.getContent(),  str(recipients)))
-        args={
-                "TOS" : "text",
-                "Content" : sms.getContent()
-                }
-        self.__send(args,recipients)
-
-    def sendFAX(self,fax,recipients):
-        """send the PDF file $fax  to $recipients"""
-        logger.debug('sipgate.sendFAX(%s,%s)'%(fax,  str(recipients)))
-        args={
-                "TOS" : "fax",
-                "Content" : xmlrpclib.Binary(fax.getAttachment(0)),
-                }
-        self.__send(args,recipients)
-
-    def __connect(self):
-        """connect to sipgate XMLRPC Server"""
-        logger.debug("sipgate.__connect()-"+self.url%(self.user,"XXXXXXXX"))
-        
-        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()
-        else:
-            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=[]
-
-        serv=self.__connect()
-        logger.debug('sipgate.__send(%s,%s)'%(args,  recipients))
-        for recipient in recipients:
-            try:
-                tel = telnumber(recipient)
-
-                if tel in sended:                                                                           #only send message once per recipient
-                    continue
-                sended.append(tel)
-				
-                args["RemoteUri"]="sip:%s%s@sipgate.net"%(tel.land,tel.number)
-                self.__send_method(serv.samurai.SessionInitiate, args)
-                self.updateStatus(arranged=recipient)
-            
-            except (NotATelNumber, NoValidStatusCode):
-                self.updateStatus(failed=recipient)
-
-        self.__disconnect()
-
-    def updateStatus(self, arranged=None, failed=None):
-        """is a function that is called, if a new SMS/FAX was send
-        -arranged is non None, if SMS/FAX was sended successfully
-        -failed is non None, if SMS/FAX sending failed
-        the content will be the recipent"""
-        pass
-
-    def BalanceGet(self):
-        """get the balance of sipgate"""
-        self.__connect()
-        ret = self.__send_method(self.samurai.BalanceGet )
-        self.__disconnect()
-        return ret['CurrentBalance']
-
-    def getNewMessages(self):
-        """get new messages from inbox"""
-        self.__connect()
-        tmp = self.__send_method(self.samurai.UmSummaryGet)
-        self.__disconnect()
-        tmp=tmp['UmSummary']
-        ret={}
-        for entry in tmp:
-            ret[entry['TOS']]={'read':entry["Read"],'unread':entry["Unread"]}
-        return ret
-
-    def getRecommendedInterval(self,methods):
-        """how often you can call one $methods"""
-        self.__connect()
-        args = {"MethodList" : methods }
-        tmp = self.__send_method(self.samurai.RecommendedIntervalGet, args)
-        self. __disconnect()
-        ret={}
-        for entry in tmp['IntervalList']:
-            ret[entry['MethodName']]=entry['RecommendedInterval']
-        return ret
-
-    def __disconnect(self):
-        """disconnect xmlrpc client"""
-        logger.debug('sipgate.__disconnect()')
-        self.samurai=None
-        self.serv=None
-        self.xmlrpc=None