from functools import partial
from ..error import NoRoute, NoTyp, ValidateException, NoProvider
from ..config import Option, Config
class Provider(Config):
def __init__(self, name, typs={}):
Config.__init__(self, name)
self.typs=typs
self.testmode = False
self.options = {
"typ":Option(vProvider, long="One available provider typ.", must=True, default=name)
}
self.order = ["typ"]
def send(self, typ, route, recipient, message):
pass
def getSendFunc(self, typ, route):
try:
if route not in self.typs[typ]:
raise NoRoute(route)
except KeyError:
raise NoTyp(route)
return partial(self.send, typ, route)
def getProvider(name, typ, config):
try:
p = providers[typ](name)
p.load(config)
return p
except KeyError:
raise NoProvider(typ)
def vProvider(typ, field):
if typ not in providers.keys():
raise ValidateException()
return typ
providers={}