1 # Copyright (C) 2014 Ipsilon project Contributors, for licensee see COPYING
3 from __future__ import absolute_import
5 from ipsilon.providers.common import FACILITY
6 from ipsilon.util.plugin import PluginLoader
7 from ipsilon.util.log import Log
10 class OpenidExtensionBase(Log):
12 def __init__(self, name=None):
17 def _display(self, request, userdata):
18 raise NotImplementedError
20 def _response(self, request, userdata):
21 raise NotImplementedError
23 def get_type_uris(self):
28 def get_display_data(self, request, userdata):
30 return self._display(request, userdata)
33 def get_response(self, request, userdata):
35 return self._response(request, userdata)
45 FACILITY = 'openid_extensions'
48 class LoadExtensions(Log):
51 self.plugins = PluginLoader(LoadExtensions,
52 FACILITY, 'OpenidExtension')
53 self.plugins.get_plugin_data()
55 available = self.plugins.available.keys()
56 self.debug('Available Extensions: %s' % str(available))
58 def enable(self, enabled):
60 if item not in self.plugins.available:
61 self.debug('<%s> not available' % item)
63 self.debug('Enable OpenId extension: %s' % item)
64 self.plugins.available[item].enable()
67 return self.plugins.available