class ZuoraConnect::AppInstanceBase
def refresh_oauth
def refresh_oauth count ||= 0 start = Time.now 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_time = Time.now - start Rails.logger.info("[#{self.id}] REFRESHING - OAuth in #{response_time.round(2).to_s}") if response.code == 200 response_body = JSON.parse(response.body) 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(:validate => false) else Rails.logger.fatal("REFRESHING - OAuth Failed - Code #{response.code}") raise ZuoraConnect::Exceptions::ConnectCommunicationError.new("Error Refreshing Access Token", response.body, response.code) end rescue Net::ReadTimeout, Net::OpenTimeout, Errno::EPIPE, Errno::ECONNRESET, Errno::ECONNREFUSED, SocketError => ex if (count += 1) < 3 retry else raise end rescue ZuoraConnect::Exceptions::ConnectCommunicationError => ex if (count += 1) < 3 Rails.logger.info("REFRESHING - OAuth Failed - Retrying(#{count})") self.reload sleep(5) retry else Rails.logger.fatal("REFRESHING - OAuth Failed") raise end end