iro/anbieter/smstrade.py
author Sandro Knauß <knauss@netzguerilla.net>
Fri, 27 Nov 2009 01:09:34 +0100
changeset 23 0180b538ed74
parent 22 8b363361ba55
child 37 6e5bd561ddd0
permissions -rw-r--r--
logging->logger wg. multiprocessing
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
     1
# -*- coding: utf-8 -*-
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
     2
#Copyright (C) 2009  Georg Bischoff
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
     3
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
     4
#This program is free software; you can redistribute it and/or modify it under the terms
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
     5
#of the GNU General Public License as published by the Free Software Foundation;
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
     6
#either version 3 of the License, or any later version.
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
     7
#This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
     8
#without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
     9
#See the GNU General Public License for more details.
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    10
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    11
#You should have received a copy of the GNU General Public License
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    12
#along with this program; if not, see <http://www.gnu.org/licenses/>.
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    13
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    14
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    15
from anbieter import anbieter
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    16
from sipgate import  NoValidStatusCode
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    17
from telnumber import telnumber, NotATelNumber
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    18
import ConfigParser
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    19
import xmlrpclib
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    20
import base64
18
f0d31c70744d Unterscheidung von Dt.Mobilnetz / weltweit
Sandro Knauß <knauss@netzguerilla.net>
parents: 15
diff changeset
    21
import gsm0338
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    22
import urllib, httplib
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    23
23
0180b538ed74 logging->logger wg. multiprocessing
Sandro Knauß <knauss@netzguerilla.net>
parents: 22
diff changeset
    24
import logging
0180b538ed74 logging->logger wg. multiprocessing
Sandro Knauß <knauss@netzguerilla.net>
parents: 22
diff changeset
    25
logger=logging.getLogger("smstrade")
0180b538ed74 logging->logger wg. multiprocessing
Sandro Knauß <knauss@netzguerilla.net>
parents: 22
diff changeset
    26
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    27
class UnknownStatusCode(Exception):
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    28
    def __init__(self,code):
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    29
        self.code=code
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    30
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    31
    def __str__(self):
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    32
        return "StatusCode %i is unknown"%self.code
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    33
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    34
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    35
class StatusCode:
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    36
     statusCodes = {10 : "Empfaengernummer nicht korrekt",
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    37
            20 : "Absenderkennung nicht korrekt",
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    38
            30 : "Nachrichtentext nicht korrekt",
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    39
            31 : "Messagetyp nicht korrekt",
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    40
            40 : "SMS Route nicht korrekt",
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    41
            50 : "Identifikation fehlgeschlagen",
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    42
            60 : "nicht genuegend Guthaben",
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    43
            70 : "Netz wird von Route nicht abgedeckt",
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    44
            71 : "Feature nicht ueber diese Route moeglich",
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    45
            80 : "Uebergabe an SMS-C fehlgeschlagen",
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    46
            90 : "Versand nicht moeglich",
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    47
            100 : "SMS wurde versendet",
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    48
            999 : "SMS wird zeitversetzt verschickt"}
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    49
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    50
     def __init__(self,code):
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    51
        if code in self.statusCodes.keys():
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    52
            self.code=code
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    53
        else:
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    54
            raise UnknownStatusCode(code)
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    55
     
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    56
     def __str__(self):
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    57
        try:
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    58
            return self.statusCodes[self.code]
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    59
        except IndexError:
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    60
            raise UnkownStatusCode(self.code)
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    61
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    62
     def __int__(self):
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    63
        if not self.code in self.statusCodes.keys():
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    64
            raise UnknownStatusCode(self.code)
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    65
        return self.code
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    66
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    67
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    68
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    69
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    70
class smstrade(anbieter):
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    71
    """
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    72
    s. auch http://kundencenter.smstrade.de/sites/smstrade.de.kundencenter/__pdf/SMS-Gateway_HTTP_API_v2.pdf
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    73
    """
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    74
    section="smstrade"
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    75
    url="https://gateway.smstrade.de"
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    76
    def __init__(self):       
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    77
        self.domain = "smstrade.de" # website of the sms service
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    78
        self.gateway = "gateway.smstrade.de" # gateway where the request will be sent
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    79
        self.gatewayPort = 80 # port of the gateway
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    80
        self.script = "/"  # full path to the script that will handle the request
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    81
        self.method = "POST" # method that will be used. Currently only POST is supported
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    82
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    83
    def read_basic_config(self,filename):
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    84
        """Read basic options from the config file"""
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    85
        cp = ConfigParser.ConfigParser()
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    86
        cp.read([filename])
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    87
        self.key=cp.get(self.section, 'key')
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    88
        self.route=cp.get(self.section, 'route')
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    89
        self.from_=cp.get(self.section, 'from')
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    90
        self.debug=cp.get(self.section, 'debug')
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    91
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    92
    def sendSMS(self,sms,recipients):
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    93
        """send SMS with $sms to $recipients"""
