summaryrefslogtreecommitdiffabout
path: root/include/opkele/exception.h
Side-by-side diff
Diffstat (limited to 'include/opkele/exception.h') (more/less context) (show whitespace changes)
-rw-r--r--include/opkele/exception.h95
1 files changed, 88 insertions, 7 deletions
diff --git a/include/opkele/exception.h b/include/opkele/exception.h
index 2ff44b7..a8c3339 100644
--- a/include/opkele/exception.h
+++ b/include/opkele/exception.h
@@ -21,15 +21,19 @@
# define OPKELE_E_CONS_ fi,fu,l,
/**
* the exception codepoint specification
*/
# define OPKELE_CP_ CODEPOINT,
/**
+ * open function-try-block
+ */
+# define OPKELE_FUNC_TRY try
+/**
* the simple rethrow of konforka-based exception
*/
-# define OPKELE_RETHROW catch(konforka::exception& e) { e.see(CODEPOINT); throw }
+# define OPKELE_RETHROW catch(konforka::exception& e) { e.see(CODEPOINT); throw; }
#else /* OPKELE_HAVE_KONFORKA */
# include <exception>
# include <string>
/**
* the exception parameter declaration
*/
@@ -41,12 +45,16 @@
# define OPKELE_E_CONS_
/**
* the dummy placeholder for konforka exception codepoint specification
*/
# define OPKELE_CP_
/**
+ * the dummy define for the opening function-try-block
+ */
+# define OPKELE_FUNC_TRY
+/**
* the dummy define for the konforka-based rethrow of exception
*/
# define OPKELE_RETHROW
#endif /* OPKELE_HAVE_KONFORKA */
/**
* the exception parameters list to pass to constructor
@@ -66,19 +74,16 @@ namespace opkele {
std::exception
# endif
{
public:
# ifdef OPKELE_HAVE_KONFORKA
explicit
- exception(const string& fi,const string& fu,int l,const string& w)
- : konforka::exception(fi,fu,l,w) { }
+ exception(const string& fi,const string& fu,int l,const string& w);
# else /* OPKELE_HAVE_KONFORKA */
string _what;
- explicit
- exception(const string& w)
- : _what(w) { }
+ explicit exception(const string& w);
virtual ~exception() throw();
virtual const char * what() const throw();
# endif /* OPKELE_HAVE_KONFORKA */
};
/**
@@ -153,13 +158,13 @@ namespace opkele {
/**
* thrown if the user_setup_url is provided with negative response
*/
class id_res_setup : public id_res_failed {
public:
string setup_url;
- id_res_setup(OPKELE_E_PARS,const string& su)
+ id_res_setup(OPKELE_E_PARS,const string& su="")
: id_res_failed(OPKELE_E_CONS), setup_url(su) { }
~id_res_setup() throw() { }
};
/**
* thrown in case of signature mismatch
*/
@@ -176,12 +181,48 @@ namespace opkele {
public:
id_res_expired_on_delivery(OPKELE_E_PARS)
: id_res_failed(OPKELE_E_CONS) { }
};
/**
+ * thown when the user cancelled authentication process.
+ */
+ class id_res_cancel : public id_res_failed {
+ public:
+ id_res_cancel(OPKELE_E_PARS)
+ : id_res_failed(OPKELE_E_CONS) { }
+ };
+
+ /**
+ * thrown in case of nonce reuse or otherwise imperfect nonce.
+ */
+ class id_res_bad_nonce : public id_res_failed {
+ public:
+ id_res_bad_nonce(OPKELE_E_PARS)
+ : id_res_failed(OPKELE_E_CONS) { }
+ };
+
+ /**
+ * thrown if return_to didn't pass verification
+ */
+ class id_res_bad_return_to : public id_res_failed {
+ public:
+ id_res_bad_return_to(OPKELE_E_PARS)
+ : id_res_failed(OPKELE_E_CONS) { }
+ };
+
+ /**
+ * thrown if OP isn't authorized to make an assertion
+ */
+ class id_res_unauthorized : public id_res_failed {
+ public:
+ id_res_unauthorized(OPKELE_E_PARS)
+ : id_res_failed(OPKELE_E_CONS) { }
+ };
+
+ /**
* openssl malfunction occured
*/
class exception_openssl : public exception {
public:
unsigned long _error;
string _ssl_string;
@@ -209,12 +250,42 @@ namespace opkele {
exception_curl(OPKELE_E_PARS);
exception_curl(OPKELE_E_PARS,CURLcode e);
~exception_curl() throw() { }
};
/**
+ * htmltidy related error occured
+ */
+ class exception_tidy : public exception {
+ public:
+ int _rc;
+ exception_tidy(OPKELE_E_PARS);
+ exception_tidy(OPKELE_E_PARS,int r);
+ ~exception_tidy() throw() { }
+ };
+
+ /**
+ * exception thrown in case of failed discovery
+ */
+ class failed_discovery : public exception {
+ public:
+ failed_discovery(OPKELE_E_PARS)
+ : exception(OPKELE_E_CONS) { }
+ };
+
+ /**
+ * unsuccessfull xri resolution
+ */
+ class failed_xri_resolution : public failed_discovery {
+ public:
+ long _code;
+ failed_xri_resolution(OPKELE_E_PARS,long _c=-1)
+ : failed_discovery(OPKELE_E_CONS), _code(_c) { }
+ };
+
+ /**
* not implemented (think pure virtual) member function executed, signfies
* programmer error
*/
class not_implemented : public exception {
public:
not_implemented(OPKELE_E_PARS)
@@ -227,9 +298,19 @@ namespace opkele {
class internal_error : public exception {
public:
internal_error(OPKELE_E_PARS)
: exception(OPKELE_E_CONS) { }
};
+ /**
+ * thrown in case of unsupported parameter encountered (e.g. unsupported
+ * association type).
+ */
+ class unsupported : public exception {
+ public:
+ unsupported(OPKELE_E_PARS)
+ : exception(OPKELE_E_CONS) { }
+ };
+
}
#endif /* __OPKELE_EXCEPTION_H */