Skip to content

SendMessage is not throwing http errors #28

@mpiliszcz

Description

@mpiliszcz

When network issues occur, e.g. no network connection, the low level error code is not returned.
This could be the solution:

    private SentMessageData SendMessage(RestRequest request)
    {
        request.RequestFormat = DataFormat.Json;
        request.JsonSerializer = NewtonsoftJsonSerializer.Default;

        var result = WebClient.Execute(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");

        if (result.ResponseStatus == ResponseStatus.Completed && 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<ErrorResponse>(result.Content);
            if (!String.IsNullOrWhiteSpace(error.ErrorInfo) || !String.IsNullOrWhiteSpace(error.ErrorMessage))
                throw new Exception(String.Format("{0}\n{1}", error.ErrorMessage, error.ErrorMessage));
        }

        var data = JsonConvert.DeserializeObject<SentMessageData>(result.Content);
        return data;
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions