iro/offer/smstrade.py
branchdevel
changeset 214 bacf50bc46bf
parent 213 3620bacf1152
child 215 5bacdb7e94d1
--- 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.