public T Execute <T>(RestRequest request) where T : new() { T typedResponse; try { _accessToken = Authenticate(); var client = new RestClient(BaseUrl); request.AddParameter("Authorization", string.Format("{0} {1}", _accessToken.Type, _accessToken.AccessToken), ParameterType.HttpHeader); var response = client.Execute(request); if (response.ErrorException != null) { const string message = "Error retrieving response. Check inner details for more info"; var prozException = new ApplicationException(message, response.ErrorException); throw prozException; } typedResponse = JsonConvert.DeserializeObject <T>(response.Content); } catch (Exception) { if (_numberOfRetries > 3) { throw; } //try again _numberOfRetries++; typedResponse = Execute <T>(request); } return(typedResponse); }
public ProzApi() { _numberOfRetries = 0; _accessToken = new ProzAccessToken(); }