Sha256: 017f1906d8366e83221595247b3bb548684f2d95c12b8fe3cacbb56b6a3f37e1

Contents?: true

Size: 1.88 KB

Versions: 7

Compression:

Stored size: 1.88 KB

Contents

require_relative '../request'
require_relative '../exceptions'
require_relative 'suggestion'

module SmartyStreets
  module InternationalAutocomplete
    # It is recommended to instantiate this class using ClientBuilder.build_international_autocomplete_api_client
    class Client
      def initialize(sender, serializer)
        @sender = sender
        @serializer = serializer
      end

      # Sends a Lookup object to the International Autocomplete API and stores the result in the Lookup's result field.
      def send(lookup)
        if not lookup or not lookup.search
          raise SmartyStreets::SmartyError, 'Send() must be passed a Lookup with the prefix field set.'
        end

        request = build_request(lookup)

        response = @sender.send(request)

        raise response.error if response.error

        result = @serializer.deserialize(response.payload)
        suggestions = convert_suggestions(result)
        lookup.result = suggestions
      end


      def build_request(lookup)
        request = Request.new

        add_parameter(request, 'search', lookup.search)
        add_parameter(request, 'country', lookup.country)
        add_parameter(request, 'include_only_administrative_area', lookup.administrative_area)
        add_parameter(request, 'include_only_locality', lookup.locality)
        add_parameter(request, 'include_only_postal_code', lookup.postal_code)

        request
      end

      def convert_suggestions(suggestion_hashes)
        converted_suggestions = []
        return converted_suggestions if suggestion_hashes.nil?

        suggestion_hashes.each do |suggestion|
          converted_suggestions.push(InternationalAutocomplete::Suggestion.new(suggestion))
        end

        converted_suggestions
      end

      def add_parameter(request, key, value)
        request.parameters[key] = value unless value.nil? or value.empty?
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
smartystreets_ruby_sdk-5.14.7 lib/smartystreets_ruby_sdk/international_autocomplete/client.rb
smartystreets_ruby_sdk-5.14.6 lib/smartystreets_ruby_sdk/international_autocomplete/client.rb
smartystreets_ruby_sdk-5.14.5 lib/smartystreets_ruby_sdk/international_autocomplete/client.rb
smartystreets_ruby_sdk-5.14.4 lib/smartystreets_ruby_sdk/international_autocomplete/client.rb
smartystreets_ruby_sdk-5.14.3 lib/smartystreets_ruby_sdk/international_autocomplete/client.rb
smartystreets_ruby_sdk-5.14.1 lib/smartystreets_ruby_sdk/international_autocomplete/client.rb
smartystreets_ruby_sdk-5.14.0 lib/smartystreets_ruby_sdk/international_autocomplete/client.rb