iro/offer/smstrade.py
author Sandro Knauß <knauss@netzguerilla.net>
Fri, 23 Mar 2012 16:18:12 +0100
branchdevel
changeset 242 745d829d1e02
parent 236 63662db5ff25
child 244 48fba7b4afe9
permissions -rw-r--r--
tests for iro.install.getAllRoutes added
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
from functools import partial
215
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    17
from decimal import Decimal
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    18
#import copy
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    19
183
07ee5543751b offer.provider now handles the options dict and loadConfig is only in Provider class
Sandro Knauß <knauss@netzguerilla.net>
parents: 180
diff changeset
    20
from ..config import Option
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    21
from ..model.status import Status
180
55ab949cf0f8 providers now handeld in offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 172
diff changeset
    22
from .provider import Provider, providers
213
3620bacf1152 tests for error in smstrade API.
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    23
from ..error import RejectRecipient, ExternalException
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    24
215
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    25
#import logging
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    26
#logger=logging.getLogger("smstrade")
23
0180b538ed74 logging->logger wg. multiprocessing
Sandro Knauß <knauss@netzguerilla.net>
parents: 22
diff changeset
    27
214
bacf50bc46bf refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents: 213
diff changeset
    28
statusCodes = {10 : "Empfaengernummer nicht korrekt.",
bacf50bc46bf refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents: 213
diff changeset
    29
    20 : "Absenderkennung nicht korrekt.",
bacf50bc46bf refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents: 213
diff changeset
    30
    30 : "Nachrichtentext nicht korrekt.",
bacf50bc46bf refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents: 213
diff changeset
    31
    31 : "Messagetyp nicht korrekt.",
bacf50bc46bf refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents: 213
diff changeset
    32
    40 : "SMS Route nicht korrekt.",
bacf50bc46bf refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents: 213
diff changeset
    33
    50 : "Identifikation fehlgeschlagen.",
bacf50bc46bf refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents: 213
diff changeset
    34
    60 : "nicht genuegend Guthaben.",
bacf50bc46bf refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents: 213
diff changeset
    35
    70 : "Netz wird von Route nicht abgedeckt.",
bacf50bc46bf refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents: 213
diff changeset
    36
    71 : "Feature nicht ueber diese Route moeglich.",
bacf50bc46bf refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents: 213
diff changeset
    37
    80 : "Uebergabe an SMS-C fehlgeschlagen.",
bacf50bc46bf refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents: 213
diff changeset
    38
    90 : "Versand nicht moeglich.",
bacf50bc46bf refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents: 213
diff changeset
    39
    100 : "SMS wurde versendet.",
bacf50bc46bf refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents: 213
diff changeset
    40
    }
bacf50bc46bf refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents: 213
diff changeset
    41
bacf50bc46bf refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents: 213
diff changeset
    42
215
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    43
class SmstradeException(ExternalException):
213
3620bacf1152 tests for error in smstrade API.
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    44
    def __init__(self,status):
3620bacf1152 tests for error in smstrade API.
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    45
        ExternalException.__init__(self)
214
bacf50bc46bf refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents: 213
diff changeset
    46
        self.status = status
215
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    47
        self.str_=str(status)
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    48
    
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    49
    def __str__(self):
214
bacf50bc46bf refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents: 213
diff changeset
    50
        return "%s\n%s"%(ExternalException.__str__(self),self.str_)
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    51
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    52
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    53
class StatusCode:
215
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    54
     def __init__(self,code, exID=None, costs=Decimal("0.0"), count=0):
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    55
        self.code = code
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    56
        
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    57
        self.exID = exID
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    58
        self.costs = Decimal(costs)
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    59
        self.count = int(count)
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    60
     
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    61
     def __str__(self):
215
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    62
        if self.code in statusCodes.keys():
214
bacf50bc46bf refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents: 213
diff changeset
    63
            return "%i: %s"%(self.code, statusCodes[self.code])
