diff -r 3620bacf1152 -r bacf50bc46bf iro/offer/smstrade.py --- 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.