23
0180b538ed74 logging->logger wg. multiprocessing
Sandro Knauß <knauss@netzguerilla.net>
parents: 22
diff changeset
    94
        logger.debug('smstrade.sendSMS(%s,%s)'%(sms,  str(recipients)))
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    95
        sended = []
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    96
        route = unicode(self.route)
18
f0d31c70744d Unterscheidung von Dt.Mobilnetz / weltweit
Sandro Knauß <knauss@netzguerilla.net>
parents: 15
diff changeset
    97
        message = sms.content
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    98
        timestamp = None
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    99
        for recipient in recipients:
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   100
            try:
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   101
                tel = telnumber(recipient)                
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   102
                if tel in sended:                                             #only send message once per recipient
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   103
                    continue
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   104
                sended.append(tel)	
20
0d7ffb9b2c7f logging started
Sandro Knauß <knauss@netzguerilla.net>
parents: 19
diff changeset
   105
                to ='00'+tel.land+tel.number
18
f0d31c70744d Unterscheidung von Dt.Mobilnetz / weltweit
Sandro Knauß <knauss@netzguerilla.net>
parents: 15
diff changeset
   106
                if tel.land == '49':
f0d31c70744d Unterscheidung von Dt.Mobilnetz / weltweit
Sandro Knauß <knauss@netzguerilla.net>
parents: 15
diff changeset
   107
                    route=unicode("basic")
f0d31c70744d Unterscheidung von Dt.Mobilnetz / weltweit
Sandro Knauß <knauss@netzguerilla.net>
parents: 15
diff changeset
   108
                else:
f0d31c70744d Unterscheidung von Dt.Mobilnetz / weltweit
Sandro Knauß <knauss@netzguerilla.net>
parents: 15
diff changeset
   109
                    route=unicode("economy")
21
e6302069d772 daten sind in der klasse gespeichert - müssen nicht übergeben werden
Sandro Knauß <knauss@netzguerilla.net>
parents: 20
diff changeset
   110
                smsSendStatus = self.__send(route, to, message, timestamp)	
23
0180b538ed74 logging->logger wg. multiprocessing
Sandro Knauß <knauss@netzguerilla.net>
parents: 22
diff changeset
   111
                logger.debug('smstrade._send(...)=%i(%s)'%(int(smsSendStatus),str(smsSendStatus)))
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   112
                if int(smsSendStatus) in(100, 999):
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   113
                    self.updateStatus(arranged=recipient)
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   114
                else:
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   115
                    self.updateStatus(failed=recipient)
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   116
            except (NotATelNumber,NoValidStatusCode,InternetConnectionError):
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   117
                self.updateStatus(failed=recipient)
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   118
22
8b363361ba55 daten sind in der klasse gespeichert - müssen nicht übergeben werden
Sandro Knauß <knauss@netzguerilla.net>
parents: 21
diff changeset
   119
    def __send(self, route, to, message,  timestamp=None):
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   120
        """ This function is the main part of the request to the sms service.    
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   121
        The function has to return a unicode formated string that will represent the answer of the sms service
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   122
        to the request."""
