3 # Copyright (C) 2014 Ipsilon project Contributors, for licensee see COPYING
5 from __future__ import absolute_import
7 from ipsilon.providers.common import FACILITY
8 from ipsilon.util.plugin import PluginLoader
9 from ipsilon.util.log import Log
12 class OpenidExtensionBase(Log):
14 def __init__(self, name=None):
19 def _display(self, request, userdata):
20 raise NotImplementedError
22 def _response(self, request, userdata):
23 raise NotImplementedError
25 def get_type_uris(self):
30 def get_display_data(self, request, userdata):
32 return self._display(request, userdata)
35 def get_response(self, request, userdata):
37 return self._response(request, userdata)
47 FACILITY = 'openid_extensions'
50 class LoadExtensions(Log):
53 self.plugins = PluginLoader(LoadExtensions,
54 FACILITY, 'OpenidExtension')
55 self.plugins.get_plugin_data()
57 available = self.plugins.available.keys()
58 self._debug('Available Extensions: %s' % str(available))
60 def enable(self, enabled):
62 if item not in self.plugins.available:
63 self.debug('<%s> not available' % item)
65 self.debug('Enable OpenId extension: %s' % item)
66 self.plugins.available[item].enable()
69 return self.plugins.available