module RubyBareEsiGetPages::GetPage

Public Instance Methods

get_page( page_number=nil ) click to toggle source

Get a single page. Doesn't check for remaining pages, in case of error fail.

@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.rb, line 9
def get_page( page_number=nil )
  @params[:page] = page_number if page_number
  url = self.build_url
  puts "Fetching : #{url}" if @debug_mode

  parsed_result = nil

  begin
    @request = open( url )

    set_headers

    json_result = @request.read
    parsed_result = JSON.parse( json_result )

  rescue JSON::ParserError => parse_error
    warn 'Got parse error !!!' unless @test_mode
    raise parse_error

  rescue => e
    error = EsiErrors::Base.dispatch( e, debug_mode: @debug_mode )
    error_print( error )

    raise error
  end

  parsed_result
end

Protected Instance Methods

build_url() click to toggle source
# File lib/get_pages/get_page.rb, line 48
def build_url
  url = ( @rest_url + '?' + @params.map{ |k, v| "#{k}=#{v}" }.join( '&' ) ).gsub( '//', '/' )
  self.class::ESI_BASE_URL + url
end
set_headers() click to toggle source
# File lib/get_pages/get_page.rb, line 40
def set_headers
  puts "RubyBareEsi.set_headers : request = #{@request}" if @debug_mode

  @pages_count = @request.meta['x-pages'].to_i
  @errors_limit_remain = @request.meta['x-esi-error-limit-remain']
  @errors_limit_reset = @request.meta['x-esi-error-limit-reset']
end