/// <summary> /// Generic handling of status responses /// See: https://wiki.fitbit.com/display/API/API+Response+Format+And+Errors /// </summary> /// <param name="httpStatusCode"></param> private void HandleResponse(IRestResponse response) { System.Net.HttpStatusCode httpStatusCode = response.StatusCode; if (httpStatusCode == System.Net.HttpStatusCode.OK || //200 httpStatusCode == System.Net.HttpStatusCode.Created || //201 httpStatusCode == System.Net.HttpStatusCode.NoContent) //204 { return; } else { Console.WriteLine("HttpError:" + httpStatusCode.ToString()); IList <ApiError> errors; try { var xmlDeserializer = new RestSharp.Deserializers.XmlDeserializer() { RootElement = "errors" }; errors = xmlDeserializer.Deserialize <List <ApiError> >(new RestResponse { Content = response.Content }); } catch (Exception) // If there's an issue deserializing the error we still want to raise a fitbit exception { errors = new List <ApiError>(); } FitbitException exception = new FitbitException("Http Error:" + httpStatusCode.ToString(), httpStatusCode, errors); var retryAfterHeader = response.Headers.FirstOrDefault(h => h.Name == "Retry-After"); if (retryAfterHeader != null) { int retryAfter; if (int.TryParse(retryAfterHeader.Value.ToString(), out retryAfter)) { exception.retryAfter = retryAfter; } } throw exception; } }
/// <summary> /// Generic handling of status responses /// See: https://wiki.fitbit.com/display/API/API+Response+Format+And+Errors /// </summary> /// <param name="httpStatusCode"></param> private void HandleResponse(IRestResponse response) { System.Net.HttpStatusCode httpStatusCode = response.StatusCode; if (httpStatusCode == System.Net.HttpStatusCode.OK || //200 httpStatusCode == System.Net.HttpStatusCode.Created || //201 httpStatusCode == System.Net.HttpStatusCode.NoContent) //204 { return; } else { Console.WriteLine("HttpError:" + httpStatusCode.ToString()); IList<ApiError> errors; try { var xmlDeserializer = new RestSharp.Deserializers.XmlDeserializer() { RootElement = "errors" }; errors = xmlDeserializer.Deserialize<List<ApiError>>(new RestResponse { Content = response.Content }); } catch (Exception) // If there's an issue deserializing the error we still want to raise a fitbit exception { errors = new List<ApiError>(); } FitbitException exception = new FitbitException("Http Error:" + httpStatusCode.ToString(), httpStatusCode, errors); var retryAfterHeader = response.Headers.FirstOrDefault(h => h.Name == "Retry-After"); if (retryAfterHeader != null) { int retryAfter; if (int.TryParse(retryAfterHeader.Value.ToString(), out retryAfter)) { exception.RetryAfter = retryAfter; } } throw exception; } }