private void EnsureExpectedResponseStatus(IRestResponse response, params HttpStatusCode[] expectedStatuses) { /* * --------------------------- * Error * --------------------------- * An error occurred: An error has occurred. * * API request returned an unexpected response: BadRequest (Bad Request) -- Expected one of OK * * {"param":{"name":"workItem"},"cause":"HTTP 404 Not Found"} * * --------------------------- * OK * --------------------------- */ _log.Debug( string.Format( "Checking request status for {0} {1} \n\n {2}", response.Request.Method, response.Request.Resource, response.Request.Parameters.Where(p => p.Type == ParameterType.UrlSegment) .Aggregate(string.Empty, (str, parameter) => string.Format("{0}{1}={2}\n", str, parameter.Name, parameter.Value)))); if (response.ResponseStatus != ResponseStatus.Completed) { _log.Error(string.Format("!!!! Response status = {0} !!!!", response.ResponseStatus), response.ErrorException); throw new ConnectionException( string.Format("API request did not complete successfully. ResponseStatus = {0}", response.ResponseStatus), response.ErrorException); } if (!expectedStatuses.Contains(response.StatusCode)) { _log.Warn(string.Format("Response returned an unexpected status = {0}", response.StatusCode)); throw new HttpStatusCodeException( response.AsApiResponse(), string.Format( "API request returned an unexpected response: {0} ({1}) -- Expected one of {2} \n\n {3}", response.StatusCode, response.StatusDescription, expectedStatuses.Select(s => s.ToString()).Aggregate((s1, s2) => string.Format("{0} {1}", s1, s2)), response.Content)); } }