iro/offer/smstrade.py
author Sandro Knauß <knauss@netzguerilla.net>
Sat, 18 Feb 2012 19:50:36 +0100
branchdevel
changeset 172 adfe245c377d
parent 129 iro/anbieter/smstrade.py@d6704178a18f
child 180 55ab949cf0f8
permissions -rw-r--r--
adding smstrade as provider
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
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    15
import urllib
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    16
import copy
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    17
from functools import partial
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    18
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    19
from ..error import UnknownOption, NeededOption
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    20
from ..model.status import Status
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    21
from .provider import Provider
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    22
from ..offer import providers
9
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",
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    48
            }
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    49
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    50
     def __init__(self,code, mID=None, cost=None, count=None):
15
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)
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    55
        self.mID=mID
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    56
        self.cost = cost
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    57
        self.count = count
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    58
     
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    59
     def __str__(self):
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    60
        try:
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    61
            return self.statusCodes[self.code]
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    62
        except IndexError:
49
b1d0f7ffbb64 testSMSJob
Sandro Knauß <knauss@netzguerilla.net>
parents: 37
diff changeset
    63
            raise UnknownStatusCode(self.code)
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    64
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    65
     def __int__(self):
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    66
        if not self.code in self.statusCodes.keys():
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    67
            raise UnknownStatusCode(self.code)
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    68
        return self.code
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    69
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    70
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    71
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    72
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    73
class Smstrade(Provider):
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    74
    """
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    75
    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
    76
    """
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    77
    params= {"debug":("boolean",False),
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    78
            "concat_sms":('boolean',False),
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    79
            "message_id":('boolean',False),
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    80
            "count":('boolean',False),
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    81
            "cost":('boolean',False),
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    82
           }
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    83
    def __init__(self, name, config):       
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    84
        self.url = "https://gateway.smstrade.de"
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    85
        Provider.__init__(self,name,config,{"sms":["basic","economy","gold","direct"]})
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    86
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    87
    def loadConfig(self):
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    88
        """Read options from config"""
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    89
        needed=["key"]
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    90
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    91
        for n in needed:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    92
            setattr(self,n,None)
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    93
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    94
        for (n, v) in self.config:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    95
            if n in needed:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    96
                setattr(self,n,v)
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    97
            else:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    98
                raise UnknownOption(self.name, n)
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    99
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   100
        for n in needed:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   101
           if getattr(self,n) is None:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   102
               raise NeededOption(self.name, n) 
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   103
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   104
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   105
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   106
    def send(self, route, sms, recipient):
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   107
        """send SMS with $sms to $recipients"""
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   108
        logger.debug('smstrade.sendSMS(%s,%s)'%(sms,  recipient))
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   109
        route = unicode(route)
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   110
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   111
        if recipient.land != '49' and route == "basic":
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   112
            return Exception()
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   113
        
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   114
        to ='00'+recipient.land+recipient.number
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   115
        try:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   116
            smsSendStatus = self.__send(route, to, sms)	
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   117
            logger.info('smstrade._send(...)=%i(%s)'%(int(smsSendStatus),str(smsSendStatus)))
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   118
            if int(smsSendStatus) in (100,):
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   119
                return Status(self,route)
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   120
            else:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   121
                raise Exception()
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   122
        except UnknownStatusCode:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   123
            raise Exception()
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   124
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   125
    def __send(self, route, to, sms):
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   126
        """ 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
   127
        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
   128
        to the request."""
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   129
        logger.debug('smstrade._send(%s,%s,%s)'%( route, to, sms))
21
e6302069d772 daten sind in der klasse gespeichert - müssen nicht übergeben werden
Sandro Knauß <knauss@netzguerilla.net>
parents: 20
diff changeset
   130
        parameters= {"key": self.key,
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   131
                "route": route,
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   132
                "to": to,
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   133
                "message": sms.content.encode("utf-8"),
18
f0d31c70744d Unterscheidung von Dt.Mobilnetz / weltweit
Sandro Knauß <knauss@netzguerilla.net>
parents: 15
diff changeset
   134
                "charset":"utf-8", 
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   135
                "debug": self.testmode,
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   136
                "message_id":True,
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   137
                "count":True,
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   138
                "cost":True,
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   139
                }
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   140
        
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   141
        doubleChar="€[]{}|\\^~"    #these charactar need two GSM Chars
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   142
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   143
        if sms.from_ is not None:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   144
            parameters["from"] = sms.from_
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   145
       
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   146
        length=len(sms.content)
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   147
        for s in doubleChar:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   148
            length += sms.content.count(s)
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   149
        parameters["concat_sms"] = True if length > 160 else False
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   150
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   151
        ps={}
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   152
        for p in parameters:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   153
            if p in self.params.keys():
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   154
                if self.params[p][0] == "boolean":
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   155
                    if parameters[p] != self.params[p][1]:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   156
                        ps[p]=int(not self.params[p][1])
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   157
            else:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   158
                ps[p] = parameters[p]
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   159
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   160
        params = urllib.urlencode(ps)
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   161
        dp=copy.deepcopy(ps)
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   162
        dp["key"]="<KEY>"
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   163
        logger.debug('smstrade._send-parameters:%s\n\t->%s'%(str(dp), urllib.urlencode(dp)) )
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   164
        
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   165
        response = urllib.urlopen(self.url, params)
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   166
        data = response.readlines()
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   167
        if len(data) == 1:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   168
            return StatusCode(int(data[0]))
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   169
        return StatusCode(int(data[0]),mID=data[1],cost=data[2],count=data[3])
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   170
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   171
    def getSendFunc(self, typ, route):
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   172
        Provider.getSendFunc(self, typ, route)
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   173
        return partial(self.send,route)
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   174
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   175
providers["smstrade"]=Smstrade