Sha256: 4b4b84d70ab33383e146fc9ccf0c47a20d0b01b4ec358ed4146220eaf92d2da0

Contents?: true

Size: 1.58 KB

Versions: 34

Compression:

Stored size: 1.58 KB

Contents

require_relative '../request'
require_relative '../exceptions'
require_relative 'result'

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

      # Sends a Lookup object to the US Extract Code API and stores the result in the Lookup's result field.
      # It also returns the result directly.
      def send(lookup)
        if lookup.nil? or lookup.text.nil? or not lookup.text.is_a? String or lookup.text.empty?
          raise SmartyError, 'Client.send() requires a Lookup with the "text" field set'
        end

        request = build_request(lookup)
        response = @sender.send(request)
        raise response.error if response.error
        result = USExtract::Result.new(@serializer.deserialize(response.payload))

        lookup.result = result
      end

      def build_request(lookup)
        request = Request.new
        request.content_type = 'text/plain'
        request.payload = lookup.text

        add_parameter(request, 'html', lookup.html.to_s)
        add_parameter(request, 'aggressive', lookup.aggressive.to_s)
        add_parameter(request, 'addr_line_breaks', lookup.addresses_have_line_breaks.to_s)
        add_parameter(request, 'addr_per_line', lookup.addresses_per_line.to_s)

        request
      end

      def add_parameter(request, key, value)
        if value and not value.empty?
          request.parameters[key] = value
        end
      end
    end
  end
end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
smartystreets_ruby_sdk-5.14.18 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.14.17 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.14.14 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.14.13 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-0.0.0 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.14.11 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.14.10 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.14.9 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.14.8 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.14.7 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.14.6 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.14.5 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.14.4 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.14.3 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.14.1 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.14.0 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.13.0 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.12.1 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.12.0 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.11.2 lib/smartystreets_ruby_sdk/us_extract/client.rb