summaryrefslogtreecommitdiffabout
path: root/include/opkele
authorMichael Krelin <hacker@klever.net>2007-08-09 11:23:36 (UTC)
committer Michael Krelin <hacker@klever.net>2007-08-09 11:23:36 (UTC)
commit65bab7c9f984d6fe45ce72e7db014c40eba4d240 (patch) (side-by-side diff)
tree28c4791aea6b7dc404ad0d27050c34f447a84314 /include/opkele
parent1f347795ef5eba50892fd777c173a2a6db1755f2 (diff)
downloadlibopkele-65bab7c9f984d6fe45ce72e7db014c40eba4d240.zip
libopkele-65bab7c9f984d6fe45ce72e7db014c40eba4d240.tar.gz
libopkele-65bab7c9f984d6fe45ce72e7db014c40eba4d240.tar.bz2
associations robustness improvements and documentation updates
Diffstat (limited to 'include/opkele') (more/less context) (show whitespace changes)
-rw-r--r--include/opkele/association.h2
-rw-r--r--include/opkele/consumer.h19
2 files changed, 20 insertions, 1 deletions
diff --git a/include/opkele/association.h b/include/opkele/association.h
index a8f3915..72eff5b 100644
--- a/include/opkele/association.h
+++ b/include/opkele/association.h
@@ -56,13 +56,15 @@ namespace opkele {
_secret(__secret), _expires(__expires), _stateless(__stateless) { }
virtual string server() const { return _server; }
virtual string handle() const { return _handle; }
virtual string assoc_type() const { return _assoc_type; }
virtual secret_t secret() const { return _secret; }
virtual int expires_in() const { return _expires-time(0); }
virtual bool stateless() const { return _stateless; }
+
+ virtual bool is_expired() const { return _expires<time(0); }
};
}
#endif /* __OPKELE_ASSOCIATION_H */
diff --git a/include/opkele/consumer.h b/include/opkele/consumer.h
index 042e2d1..b9d1e54 100644
--- a/include/opkele/consumer.h
+++ b/include/opkele/consumer.h
@@ -8,16 +8,21 @@
* @file
* @brief OpenID consumer-side functionality
*/
namespace opkele {
/**
* implementation of basic consumer functionality
+ *
+ * @note
+ * The consumer uses libcurl internally, which means that if you're using
+ * libopkele in multithreaded environment you should call curl_global_init
+ * yourself before spawning any threads.
*/
class consumer_t {
public:
/**
* store association. The function should be overridden in the real
* implementation to provide persistent associations store.
* @param server the OpenID server
@@ -26,33 +31,45 @@ namespace opkele {
* @param expires_in the number of seconds until the handle is expired
* @return the auto_ptr<> for the newly allocated association_t object
*/
virtual assoc_t store_assoc(const string& server,const string& handle,const secret_t& secret,int expires_in) = 0;
/**
* retrieve stored association. The function should be overridden
* in the real implementation to provide persistent assocations
* store.
+ *
+ * @note
+ * The user is responsible for handling associations expiry and
+ * this function should never return an expired or invalidated
+ * association.
+ *
* @param server the OpenID server
* @param handle association handle
* @return the autho_ptr<> for the newly allocated association_t object
- * @throw failed_lookup in case of error
+ * @throw failed_lookup if no unexpired association found
*/
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.
+ *
+ * @note
+ * The user is responsible for handling associations and this
+ * function should never return an expired or invalidated
+ * association.
+ *
* @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