private static RestServiceException ParseByMessage(Exception ex, RestSharpClientShim client, RequestShim req) { if (ex == null) return null; if (ex.Message.Contains("remote name could not be resolved")) return RestServiceException.Unresolvable( req.Method, client.BaseUrl, req.Resource, ex); if (ex.Message.Contains("Missing required argument ")) return RestServiceException.BadRequest("Missing required argument : " + ex.Message.Between("Missing required argument ", ").", true).Quotify(), req.Method, client.BaseUrl, req.Resource, ex); if (ex.Message.Contains("401")) return RestServiceException.Unauthorized( req.Method, client.BaseUrl, req.Resource, ex); if (ex.Message.Contains("403")) return RestServiceException.Forbidden( req.Method, client.BaseUrl, req.Resource, ex); if (ex.Message.Contains("404")) return RestServiceException.NotFound( req.Method, client.BaseUrl, req.Resource, ex); if (ex.Message.Contains("406")) return RestServiceException.NotAcceptable( req.Method, client.BaseUrl, req.Resource, ex); if (ex.Message.Contains("Integrity constraint violation: ")) return RestServiceException.Conflict(ex.Message .Between("constraint violation: ", ").", true) + ".", req.Method, client.BaseUrl, req.Resource, ex); if (ex.Message.Contains("Unknown data property")) return RestServiceException.BadRequest("Unknown data property " + ex.Message.Between("Unknown data property ", ".).", true).Quotify(), req.Method, client.BaseUrl, req.Resource, ex); if (ex.Message.Contains("value list does not match column list: ")) return RestServiceException.BadRequest(ex.Message .Between("value list does not match column list: ", ").", true) + ".", req.Method, client.BaseUrl, req.Resource, ex); if (ex.Message.Contains("Internal Server Error : An error occurred")) return RestServiceException.InternalServer(ex.Message .Between("An error occurred ", ").", true) + ".", req.Method, client.BaseUrl, req.Resource, ex); if (ex.Message.Contains("Could not create destination directory")) return RestServiceException.InternalServer( "Could not create destination directory for file.", req.Method, client.BaseUrl, req.Resource, ex); return null; }
public static RestServiceException Parse(HttpRequestException ex, RestSharpClientShim client, RequestShim req) { var err = ParseByMessage(ex, client, req); if (err == null) err = ParseByMessage(ex.InnerException, client, req); if (err != null) return err; var inr = ex.InnerException; if (inr == null) return Unknown("No inner exception", ex, client, req); if (inr is WebException) return CastWebException((WebException)inr, client, req); return Unknown("None of the Parse-ables", ex, client, req); }
private static RestServiceException CastWebException(WebException ex, RestSharpClientShim client, RequestShim req) { var inr = ex.InnerException; if (inr == null) return Unknown("A WebException with NO innards", ex, client, req); if (inr.GetType().Name == "AuthenticationException") return RestServiceException.InvalidSsl( req.Method, client.BaseUrl, req.Resource, ex); if (inr.GetType().Name == "SocketException") return RestServiceException.Unavailable( req.Method, client.BaseUrl, req.Resource, ex); return Unknown("A WebException with UNKNOWN innards", ex, client, req); }
private static RestServiceException Unknown(string clue, Exception ex, RestSharpClientShim client, RequestShim req) { return RestServiceException.Unknown(clue, req.Method, client.BaseUrl, req.Resource, ex); }