| author | Sandro Knauß <knauss@netzguerilla.net> |
| Fri, 30 Mar 2012 15:55:44 +0200 | |
| branch | devel |
| changeset 269 | 0d134b173cb1 |
| parent 256 | 530d6283c0e3 |
| child 275 | 88d45c846f2b |
| permissions | -rw-r--r-- |
| 9 | 1 |
# -*- coding: utf-8 -*- |
2 |
#Copyright (C) 2009 Georg Bischoff |
|
3 |
||
4 |
#This program is free software; you can redistribute it and/or modify it under the terms |
|
5 |
#of the GNU General Public License as published by the Free Software Foundation; |
|
6 |
#either version 3 of the License, or any later version. |
|
7 |
#This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; |
|
8 |
#without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
|
9 |
#See the GNU General Public License for more details. |
|
10 |
||
11 |
#You should have received a copy of the GNU General Public License |
|
12 |
#along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
13 |
||
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 | 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 |
} |
|
253
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
41 |
"""statuscodes of external smstrade API""" |
|
214
bacf50bc46bf
refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents:
213
diff
changeset
|
42 |
|
|
bacf50bc46bf
refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents:
213
diff
changeset
|
43 |
|
|
215
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
44 |
class SmstradeException(ExternalException): |
|
253
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
45 |
"""An excetion that connects the status code with the excetion string (see :attr:`statusCodes`)""" |
|
213
3620bacf1152
tests for error in smstrade API.
Sandro Knauß <knauss@netzguerilla.net>
parents:
186
diff
changeset
|
46 |
def __init__(self,status): |
|
3620bacf1152
tests for error in smstrade API.
Sandro Knauß <knauss@netzguerilla.net>
parents:
186
diff
changeset
|
47 |
ExternalException.__init__(self) |
|
214
bacf50bc46bf
refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents:
213
diff
changeset
|
48 |
self.status = status |
|
215
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
49 |
self.str_=str(status) |
|
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
50 |
|
| 15 | 51 |
def __str__(self): |
|
214
bacf50bc46bf
refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents:
213
diff
changeset
|
52 |
return "%s\n%s"%(ExternalException.__str__(self),self.str_) |
| 9 | 53 |
|
54 |
||
| 15 | 55 |
class StatusCode: |
|
253
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
56 |
"""Class that represents the output of one smstrade request.""" |
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
57 |
def __init__(self,code, exID=None, costs=Decimal("0.0"), count=0): |
|
215
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
58 |
self.code = code |
|
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
59 |
|
|
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
60 |
self.exID = exID |
|
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
61 |
self.costs = Decimal(costs) |
|
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
62 |
self.count = int(count) |
| 15 | 63 |
|
|
253
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
64 |
def __str__(self): |
|
215
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
65 |
if self.code in statusCodes.keys(): |
|
214
bacf50bc46bf
refactoring error of smstrade.
Sandro Knauß <knauss@netzguerilla.net>
parents:
213
diff
changeset
|
66 |
return "%i: %s"%(self.code, statusCodes[self.code]) |
|
215
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
67 |
|
|
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
68 |
return "%i: unknown statuscode."%self.code |
| 15 | 69 |
|
|
253
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
70 |
def __int__(self): |
| 15 | 71 |
return self.code |
72 |
||
|
172
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
73 |
class Smstrade(Provider): |
|
253
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
74 |
"""A Provider to send SMS to recipients using smstrade. |
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
75 |
Smstrade only supports to send SMS and four diffrent routes: ``["basic","economy","gold","direct"]``. |
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
76 |
|
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
77 |
It needs a smstrade Gateway Key https://login.smstrade.de/index.php?gateway in configuration file. |
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
78 |
|
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
79 |
smstrade API documentation: http://kundencenter.smstrade.de/sites/smstrade.de.kundencenter/__pdf/SMS-Gateway_HTTP_API_v2.pdf |
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
80 |
|
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
81 |
The smstrade API supports a debug mode, that can be set with :attr:`~iro.offer.provider.Provider.testmode`. |
| 15 | 82 |
""" |
|
255
507f6f4186d8
iro.offer.smstrade.Smstrade: vProvider now using field argument in Exception.
Sandro Knauß <knauss@netzguerilla.net>
parents:
253
diff
changeset
|
83 |
_params= {"debug":("boolean",False), |
|
172
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
84 |
"concat_sms":('boolean',False), |
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
85 |
"message_id":('boolean',False), |
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
86 |
"count":('boolean',False), |
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
87 |
"cost":('boolean',False), |
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
88 |
} |
|
253
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
89 |
'''dict for standrd values of the smstrade api, it is used to get the right values to the API.''' |
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
90 |
|
|
186
b381eaa774ab
refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents:
183
diff
changeset
|
91 |
def __init__(self, name): |
|
172
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
92 |
self.url = "https://gateway.smstrade.de" |
|
269
0d134b173cb1
iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents:
256
diff
changeset
|
93 |
options =[("key", Option(lambda x,y:x,long="smstrade Gateway Key https://login.smstrade.de/index.php?gateway", must=True)),] |
|
0d134b173cb1
iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents:
256
diff
changeset
|
94 |
Provider.__init__(self, name, {"sms":["basic","economy","gold","direct"]},options) |
|
172
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
95 |
|
|
216
ab8e2f26718e
tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
215
diff
changeset
|
96 |
def send(self, route, recipient, sms): |
|
253
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
97 |
"""send on SMS to recipients via route |
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
98 |
|
|
256
530d6283c0e3
offer.smstrade: minor changes in docstrings
Sandro Knauß <knauss@netzguerilla.net>
parents:
255
diff
changeset
|
99 |
:param string route: A valid route ``["basic", "economy", "gold", "direct"]`` |
|
253
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
100 |
:param string recipient: Mobilenumber of recipient |
|
256
530d6283c0e3
offer.smstrade: minor changes in docstrings
Sandro Knauß <knauss@netzguerilla.net>
parents:
255
diff
changeset
|
101 |
:param `iro.model.message.SMS` sms: the sms to send |
|
253
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
102 |
:return: |
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
103 |
- All went ok -- :class:`iro.model.status.Status` object |
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
104 |
- otherwise -- an exception |
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
105 |
""" |
|
215
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
106 |
#logger.debug('smstrade.sendSMS(%s,%s)'%(sms, recipient)) |
|
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
107 |
|
|
172
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
108 |
route = unicode(route) |
| 9 | 109 |
|
|
172
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
110 |
if recipient.land != '49' and route == "basic": |
|
213
3620bacf1152
tests for error in smstrade API.
Sandro Knauß <knauss@netzguerilla.net>
parents:
186
diff
changeset
|
111 |
raise RejectRecipient(recipient) |
|
172
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
112 |
|
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
113 |
to ='00'+recipient.land+recipient.number |
|
213
3620bacf1152
tests for error in smstrade API.
Sandro Knauß <knauss@netzguerilla.net>
parents:
186
diff
changeset
|
114 |
|
|
215
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
115 |
s = self.__send(route, to, sms) |
|
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
116 |
if int(s) in (100,): |
|
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
117 |
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
|
118 |
elif int(s) in (70,71,): |
|
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
119 |
raise RejectRecipient(recipient, status=s) |
|
213
3620bacf1152
tests for error in smstrade API.
Sandro Knauß <knauss@netzguerilla.net>
parents:
186
diff
changeset
|
120 |
else: |
|
215
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
121 |
raise SmstradeException(s) |
|
172
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
122 |
|
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
123 |
def __send(self, route, to, sms): |
|
253
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
124 |
""" This is the main function to request to the sms service. |
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
125 |
|
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
126 |
:param string route: A valid route ``["basic", "economy", "gold", "direct"] |
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
127 |
:param string recipient: Mobilenumber of recipient |
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
128 |
:param `iro.model.message.sms` sms: the sms to send |
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
129 |
:return: a :class:`.StatusCode` object |
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
130 |
""" |
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
131 |
|
|
215
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
132 |
#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
|
133 |
parameters= {"key": self.key, |
| 15 | 134 |
"route": route, |
135 |
"to": to, |
|
|
244
48fba7b4afe9
all magic utf-8 stuff is now in iro.model.message
Sandro Knauß <knauss@netzguerilla.net>
parents:
236
diff
changeset
|
136 |
"message": sms.content, |
|
18
f0d31c70744d
Unterscheidung von Dt.Mobilnetz / weltweit
Sandro Knauß <knauss@netzguerilla.net>
parents:
15
diff
changeset
|
137 |
"charset":"utf-8", |
|
172
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
138 |
"debug": self.testmode, |
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
139 |
"message_id":True, |
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
140 |
"count":True, |
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
141 |
"cost":True, |
| 15 | 142 |
} |
| 9 | 143 |
|
|
172
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
144 |
doubleChar="€[]{}|\\^~" #these charactar need two GSM Chars |
|
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 |
if sms.from_ is not None: |
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
147 |
parameters["from"] = sms.from_ |
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
148 |
|
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
149 |
length=len(sms.content) |
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
150 |
for s in doubleChar: |
|
244
48fba7b4afe9
all magic utf-8 stuff is now in iro.model.message
Sandro Knauß <knauss@netzguerilla.net>
parents:
236
diff
changeset
|
151 |
length += sms.content.count(s) |
|
172
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
152 |
parameters["concat_sms"] = True if length > 160 else False |
| 9 | 153 |
|
|
172
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
154 |
ps={} |
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
155 |
for p in parameters: |
|
255
507f6f4186d8
iro.offer.smstrade.Smstrade: vProvider now using field argument in Exception.
Sandro Knauß <knauss@netzguerilla.net>
parents:
253
diff
changeset
|
156 |
if p in self._params.keys(): |
|
507f6f4186d8
iro.offer.smstrade.Smstrade: vProvider now using field argument in Exception.
Sandro Knauß <knauss@netzguerilla.net>
parents:
253
diff
changeset
|
157 |
if self._params[p][0] == "boolean": |
|
507f6f4186d8
iro.offer.smstrade.Smstrade: vProvider now using field argument in Exception.
Sandro Knauß <knauss@netzguerilla.net>
parents:
253
diff
changeset
|
158 |
if parameters[p] != self._params[p][1]: |
|
215
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
159 |
ps[p]=int(bool(parameters[p])) |
|
172
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
160 |
else: |
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
161 |
ps[p] = parameters[p] |
| 9 | 162 |
|
|
172
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
163 |
params = urllib.urlencode(ps) |
|
215
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
164 |
#dp=copy.deepcopy(ps) |
|
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
165 |
#dp["key"]="<KEY>" |
|
236
63662db5ff25
tests for utf-8 have to be created
Sandro Knauß <knauss@netzguerilla.net>
parents:
220
diff
changeset
|
166 |
#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
|
167 |
|
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
168 |
response = urllib.urlopen(self.url, params) |
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
169 |
data = response.readlines() |
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
170 |
if len(data) == 1: |
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
171 |
return StatusCode(int(data[0])) |
|
215
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
214
diff
changeset
|
172 |
return StatusCode(int(data[0]),exID=data[1],costs=data[2],count=data[3]) |
| 9 | 173 |
|
|
172
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
174 |
def getSendFunc(self, typ, route): |
|
253
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
175 |
"""returns a partial :meth:`send` methed with bounded route, if typ and route is valid.""" |
|
e8d56537c9cc
start documenting with reST syntax.
Sandro Knauß <knauss@netzguerilla.net>
parents:
244
diff
changeset
|
176 |
|
|
172
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
177 |
Provider.getSendFunc(self, typ, route) |
|
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
178 |
return partial(self.send,route) |
| 9 | 179 |
|
|
172
adfe245c377d
adding smstrade as provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
129
diff
changeset
|
180 |
providers["smstrade"]=Smstrade |