using System.Net;
namespace TINK.Model.Repository.Exception
{
public static class WebExceptionHelper
{
/// Gets if a exception is caused by an error connecting to copri (LAN or mobile data off/ not reachable, proxy, ...).
/// Expection to check.
/// True if exception if caused by an connection error.
public static bool GetIsConnectFailureException(this System.Exception p_oException)
{
var l_oException = p_oException as WebException;
if (l_oException == null)
{
return false;
}
return l_oException.Status == WebExceptionStatus.ConnectFailure // Happens if WLAN and mobile data is off/ Router denies internet access/ ...
|| l_oException.Status == WebExceptionStatus.NameResolutionFailure // Happens sometimes when not WLAN and no mobil connection are available (bad connection in lift).
|| l_oException.Status == WebExceptionStatus.ReceiveFailure; // Happened when modile was connected to WLAN
}
/// Gets if a exception is caused by clicking too fast.
/// Expection to check.
/// True if exception if caused by a fast click sequence.
public static bool GetIsForbiddenException(this System.Exception p_oException)
{
if (!(p_oException is WebException l_oException))
{
return false;
}
if (!(l_oException?.Response is HttpWebResponse l_oResponse))
{
return false;
}
return l_oException.Status == WebExceptionStatus.ProtocolError
&& l_oResponse.StatusCode == HttpStatusCode.Forbidden;
}
}
}