23
0180b538ed74 logging->logger wg. multiprocessing
Sandro Knauß <knauss@netzguerilla.net>
parents: 22
diff changeset
   123
        logger.debug('smstrade._send(%s,%s,%s,%s)'%( route, to, message, timestamp))
21
e6302069d772 daten sind in der klasse gespeichert - müssen nicht übergeben werden
Sandro Knauß <knauss@netzguerilla.net>
parents: 20
diff changeset
   124
        parameters= {"key": self.key,
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   125
                "route": route,
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   126
                "to": to,
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   127
                "message": message,
18
f0d31c70744d Unterscheidung von Dt.Mobilnetz / weltweit
Sandro Knauß <knauss@netzguerilla.net>
parents: 15
diff changeset
   128
                "charset":"utf-8", 
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   129
                "debug": self.debug,
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   130
                }
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   131
        
21
e6302069d772 daten sind in der klasse gespeichert - müssen nicht übergeben werden
Sandro Knauß <knauss@netzguerilla.net>
parents: 20
diff changeset
   132
        if self.from_ is not None:
e6302069d772 daten sind in der klasse gespeichert - müssen nicht übergeben werden
Sandro Knauß <knauss@netzguerilla.net>
parents: 20
diff changeset
   133
            parameters["from"] = self.from_
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   134
        
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   135
        if timestamp is not None:
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   136
            parameters["senddate"] = unicode(timestamp)
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   137
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   138
        parameters["concat_sms"] = "1" if len(message) > 160 else "0"
18
f0d31c70744d Unterscheidung von Dt.Mobilnetz / weltweit
Sandro Knauß <knauss@netzguerilla.net>
parents: 15
diff changeset
   139
        params = "&".join( ["%s=%s" % (urllib.quote(k),urllib.quote(v.encode("utf-8"))) for (k, v) in parameters.items()])
23
0180b538ed74 logging->logger wg. multiprocessing
Sandro Knauß <knauss@netzguerilla.net>
parents: 22
diff changeset
   140
        logger.debug('smstrade._send-parameters:%s\n\t->%s'%(str(parameters), str(params)) )
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   141
        headers = {"Content-type": "application/x-www-form-urlencoded",
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   142
            "Accept": "text/plain"}
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   143
        conn = httplib.HTTPConnection("%s:%i" % (self.gateway, self.gatewayPort))
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   144
        try:
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   145
            conn.request(self.method, self.script, params, headers)
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   146
            response = conn.getresponse()
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   147
            data = response.read()
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   148
        except socket.gaierror:
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   149
            raise InternetConnectionError("%s:%i" % (self.gateway, self.gatewayPort))
20
0d7ffb9b2c7f logging started
Sandro Knauß <knauss@netzguerilla.net>
parents: 19
diff changeset
   150
        finally:
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   151
            conn.close()
18
f0d31c70744d Unterscheidung von Dt.Mobilnetz / weltweit
Sandro Knauß <knauss@netzguerilla.net>
parents: 15
diff changeset
   152
            
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   153
        try:
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   154
            return StatusCode(int(data))
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   155
        except UnknownStatusCode:
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   156
            # this happens if the sms will be send delayed
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   157
            return StatusCode(999)
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   158
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   159
    def updateStatus(self, arranged=None, failed=None):
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   160
        """is a function that is called, if a new SMS/FAX was send
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   161
        -arranged is non None, if SMS/FAX was sended successfully
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   162
        -failed is non None, if SMS/FAX sending failed
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   163
        the content will be the recipent"""
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   164
        pass
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   165
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   166
class InternetConnectionError(Exception):
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   167
	def __init__(self, url):
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   168
		self.url = url
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   169
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   170
	def __str__(self):
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   171
		return "InternetConnectionError: It is not possible to open 'http://%s'. Please check your connection to the Internet!" % self.url