Sha256: 8cc2de977c8e4978429008c9b66b1eba85148981c07eba3af39a0ab7e7e9aecd

Contents?: true

Size: 1.54 KB

Versions: 18

Compression:

Stored size: 1.54 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)
        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

18 entries across 18 versions & 1 rubygems

Version Path
smartystreets_ruby_sdk-5.5.2 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.5.1 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.5.0 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.4.0 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.3.3 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.3.2 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.3.1 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.3.0 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.2.2 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.2.1 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.2.0 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.1.1 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.1.0 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-5.0.0 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-4.2.0 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-4.1.3 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-4.0.1 lib/smartystreets_ruby_sdk/us_extract/client.rb
smartystreets_ruby_sdk-4.0.0 lib/smartystreets_ruby_sdk/us_extract/client.rb