diff options
Diffstat (limited to 'python')
-rw-r--r-- | python/environs/py_logout.c | 26 | ||||
-rw-r--r-- | python/lasso.py | 28 |
2 files changed, 31 insertions, 23 deletions
diff --git a/python/environs/py_logout.c b/python/environs/py_logout.c index f2aef5a1..0146c844 100644 --- a/python/environs/py_logout.c +++ b/python/environs/py_logout.c @@ -25,6 +25,8 @@ #include "../lassomod.h" +#include "../xml/py_xml.h" + #include "py_logout.h" PyObject *LassoLogout_wrap(LassoLogout *logout) { @@ -57,16 +59,20 @@ PyObject *logout_getattr(PyObject *self, PyObject *args) { if (!strcmp(attr, "__members__")) return Py_BuildValue("[ssss]", "user", "msg_url", "msg_body", "nameIdentifier", "msg_relayState"); - if (!strcmp(attr, "user")) - return (LassoUser_wrap(LASSO_PROFILE_CONTEXT(logout)->user)); if (!strcmp(attr, "msg_url")) return (charPtrConst_wrap(LASSO_PROFILE_CONTEXT(logout)->msg_url)); if (!strcmp(attr, "msg_body")) return (charPtrConst_wrap(LASSO_PROFILE_CONTEXT(logout)->msg_body)); - if (!strcmp(attr, "nameIdentifier")) - return (charPtrConst_wrap(LASSO_PROFILE_CONTEXT(logout)->nameIdentifier)); if (!strcmp(attr, "msg_relayState")) return (charPtrConst_wrap(LASSO_PROFILE_CONTEXT(logout)->msg_relayState)); + if (!strcmp(attr, "nameIdentifier")) + return (charPtrConst_wrap(LASSO_PROFILE_CONTEXT(logout)->nameIdentifier)); + if (!strcmp(attr, "request")) + return (LassoNode_wrap(LASSO_PROFILE_CONTEXT(logout)->request)); + if (!strcmp(attr, "response")) + return (LassoNode_wrap(LASSO_PROFILE_CONTEXT(logout)->response)); + if (!strcmp(attr, "user")) + return (LassoUser_wrap(LASSO_PROFILE_CONTEXT(logout)->user)); Py_INCREF(Py_None); return (Py_None); @@ -75,19 +81,17 @@ PyObject *logout_getattr(PyObject *self, PyObject *args) { PyObject *logout_new(PyObject *self, PyObject *args) { gint provider_type; - PyObject *server_obj, *user_obj; + PyObject *server_obj; LassoLogout *logout; - if (CheckArgs(args, "IOo:logout_new")) { - if(!PyArg_ParseTuple(args, (char *) "IO|O:logout_new", - &provider_type, &server_obj, &user_obj)) + if (CheckArgs(args, "OI:logout_new")) { + if(!PyArg_ParseTuple(args, (char *) "Oi:logout_new", + &server_obj, &provider_type)) return NULL; } else return NULL; - logout = lasso_logout_new(provider_type, - LassoServer_get(server_obj), - LassoUser_get(user_obj)); + logout = lasso_logout_new(LassoServer_get(server_obj), provider_type); return (LassoLogout_wrap(logout)); } diff --git a/python/lasso.py b/python/lasso.py index 1190445a..2f77c19a 100644 --- a/python/lasso.py +++ b/python/lasso.py @@ -990,26 +990,30 @@ class Logout: def __isprivate(self, name): return name == '_o' - def __init__(self, _obj): - """ - The constructor - """ - self._o = _obj - def __getattr__(self, name): if self.__isprivate(name): return self.__dict__[name] if name[:2] == "__" and name[-2:] == "__" and name != "__members__": raise AttributeError, name - ret = lassomod.logout_getattr(self, name) - if ret: - if name=="user": - ret = User(_obj=ret) + if ret is None: + return None + if name == "user": + ret = User(_obj=ret) + if name == "request": + ret = LogoutRequest(_obj=ret) + if name == "response": + ret = LogoutResponse(_obj=ret) return ret - def new(cls, provider_type, server, user = None): - obj = lassomod.logout_new(provider_type, server, user) + def __init__(self, _obj): + """ + The constructor + """ + self._o = _obj + + def new(cls, server, provider_type): + obj = lassomod.logout_new(server, provider_type) return Logout(obj) new = classmethod(new) |