diff --git a/MailJetClient/MailJet.Client.csproj b/MailJetClient/MailJet.Client.csproj
index d72a487..82583e5 100644
--- a/MailJetClient/MailJet.Client.csproj
+++ b/MailJetClient/MailJet.Client.csproj
@@ -42,6 +42,7 @@
..\packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll
+
diff --git a/MailJetClient/MailJetClient.cs b/MailJetClient/MailJetClient.cs
index 06ad831..3d25b2a 100644
--- a/MailJetClient/MailJetClient.cs
+++ b/MailJetClient/MailJetClient.cs
@@ -14,6 +14,7 @@
using System.Net;
using System.Net.Mail;
using MimeTypes;
+using System.Web;
namespace MailJet.Client
{
@@ -633,9 +634,7 @@ private Response ExecuteRequest(RestRequest request) where T : DataItem
if (result.ResponseStatus == ResponseStatus.Completed && (result.StatusCode == HttpStatusCode.NoContent))
return null;
- var error = JsonConvert.DeserializeObject(result.Content);
- if (!String.IsNullOrWhiteSpace(error.ErrorInfo) || !String.IsNullOrWhiteSpace(error.ErrorMessage))
- throw new Exception(String.Format("{0}\n{1}", error.ErrorMessage, error.ErrorMessage));
+ ProcessWebResponse(result);
var data = JsonConvert.DeserializeObject>(result.Content);
return data;
@@ -651,12 +650,7 @@ private SentMessageData SendMessage(RestRequest request)
if (result.ResponseStatus == ResponseStatus.Completed && (result.StatusCode == HttpStatusCode.NoContent))
return null;
- if (result.ResponseStatus == ResponseStatus.Completed && result.StatusCode == HttpStatusCode.Unauthorized)
- throw new UnauthorizedAccessException("MailJet returned an HTTP 401 exception, please check your credentials");
-
- var error = JsonConvert.DeserializeObject(result.Content);
- if (!String.IsNullOrWhiteSpace(error.ErrorInfo) || !String.IsNullOrWhiteSpace(error.ErrorMessage))
- throw new Exception(String.Format("{0}\n{1}", error.ErrorMessage, error.ErrorMessage));
+ ProcessWebResponse(result);
var data = JsonConvert.DeserializeObject(result.Content);
return data;
@@ -671,9 +665,27 @@ private void ExecuteRequest(RestRequest request)
if (result.ResponseStatus == ResponseStatus.Completed && result.StatusCode == HttpStatusCode.NoContent)
return;
- var error = JsonConvert.DeserializeObject(result.Content);
- if (!String.IsNullOrWhiteSpace(error.ErrorInfo) || !String.IsNullOrWhiteSpace(error.ErrorMessage))
- throw new Exception(String.Format("{0}\n{1}", error.ErrorMessage, error.ErrorMessage));
+ ProcessWebResponse(result);
+ }
+
+ private void ProcessWebResponse(IRestResponse result)
+ {
+ if (result.StatusCode == HttpStatusCode.Unauthorized)
+ throw new UnauthorizedAccessException("MailJet returned an HTTP 401 exception, please check your credentials");
+
+ if (result.StatusCode >= HttpStatusCode.BadRequest)
+ throw new HttpException((int)result.StatusCode, result.StatusCode.ToString());
+
+ if (result.ErrorMessage != null && String.IsNullOrWhiteSpace(result.Content))
+ {
+ throw new Exception(result.ErrorMessage);
+ }
+ else
+ {
+ var error = JsonConvert.DeserializeObject(result.Content);
+ if ((error != null) && (!String.IsNullOrWhiteSpace(error.ErrorInfo) || !String.IsNullOrWhiteSpace(error.ErrorMessage)))
+ throw new Exception(String.Format("{0}\n{1}", error.ErrorMessage, error.ErrorMessage));
+ }
}
private RestClient WebClient