module RubyBareEsiGetPages::GetPageRetryOnError

Public Instance Methods

get_page_retry_on_error( page_number=nil ) click to toggle source

Get a single page. Doesn't check for remaining pages, in case of error retry according to Error class retry parameters.

@param page_number [Int] the number of the pages you are requesting, if there are more pages you need to get (default the first).

@return [Hash] a hash containing the data you are requested. For data content see API.

# File lib/get_pages/get_page_retry_on_error.rb, line 9
def get_page_retry_on_error( page_number=nil )
  parsed_result = nil
  retry_count = 0

  loop do
    begin
      parsed_result = get_page( page_number )
      break

    rescue EsiErrors::Base => error
      puts "RubyBareEsiGetPages::GetPageRetryOnError.get_page_retry_on_error : retry = #{error.retry?}" if @debug_mode

      if error.retry?

        retry_count += 1
        if retry_count >= 20
          raise 'Retry count exceeded.'
        end

        error.pause( test_mode: @test_mode )
        next
      else
        raise error
      end
    end
  end

  parsed_result
end