summaryrefslogtreecommitdiffstats
path: root/ipsilon/providers/openid/extensions/common.py
diff options
context:
space:
mode:
Diffstat (limited to 'ipsilon/providers/openid/extensions/common.py')
-rwxr-xr-xipsilon/providers/openid/extensions/common.py67
1 files changed, 67 insertions, 0 deletions
diff --git a/ipsilon/providers/openid/extensions/common.py b/ipsilon/providers/openid/extensions/common.py
new file mode 100755
index 0000000..b75d394
--- /dev/null
+++ b/ipsilon/providers/openid/extensions/common.py
@@ -0,0 +1,67 @@
+#!/usr/bin/python
+#
+# Copyright (C) 2014 Ipsilon project Contributors, for licensee see COPYING
+
+from __future__ import absolute_import
+
+from ipsilon.providers.common import FACILITY
+from ipsilon.util.plugin import PluginLoader
+from ipsilon.util.log import Log
+
+
+class OpenidExtensionBase(Log):
+
+ def __init__(self, name=None):
+ self.name = name
+ self.enabled = False
+ self.type_uris = []
+
+ def _display(self, request, userdata):
+ raise NotImplementedError
+
+ def _response(self, request, userdata):
+ raise NotImplementedError
+
+ def get_type_uris(self):
+ if self.enabled:
+ return self.type_uris
+ return []
+
+ def get_display_data(self, request, userdata):
+ if self.enabled:
+ return self._display(request, userdata)
+ return {}
+
+ def get_response(self, request, userdata):
+ if self.enabled:
+ return self._response(request, userdata)
+ return None
+
+ def enable(self):
+ self.enabled = True
+
+ def disable(self):
+ self.enabled = False
+
+
+FACILITY = 'openid_extensions'
+
+
+class LoadExtensions(Log):
+
+ def __init__(self, enabled):
+ loader = PluginLoader(LoadExtensions, FACILITY, 'OpenidExtension')
+ self.plugins = loader.get_plugin_data()
+
+ available = self.plugins['available'].keys()
+ self._debug('Available Extensions: %s' % str(available))
+
+ for item in enabled:
+ if item not in self.plugins['available']:
+ self.debug('<%s> not available' % item)
+ continue
+ self.debug('Enable OpenId extension: %s' % item)
+ self.plugins['available'][item].enable()
+
+ def get_extensions(self):
+ return self.plugins['available']