refactoring error of smstrade.
--- a/iro/offer/smstrade.py Sat Mar 03 03:29:19 2012 +0100
+++ b/iro/offer/smstrade.py Sat Mar 03 03:54:53 2012 +0100
@@ -24,53 +24,55 @@
import logging
logger=logging.getLogger("smstrade")
-class UnknownStatusCode(ExternalException):
+statusCodes = {10 : "Empfaengernummer nicht korrekt.",
+ 20 : "Absenderkennung nicht korrekt.",
+ 30 : "Nachrichtentext nicht korrekt.",
+ 31 : "Messagetyp nicht korrekt.",
+ 40 : "SMS Route nicht korrekt.",
+ 50 : "Identifikation fehlgeschlagen.",
+ 60 : "nicht genuegend Guthaben.",
+ 70 : "Netz wird von Route nicht abgedeckt.",
+ 71 : "Feature nicht ueber diese Route moeglich.",
+ 80 : "Uebergabe an SMS-C fehlgeschlagen.",
+ 90 : "Versand nicht moeglich.",
+ 100 : "SMS wurde versendet.",
+ }
+
+
+class StatusException(ExternalException):
def __init__(self,status):
ExternalException.__init__(self)
- self.status=status
-
+ self.status = status
+ self.str_ = "%i: unknown statuscode."%status
+ try:
+ self.str_="%i: %s"%(status, statusCodes[int(status)])
+ except KeyError:
+ pass
def __str__(self):
- return "%s\nStatusCode %i is unknown."%(ExternalException.__str__(self),self.status)
+ return "%s\n%s"%(ExternalException.__str__(self),self.str_)
class StatusCode:
- statusCodes = {10 : "Empfaengernummer nicht korrekt",
- 20 : "Absenderkennung nicht korrekt",
- 30 : "Nachrichtentext nicht korrekt",
- 31 : "Messagetyp nicht korrekt",
- 40 : "SMS Route nicht korrekt",
- 50 : "Identifikation fehlgeschlagen",
- 60 : "nicht genuegend Guthaben",
- 70 : "Netz wird von Route nicht abgedeckt",
- 71 : "Feature nicht ueber diese Route moeglich",
- 80 : "Uebergabe an SMS-C fehlgeschlagen",
- 90 : "Versand nicht moeglich",
- 100 : "SMS wurde versendet",
- }
-
def __init__(self,code, mID=None, cost=None, count=None):
- if code in self.statusCodes.keys():
- self.code=code
+ if code in statusCodes.keys():
+ self.code = code
else:
- raise UnknownStatusCode(code)
+ raise StatusException(code)
self.mID=mID
self.cost = cost
self.count = count
def __str__(self):
try:
- return "%i: %s"%(self.code, self.statusCodes[self.code])
+ return "%i: %s"%(self.code, statusCodes[self.code])
except IndexError:
- raise UnknownStatusCode(self.code)
+ raise StatusException(self.code)
def __int__(self):
- if not self.code in self.statusCodes.keys():
- raise UnknownStatusCode(self.code)
+ if not self.code in statusCodes.keys():
+ raise StatusException(self.code)
return self.code
-
-
-
class Smstrade(Provider):
"""
s. auch http://kundencenter.smstrade.de/sites/smstrade.de.kundencenter/__pdf/SMS-Gateway_HTTP_API_v2.pdf
@@ -105,7 +107,7 @@
elif int(smsSendStatus) in (70,71,):
raise RejectRecipient(recipient, status=smsSendStatus)
else:
- raise Exception()
+ raise StatusException(smsSendStatus)
def __send(self, route, to, sms):
""" This function is the main part of the request to the sms service.
--- a/tests/smstrade.py Sat Mar 03 03:29:19 2012 +0100
+++ b/tests/smstrade.py Sat Mar 03 03:54:53 2012 +0100
@@ -5,7 +5,7 @@
from iro.error import NoRoute, NoTyp, NeededOption, RejectRecipient
from iro.telnumber import Telnumber
from iro.model.message import SMS
-from iro.offer.smstrade import Smstrade, UnknownStatusCode
+from iro.offer.smstrade import Smstrade, StatusException
HOST = "localhost"
PORT = 9999
@@ -68,18 +68,29 @@
f.readlines.return_value = ["71"]
e = self.assertRaises(RejectRecipient, p.send , "basic", SMS(content,None), Telnumber("01701234567"))
- self.assertEqual(str(e),'Reject recipient(00491701234567): 71: Feature nicht ueber diese Route moeglich')
+ self.assertEqual(str(e),'Reject recipient(00491701234567): 71: Feature nicht ueber diese Route moeglich.')
@patch("urllib.urlopen")
- def testUnknownStatusCode(self,mock_urlopen):
+ def testUnknwonStatuscode(self,mock_urlopen):
f = Mock()
f.readlines.return_value = ["703"]
mock_urlopen.return_value = f
p=self.getProvider()
content = "Hello World"
- e = self.assertRaises(UnknownStatusCode, p.send , "basic", SMS(content,None), Telnumber("01701234567"))
- self.assertEqual(str(e),'950:Error in external API.\nStatusCode 703 is unknown.')
+ e = self.assertRaises(StatusException, p.send , "basic", SMS(content,None), Telnumber("01701234567"))
+ self.assertEqual(str(e),'950:Error in external API.\n703: unknown statuscode.')
+
+ @patch("urllib.urlopen")
+ def testStatusException(self,mock_urlopen):
+ f = Mock()
+ f.readlines.return_value = ["10"]
+ mock_urlopen.return_value = f
+
+ p=self.getProvider()
+ content = "Hello World"
+ e = self.assertRaises(StatusException, p.send , "basic", SMS(content,None), Telnumber("01701234567"))
+ self.assertEqual(str(e),'950:Error in external API.\n10: Empfaengernummer nicht korrekt.')