215
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    64
        
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    65
        return "%i: unknown statuscode."%self.code
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    66
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
    67
     def __int__(self):
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
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    70
class Smstrade(Provider):
15
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
    """
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    74
    params= {"debug":("boolean",False),
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    75
            "concat_sms":('boolean',False),
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    76
            "message_id":('boolean',False),
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    77
            "count":('boolean',False),
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    78
            "cost":('boolean',False),
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    79
           }
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 183
diff changeset
    80
    def __init__(self, name):       
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    81
        self.url = "https://gateway.smstrade.de"
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 183
diff changeset
    82
        Provider.__init__(self, name, {"sms":["basic","economy","gold","direct"]})
183
07ee5543751b offer.provider now handles the options dict and loadConfig is only in Provider class
Sandro Knauß <knauss@netzguerilla.net>
parents: 180
diff changeset
    83
        self.options.update({
07ee5543751b offer.provider now handles the options dict and loadConfig is only in Provider class
Sandro Knauß <knauss@netzguerilla.net>
parents: 180
diff changeset
    84
            "key":Option(lambda x,y:x,long="smstrade Gateway Key https://login.smstrade.de/index.php?gateway", must=True)
07ee5543751b offer.provider now handles the options dict and loadConfig is only in Provider class
Sandro Knauß <knauss@netzguerilla.net>
parents: 180
diff changeset
    85
            })
220
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 216
diff changeset
    86
        self.order.append("key")
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    87
216
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents: 215
diff changeset
    88
    def send(self, route, recipient, sms):
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    89
        """send SMS with $sms to $recipients"""
215
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    90
        #logger.debug('smstrade.sendSMS(%s,%s)'%(sms,  recipient))
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    91
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    92
        route = unicode(route)
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
        if recipient.land != '49' and route == "basic":
213
3620bacf1152 tests for error in smstrade API.
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    95
            raise RejectRecipient(recipient)
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    96
        
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
    97
        to ='00'+recipient.land+recipient.number
213
3620bacf1152 tests for error in smstrade API.
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    98
        
215
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
    99
        s = self.__send(route, to, sms)	
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
   100
        if int(s) in (100,):
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
   101
            return Status(self,route, exID=s.exID, costs=s.costs, count=s.count)
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
   102
        elif int(s) in (70,71,):
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
   103
            raise RejectRecipient(recipient, status=s)
213
3620bacf1152 tests for error in smstrade API.
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
   104
        else:
215
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
   105
            raise SmstradeException(s)
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   106
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   107
    def __send(self, route, to, sms):
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   108
        """ 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
   109
        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
   110
        to the request."""
215
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
   111
        #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
   112
        parameters= {"key": self.key,
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   113
                "route": route,
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   114
                "to": to,
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   115
                "message": sms.content.encode("utf-8"),
18
f0d31c70744d Unterscheidung von Dt.Mobilnetz / weltweit
Sandro Knauß <knauss@netzguerilla.net>
parents: 15
diff changeset
   116
                "charset":"utf-8", 
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   117
                "debug": self.testmode,
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   118
                "message_id":True,
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   119
                "count":True,
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   120
                "cost":True,
15
c04a21066aad refactoring
Sandro Knauß <knauss@netzguerilla.net>
parents: 9
diff changeset
   121
                }
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   122
        
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   123
        doubleChar="€[]{}|\\^~"    #these charactar need two GSM Chars
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
        if sms.from_ is not None:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   126
            parameters["from"] = sms.from_
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   127
       
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   128
        length=len(sms.content)
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   129
        for s in doubleChar:
236
63662db5ff25 tests for utf-8 have to be created
Sandro Knauß <knauss@netzguerilla.net>
parents: 220
diff changeset
   130
            length += sms.content.encode("utf-8").count(s)
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   131
        parameters["concat_sms"] = True if length > 160 else False
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   132
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   133
        ps={}
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   134
        for p in parameters:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   135
            if p in self.params.keys():
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   136
                if self.params[p][0] == "boolean":
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   137
                    if parameters[p] != self.params[p][1]:
215
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
   138
                        ps[p]=int(bool(parameters[p]))
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   139
            else:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   140
                ps[p] = parameters[p]
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   141
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   142
        params = urllib.urlencode(ps)
215
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
   143
        #dp=copy.deepcopy(ps)
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
   144
        #dp["key"]="<KEY>"
236
63662db5ff25 tests for utf-8 have to be created
Sandro Knauß <knauss@netzguerilla.net>
parents: 220
diff changeset
   145
        #print 'smstrade._send-parameters:%s\n\t->%s'%(str(dp), urllib.urlencode(dp))
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   146
        
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   147
        response = urllib.urlopen(self.url, params)
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   148
        data = response.readlines()
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   149
        if len(data) == 1:
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   150
            return StatusCode(int(data[0]))
215
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 214
diff changeset
   151
        return StatusCode(int(data[0]),exID=data[1],costs=data[2],count=data[3])
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   152
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   153
    def getSendFunc(self, typ, route):
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   154
        Provider.getSendFunc(self, typ, route)
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   155
        return partial(self.send,route)
9
4c5f1cf088f6 smstrade verbessert
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   156
172
adfe245c377d adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 129
diff changeset
   157
providers["smstrade"]=Smstrade