class CheckoutRu::Session

Attributes

ticket[R]

Public Class Methods

initiate() click to toggle source
# File lib/checkout_ru/session.rb, line 7
def initiate
  ticket = CheckoutRu.get_ticket
  new(ticket)
end
new(ticket) click to toggle source
# File lib/checkout_ru/session.rb, line 15
def initialize(ticket)
  @ticket = ticket
end

Public Instance Methods

calculation(params = {}, options = {}) click to toggle source
# File lib/checkout_ru/session.rb, line 23
def calculation(params = {}, options = {})
  get('calculation', params, options)
end
get_place_by_postal_code(params = {}, options = {}) click to toggle source
# File lib/checkout_ru/session.rb, line 35
def get_place_by_postal_code(params = {}, options = {})
  get('getPlaceByPostalCode', params, options)
end
get_places_by_query(params = {}, options = {}) click to toggle source
# File lib/checkout_ru/session.rb, line 19
def get_places_by_query(params = {}, options = {})
  get('getPlacesByQuery', params, options).suggestions
end
get_postal_code_by_address(params = {}, options = {}) click to toggle source
# File lib/checkout_ru/session.rb, line 31
def get_postal_code_by_address(params = {}, options = {})
  get('getPostalCodeByAddress', params, options).postindex
end
get_streets_by_query(params = {}, options = {}) click to toggle source
# File lib/checkout_ru/session.rb, line 27
def get_streets_by_query(params = {}, options = {})
  get('getStreetsByQuery', params, options).suggestions
end

Private Instance Methods

build_connection() click to toggle source
# File lib/checkout_ru/session.rb, line 71
def build_connection
  @connection ||= CheckoutRu.build_connection
end
expired_ticket?(parsed_response) click to toggle source
# File lib/checkout_ru/session.rb, line 75
def expired_ticket?(parsed_response)
  ExpiredTicketResponse.new(parsed_response).match?
end
get(service, params = {}, options = {}) click to toggle source
# File lib/checkout_ru/session.rb, line 40
def get(service, params = {}, options = {})
  attempts = options.delete(:attempts) || 2

  args = {:params => params.merge(:ticket => @ticket)}.merge(options)
  args[:connection] ||= build_connection

  begin
    parsed_response =
      CheckoutRu.make_request "/service/checkout/#{service}", args
  rescue Faraday::Error::ClientError => e
    parsed_response = e.response if e.respond_to?(:response) &&
      e.response.respond_to?(:[])

    raise unless expired_ticket?(parsed_response)
  end

  if CheckoutRu.auto_renew_session &&
    attempts > 0 && expired_ticket?(parsed_response)

    @ticket = CheckoutRu.get_ticket
    parsed_response =
      get(service, params, options.merge(attempts: attempts - 1))
  end

  if parsed_response[:error]
    raise Error.construct(parsed_response)
  end

  parsed_response
end