namespace ShareeBike.Repository.Exception
{
///
/// Is fired with request used a cookie which is not defined.
/// Reasons for cookie to be not defined might be
/// - user used more that 8 different devices (copri invalidates cookies in this case)
/// - user account has been deleted?
///
public class AuthcookieNotDefinedException : InvalidResponseException
{
/// Constructs a authorization exceptions.
/// Text describing request which is shown if validation fails.
public AuthcookieNotDefinedException(string p_strTextOfAction, Response.ResponseBase response) :
base($"{p_strTextOfAction}\r\nDie Sitzung ist abgelaufen. Bitte neu anmelden.", response)
{
}
///
/// Gets whether authcookie is defined or not.
///
/// Response to check
/// Text holding context in which authcookie is checked.
/// Exception thrown if cookie is not defined.
///
public static bool IsAuthcookieNotDefined(
Response.ResponseBase reponse,
string actionText,
out AuthcookieNotDefinedException exception)
{
if (reponse == null || reponse.response_state == null)
{
// Empty response or response without response state is no authcookie not defined exception.
exception = null;
return false;
}
if (!reponse.response_state.ToUpper().Contains(AUTH_FAILURE_QUERY_AUTHCOOKIENOTDEFIED.ToUpper())
&& !reponse.response_state.ToUpper().Contains(AUTH_FAILURE_BOOK_AUTICOOKIENOTDEFIED.ToUpper())
&& !reponse.response_state.ToUpper().Contains(AUTH_FAILURE_BIKESOCCUPIED_AUTICOOKIENOTDEFIED.ToUpper())
&& !reponse.response_state.ToUpper().Contains(AUTH_FAILURE_LOGOUT_AUTHCOOKIENOTDEFIED.ToUpper()))
{
exception = null;
return false;
}
exception = new AuthcookieNotDefinedException(actionText, reponse);
return true;
}
/// Holds error description if session expired. From COPRI 4.0.0.0 1001 is the only authcookie not defined error.
private const string AUTH_FAILURE_QUERY_AUTHCOOKIENOTDEFIED = "Failure 1001: authcookie not defined";
/// Holds error description if session expired (Applies to COPRI < 4.0.0.0)
private const string AUTH_FAILURE_BOOK_AUTICOOKIENOTDEFIED = "Failure 1002: authcookie not defined";
/// Holds error description if session expired (Applies to COPRI < 4.0.0.0)
private const string AUTH_FAILURE_BIKESOCCUPIED_AUTICOOKIENOTDEFIED = "Failure 1003: authcookie not defined";
/// Holds error description if session expired. (Applies to COPRI < 4.0.0.0)
private const string AUTH_FAILURE_LOGOUT_AUTHCOOKIENOTDEFIED = "Failure 1004: authcookie not defined";
}
}