author | Michael Krelin <hacker@klever.net> | 2007-01-12 00:28:16 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2007-01-12 00:28:16 (UTC) |
commit | 4cc2e58186e8cd9b96a3573c92f6664064cf11fe (patch) (side-by-side diff) | |
tree | 762943dfd3db8b6c48d5b31418310962376746d3 | |
parent | f5eb33d7a9c296e3fa7bde9b678f0e1027a9bf88 (diff) | |
download | libopkele-4cc2e58186e8cd9b96a3573c92f6664064cf11fe.zip libopkele-4cc2e58186e8cd9b96a3573c92f6664064cf11fe.tar.gz libopkele-4cc2e58186e8cd9b96a3573c92f6664064cf11fe.tar.bz2 |
extended server and consumer classes
-rw-r--r-- | include/Makefile.am | 4 | ||||
-rw-r--r-- | include/opkele/consumer.h | 8 | ||||
-rw-r--r-- | include/opkele/server.h | 6 | ||||
-rw-r--r-- | include/opkele/xconsumer.h | 41 | ||||
-rw-r--r-- | include/opkele/xserver.h | 37 |
5 files changed, 88 insertions, 8 deletions
diff --git a/include/Makefile.am b/include/Makefile.am index 2c190b8..f3551f5 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -1,14 +1,16 @@ nobase_include_HEADERS = \ opkele/acconfig.h \ opkele/opkele-config.h \ opkele/types.h \ opkele/association.h \ opkele/exception.h \ opkele/server.h \ opkele/consumer.h \ opkele/extension.h \ opkele/sreg.h \ - opkele/extension_chain.h + opkele/extension_chain.h \ + opkele/xconsumer.h \ + opkele/xserver.h EXTRA_DIST = \ opkele/data.h \ opkele/util.h diff --git a/include/opkele/consumer.h b/include/opkele/consumer.h index f9939cf..f32509e 100644 --- a/include/opkele/consumer.h +++ b/include/opkele/consumer.h @@ -42,104 +42,104 @@ namespace opkele { virtual assoc_t retrieve_assoc(const string& server,const string& handle) = 0; /** * invalidate stored association. The function should be overridden * in the real implementation of the consumer. * @param server the OpenID server * @param handle association handle */ virtual void invalidate_assoc(const string& server,const string& handle) = 0; /** * retrieve any unexpired association for the server. If the * function is not overridden in the real implementation, the new * association will be established for each request. * @param server the OpenID server * @return the auto_ptr<> for the newly allocated association_t object * @throw failed_lookup in case of absence of the handle */ virtual assoc_t find_assoc(const string& server); /** * retrieve the metainformation contained in link tags from the * page pointed by url. the function may implement caching of the * information. * @param url url to harvest for link tags * @param server reference to the string object where to put * openid.server value * @param delegate reference to the string object where to put the * openid.delegate value (if any) */ virtual void retrieve_links(const string& url,string& server,string& delegate); /** * perform the associate request to OpenID server. * @param server the OpenID server * @return the auto_ptr<> for the newly allocated association_t * object, representing established association * @throw exception in case of error */ assoc_t associate(const string& server); /** * prepare the parameters for the checkid_immediate * request. * @param identity the identity to verify * @param return_to the return_to url to pass with the request * @param trust_root the trust root to advertise with the request * @param ext pointer to an extension(s) hooks object * @return the location string * @throw exception in case of error */ - string checkid_immediate(const string& identity,const string& return_to,const string& trust_root="",extension_t *ext=0); + virtual string checkid_immediate(const string& identity,const string& return_to,const string& trust_root="",extension_t *ext=0); /** * prepare the parameters for the checkid_setup * request. * @param identity the identity to verify * @param return_to the return_to url to pass with the request * @param trust_root the trust root to advertise with the request * @param ext pointer to an extension(s) hooks object * @return the location string * @throw exception in case of error */ - string checkid_setup(const string& identity,const string& return_to,const string& trust_root="",extension_t *ext=0); + virtual string checkid_setup(const string& identity,const string& return_to,const string& trust_root="",extension_t *ext=0); /** * the actual implementation behind checkid_immediate() and * checkid_setup() functions. * @param mode checkid_* mode - either mode_checkid_immediate or mode_checkid_setup * @param identity the identity to verify * @param return_to the return_to url to pass with the request * @param trust_root the trust root to advertise with the request * @param ext pointer to an extension(s) hooks object * @return the location string * @throw exception in case of error */ - string checkid_(mode_t mode,const string& identity,const string& return_to,const string& trust_root="",extension_t *ext=0); + virtual string checkid_(mode_t mode,const string& identity,const string& return_to,const string& trust_root="",extension_t *ext=0); /** * verify the id_res response * @param pin the response parameters * @param identity the identity being checked (if not specified, * @param ext pointer to an extension(s) hooks object * extracted from the openid.identity parameter * @throw id_res_mismatch in case of signature mismatch * @throw id_res_setup in case of openid.user_setup_url failure * (supposedly checkid_immediate only) * @throw id_res_failed in case of failure * @throw exception in case of other failures */ - void id_res(const params_t& pin,const string& identity="",extension_t *ext=0); + virtual void id_res(const params_t& pin,const string& identity="",extension_t *ext=0); /** * perform a check_authentication request. * @param server the OpenID server * @param p request parameters */ void check_authentication(const string& server,const params_t& p); /** * make URL canonical, by adding http:// and trailing slash, if needed. * @param url * @return canonicalized url */ static string canonicalize(const string& url); }; } #endif /* __OPKELE_CONSUMER_H */ diff --git a/include/opkele/server.h b/include/opkele/server.h index bf131d8..598eb47 100644 --- a/include/opkele/server.h +++ b/include/opkele/server.h @@ -19,81 +19,81 @@ namespace opkele { */ class server_t { public: /** * allocate the new association. The function should be overridden * in the real implementation to provide persistent assocations * store. * @param mode the mode of request being processed to base the * statelessness of the association upon * @return the auto_ptr<> for the newly allocated association_t object */ virtual assoc_t alloc_assoc(mode_t mode) = 0; /** * retrieve the association. The function should be overridden in * the reqal implementation to provide persistent assocations * store. * @param h association handle * @return the auto_ptr<> for the newly allocated association_t object * @throw failed_lookup in case of failure */ virtual assoc_t retrieve_assoc(const string& h) = 0; /** * validate the identity. * @param assoc association object * @param pin incoming request parameters * @param identity being verified * @param trust_root presented in the request * @throw exception if identity can not be confirmed */ virtual void validate(const association_t& assoc,const params_t& pin,const string& identity,const string& trust_root) = 0; /** * process the associate request. * @param pin the incoming request parameters * @param pout the store for the response parameters */ void associate(const params_t& pin,params_t& pout); /** * process the checkid_immediate request. * @param pin the incoming request parameters * @param return_to reference to the object to store return_to url to * @param pout the response parameters * @param ext pointer to the extension hooks object * @throw exception in case of errors or negative reply */ - void checkid_immediate(const params_t& pin,string& return_to,params_t& pout,extension_t *ext=0); + virtual void checkid_immediate(const params_t& pin,string& return_to,params_t& pout,extension_t *ext=0); /** * process the checkid_setup request. * @param pin the incoming request parameters * @param return_to reference to the object to store return_to url to * @param pout the response parameters * @param ext pointer to the extension hooks object * @throw exception in case of errors or negative reply */ - void checkid_setup(const params_t& pin,string& return_to,params_t& pout,extension_t *ext=0); + virtual void checkid_setup(const params_t& pin,string& return_to,params_t& pout,extension_t *ext=0); /** * the actual functionality behind checkid_immediate() and * checkid_setup() * @param mode the request being processed (either * mode_checkid_immediate or mode_checkid_setup) * @param pin the incoming request parameters * @param return_to reference to the object to store return_to url to * @param pout the response parameters * @param ext pointer to the extension hooks object * @throw exception in case of errors or negative reply */ - void checkid_(mode_t mode,const params_t& pin,string& return_to,params_t& pout,extension_t *ext=0); + virtual void checkid_(mode_t mode,const params_t& pin,string& return_to,params_t& pout,extension_t *ext=0); /** * process the check_authentication request. * @param pin incoming request parameters * @param pout response parameters */ void check_authentication(const params_t& pin,params_t& pout); }; } #endif /* __OPKELE_SERVER_H */ diff --git a/include/opkele/xconsumer.h b/include/opkele/xconsumer.h new file mode 100644 index 0000000..14a8aaa --- a/dev/null +++ b/include/opkele/xconsumer.h @@ -0,0 +1,41 @@ +#ifndef __OPKELE_XCONSUMER_H +#define __OPKELE_XCONSUMER_H + +/** + * @file + * @brief OpenID consumer with built-in extension chain + */ + +#include <opkele/extension_chain.h> +#include <opkele/consumer.h> + +/** + * @brief the main opkele namespace + */ +namespace opkele { + + /** + * Extended OpenID consumer implementation with built in + * extensions chain. + */ + class xconsumer_t : public consumer_t, public extension_chain_t { + public: + + string checkid_immediate(const string& identity,const string& return_to,const string& trust_root="",extension_t *ext=0) { + return consumer_t::checkid_immediate(identity,return_to,trust_root,this); + } + string chekid_setup(const string& identity,const string& return_to,const string& trust_root="",extension_t *ext=0) { + return consumer_t::checkid_setup(identity,return_to,trust_root,this); + } + string checkid_(mode_t mode,const string& identity,const string& return_to,const string& trust_root="",extension_t *ext=0) { + return consumer_t::checkid_(mode,identity,return_to,trust_root,this); + } + void id_res(const params_t& pin,const string& identity="",extension_t *ext=0) { + consumer_t::id_res(pin,identity,this); + } + + }; + +} + +#endif /* __OPKELE_XCONSUMER_H */ diff --git a/include/opkele/xserver.h b/include/opkele/xserver.h new file mode 100644 index 0000000..e29bfe6 --- a/dev/null +++ b/include/opkele/xserver.h @@ -0,0 +1,37 @@ +#ifndef __OPKELE_XSERVER_H +#define __OPKELE_XSERVER_H + +/** + * @file + * @brief OpenID server with built-in extension chain + */ + +#include <opkele/extension_chain.h> +#include <opkele/server.h> + +/** + * @brief the main opkele namespace + */ +namespace opkele { + + /** + * Extended OpenID server implementationwith built in + * extensions chain. + */ + class xserver_t : public server_t, public extension_chain_t { + public: + + void checkid_immediate(const params_t& pin,string& return_to,params_t& pout,extension_t *ext=0) { + server_t::checkid_immediate(pin,return_to,pout,this); + } + void checkid_setup(const params_t& pin,string& return_to,params_t& pout,extension_t *ext=0) { + server_t::checkid_setup(pin,return_to,pout,this); + } + void checkid_(mode_t mode,const params_t& pin,string& return_to,params_t& pout,extension_t *ext=0) { + server_t::checkid_(mode,pin,return_to,pout,this); + } + }; + +} + +#endif /* __OPKELE_XSERVER_H */ |