class ZuoraConnect::AppInstanceBase
def refresh_oauth
def refresh_oauth count ||= 0 Rails.logger.debug("[#{self.id}] REFRESHING - OAuth") params = { :grant_type => "refresh_token", :redirect_uri => ZuoraConnect.configuration.oauth_client_redirect_uri, :refresh_token => self.refresh_token } response = HTTParty.post("#{ZuoraConnect.configuration.url}/oauth/token",:body => params) response_body = JSON.parse(response.body) if response.code == 200 self.refresh_token = response_body["refresh_token"] self.access_token = response_body["access_token"] self.oauth_expires_at = Time.at(response_body["created_at"].to_i) + response_body["expires_in"].seconds self.save else Rails.logger.debug("REFRESHING - OAuth Failed - Code #{response.code}") raise ZuoraConnect::Exceptions::ConnectCommunicationError.new("Error Refreshing Access Token", response.body, response.code) end rescue if count < 3 Rails.logger.debug("REFRESHING - OAuth Failed - Retrying(#{count})") self.reload sleep(5) count += 1 retry else Rails.logger.fatal("REFRESHING - OAuth Failed") raise end end