smartystreets_api 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/lib/smartystreets_api.rb +6 -1
- data/lib/smartystreets_api/api_client.rb +72 -0
- data/lib/smartystreets_api/decorators/base_decorator.rb +21 -0
- data/lib/smartystreets_api/decorators/international_format.rb +62 -0
- data/lib/smartystreets_api/decorators/international_format_2_lines.rb +74 -0
- data/lib/smartystreets_api/decorators/us_format.rb +1 -21
- data/lib/smartystreets_api/international_street_address.rb +45 -0
- data/lib/smartystreets_api/us_street_address.rb +37 -77
- data/lib/smartystreets_api/version.rb +1 -1
- metadata +7 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: b973ffd95180ed1525bf06779e749cb979bb10b4
         | 
| 4 | 
            +
              data.tar.gz: 9bbcb1c2d13deb48c17335494114bc203b58f48d
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: d84d3339812023dad016acac091b8929f034e312b9a4381a7a0734ab9dce0fa6299994fe1026a9dcca2d7bbd8a406c8fabd460e8c8b51792444d2d5334319ba4
         | 
| 7 | 
            +
              data.tar.gz: a7acbbc26742bb3be1843ca8e8748abcf68f7d7d32f54d48863abca1e938f77e0b011f7620e7fb4faac965ef8f9221d86821d5d9442dac7538a97c3ce4930d27
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,6 +1,13 @@ | |
| 1 1 | 
             
            # Change Log
         | 
| 2 2 | 
             
            All notable changes to this project will be documented in this file.
         | 
| 3 3 |  | 
| 4 | 
            +
            ## [0.2.0] - 2017-01-04
         | 
| 5 | 
            +
            ### Added
         | 
| 6 | 
            +
            - Support for the International Street Address API
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            ### Changed
         | 
| 9 | 
            +
            - Fix the comparison of the response HTTP code to pass the proper error message to the SevereApiError.
         | 
| 10 | 
            +
             | 
| 4 11 | 
             
            ## [0.1.2] - 2017-01-02
         | 
| 5 12 | 
             
            ### Changed
         | 
| 6 13 | 
             
            - Fix the comparison of the response HTTP code to pass the proper error message to the SevereApiError.
         | 
    
        data/lib/smartystreets_api.rb
    CHANGED
    
    | @@ -24,7 +24,7 @@ module SmartyStreetsApi | |
| 24 24 | 
             
                def initialize
         | 
| 25 25 | 
             
                  @auth_id = "AUTH-ID"
         | 
| 26 26 | 
             
                  @auth_token = "AUTH-TOKEN"
         | 
| 27 | 
            -
                  @base_url = " | 
| 27 | 
            +
                  @base_url = "api.smartystreets.com"
         | 
| 28 28 | 
             
                end
         | 
| 29 29 |  | 
| 30 30 | 
             
                def auth_args
         | 
| @@ -38,5 +38,10 @@ end | |
| 38 38 |  | 
| 39 39 | 
             
            require "smartystreets_api/monkey_patches"
         | 
| 40 40 | 
             
            require "smartystreets_api/exceptions"
         | 
| 41 | 
            +
            require "smartystreets_api/decorators/base_decorator"
         | 
| 41 42 | 
             
            require "smartystreets_api/decorators/us_format"
         | 
| 43 | 
            +
            require "smartystreets_api/decorators/international_format"
         | 
| 44 | 
            +
            require "smartystreets_api/decorators/international_format_2_lines"
         | 
| 45 | 
            +
            require "smartystreets_api/api_client"
         | 
| 42 46 | 
             
            require "smartystreets_api/us_street_address"
         | 
| 47 | 
            +
            require "smartystreets_api/international_street_address"
         | 
| @@ -0,0 +1,72 @@ | |
| 1 | 
            +
            class SmartyStreetsApi::ApiClient
         | 
| 2 | 
            +
              def self.get_single(options)
         | 
| 3 | 
            +
                uri = URI(endpoint)
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                args = options.select do |name, value|
         | 
| 6 | 
            +
                  whitelisted_input_fields.include?(name.to_s)
         | 
| 7 | 
            +
                end.merge!(auth_args)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                uri.query = URI.encode_www_form(args)
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                response = Net::HTTP.get_response(uri)
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                raise_error!(response.code) if severe_error?(response.code)
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                parse(response)
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              private
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              def self.parse(response)
         | 
| 21 | 
            +
                parsed_response = JSON.parse(response.body)
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                parse_response(parsed_response)
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              def self.parse_response(response)
         | 
| 27 | 
            +
                response.map do |address|
         | 
| 28 | 
            +
                  {
         | 
| 29 | 
            +
                    lines: address_lines(address).symbolize_keys!,
         | 
| 30 | 
            +
                    indexes: address_indexes(address).symbolize_keys!,
         | 
| 31 | 
            +
                    components: address["components"].symbolize_keys!,
         | 
| 32 | 
            +
                    metadata: address["metadata"].symbolize_keys!,
         | 
| 33 | 
            +
                    analysis: address["analysis"].symbolize_keys!
         | 
| 34 | 
            +
                  }
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              def self.address_lines(address)
         | 
| 39 | 
            +
                address.select { |field| output_address_lines_fields.include?(field) }.symbolize_keys!
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
              def self.address_indexes(address)
         | 
| 43 | 
            +
                address.select { |field| output_address_indexes_fields.include?(field) }.symbolize_keys!
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              def self.severe_error?(response_status_code)
         | 
| 47 | 
            +
                response_status_code.to_i != 200
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
              def self.raise_error!(response_status_code)
         | 
| 51 | 
            +
                reason = case response_status_code.to_i
         | 
| 52 | 
            +
                when 401
         | 
| 53 | 
            +
                  "Unauthorized"
         | 
| 54 | 
            +
                when 402
         | 
| 55 | 
            +
                  "Payment Required"
         | 
| 56 | 
            +
                when 413
         | 
| 57 | 
            +
                  "Request Entity Too Large"
         | 
| 58 | 
            +
                when 400
         | 
| 59 | 
            +
                  "Bad Request (Malformed Payload)"
         | 
| 60 | 
            +
                when 429
         | 
| 61 | 
            +
                  "Too Many Requests"
         | 
| 62 | 
            +
                else
         | 
| 63 | 
            +
                  "Unknown error: #{response_status_code}"
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                raise SmartyStreetsApi::Exceptions::SevereApiError.new(reason)
         | 
| 67 | 
            +
              end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
              def self.auth_args
         | 
| 70 | 
            +
                SmartyStreetsApi.configuration.auth_args
         | 
| 71 | 
            +
              end
         | 
| 72 | 
            +
            end
         | 
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            class SmartyStreetsApi::Decorators::BaseDecorator
         | 
| 2 | 
            +
              def call(address_object)
         | 
| 3 | 
            +
                return if !address_object || !address_object[:components]
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                self.class.private_instance_methods(false).inject({}) do |decorated_address, attribute|
         | 
| 6 | 
            +
                  components = self.send(attribute.to_sym)
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  array_values = components.map do |component_name|
         | 
| 9 | 
            +
                    if address_object[:components] && address_object[:components][component_name]
         | 
| 10 | 
            +
                      address_object[:components][component_name]
         | 
| 11 | 
            +
                    else
         | 
| 12 | 
            +
                      nil
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
                  end.compact
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  decorated_address[attribute] = array_values.empty? ? nil : array_values.join(" ")
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  decorated_address
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
| @@ -0,0 +1,62 @@ | |
| 1 | 
            +
            class SmartyStreetsApi::Decorators::InternationalFormat < SmartyStreetsApi::Decorators::BaseDecorator
         | 
| 2 | 
            +
              def call(address_object)
         | 
| 3 | 
            +
                return unless (decorated_address = super)
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                decorated_address[:organization] = address_object[:lines][:organization]
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                unless decorated_address[:address2]
         | 
| 8 | 
            +
                  decorated_address[:address2] = decorated_address[:address3]
         | 
| 9 | 
            +
                  decorated_address[:address3] = nil
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                unless decorated_address[:address1]
         | 
| 13 | 
            +
                  decorated_address[:address1] = decorated_address[:address2]
         | 
| 14 | 
            +
                  decorated_address[:address2] = decorated_address[:address3]
         | 
| 15 | 
            +
                  decorated_address[:address3] = nil
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                decorated_address
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              private
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              def organization
         | 
| 24 | 
            +
                [:organization]
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              def address1
         | 
| 28 | 
            +
                [:building]
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              def address2
         | 
| 32 | 
            +
                [
         | 
| 33 | 
            +
                  :premise,
         | 
| 34 | 
            +
                  :thoroughfare
         | 
| 35 | 
            +
                ]
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              def address3
         | 
| 39 | 
            +
                [
         | 
| 40 | 
            +
                  :sub_building_name,
         | 
| 41 | 
            +
                  :sub_building_type,
         | 
| 42 | 
            +
                  :sub_building_number,
         | 
| 43 | 
            +
                  :post_box
         | 
| 44 | 
            +
                ]
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
              def locality
         | 
| 48 | 
            +
                [:locality]
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              def postal_code
         | 
| 52 | 
            +
                [:postal_code_short]
         | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              def administrative_area
         | 
| 56 | 
            +
                [:administrative_area]
         | 
| 57 | 
            +
              end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
              def country
         | 
| 60 | 
            +
                [:country_iso_3]
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
            end
         | 
| @@ -0,0 +1,74 @@ | |
| 1 | 
            +
            class SmartyStreetsApi::Decorators::InternationalFormat2Lines < SmartyStreetsApi::Decorators::BaseDecorator
         | 
| 2 | 
            +
              def call(address_object)
         | 
| 3 | 
            +
                return unless (decorated_address = super)
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                decorated_address[:organization] = address_object[:lines][:organization]
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                unless decorated_address[:address1]
         | 
| 8 | 
            +
                  decorated_address[:address1] = decorated_address[:address_1_alternative]
         | 
| 9 | 
            +
                  decorated_address[:address2] = decorated_address[:address_2_alternative]
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                decorated_address.delete(:address_1_alternative)
         | 
| 13 | 
            +
                decorated_address.delete(:address_2_alternative)
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                decorated_address
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              private
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              def organization
         | 
| 21 | 
            +
                [:organization]
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              def address1
         | 
| 25 | 
            +
                [:building]
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              def address_1_alternative
         | 
| 29 | 
            +
                [
         | 
| 30 | 
            +
                  :premise,
         | 
| 31 | 
            +
                  :thoroughfare
         | 
| 32 | 
            +
                ]
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              def address2
         | 
| 36 | 
            +
                [
         | 
| 37 | 
            +
                  :premise,
         | 
| 38 | 
            +
                  :thoroughfare,
         | 
| 39 | 
            +
                  :sub_building_name,
         | 
| 40 | 
            +
                  :sub_building_type,
         | 
| 41 | 
            +
                  :sub_building_number,
         | 
| 42 | 
            +
                  :post_box
         | 
| 43 | 
            +
                ]
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              def address_2_alternative
         | 
| 47 | 
            +
                [
         | 
| 48 | 
            +
                  :sub_building_name,
         | 
| 49 | 
            +
                  :sub_building_type,
         | 
| 50 | 
            +
                  :sub_building_number,
         | 
| 51 | 
            +
                  :post_box
         | 
| 52 | 
            +
                ]
         | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              def locality
         | 
| 56 | 
            +
                [:locality]
         | 
| 57 | 
            +
              end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
              def postal_code
         | 
| 60 | 
            +
                [:postal_code]
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
              def postal_code_short
         | 
| 64 | 
            +
                [:postal_code_short]
         | 
| 65 | 
            +
              end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
              def administrative_area
         | 
| 68 | 
            +
                [:administrative_area]
         | 
| 69 | 
            +
              end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
              def country
         | 
| 72 | 
            +
                [:country_iso_3]
         | 
| 73 | 
            +
              end
         | 
| 74 | 
            +
            end
         | 
| @@ -1,24 +1,4 @@ | |
| 1 | 
            -
            class SmartyStreetsApi::Decorators::UsFormat
         | 
| 2 | 
            -
              def call(address_object)
         | 
| 3 | 
            -
                return if !address_object || !address_object[:components]
         | 
| 4 | 
            -
             | 
| 5 | 
            -
                self.class.private_instance_methods(false).inject({}) do |decorated_address, attribute|
         | 
| 6 | 
            -
                  components = self.send(attribute.to_sym)
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                  array_values = components.map do |component_name|
         | 
| 9 | 
            -
                    if address_object[:components] && address_object[:components][component_name]
         | 
| 10 | 
            -
                      address_object[:components][component_name]
         | 
| 11 | 
            -
                    else
         | 
| 12 | 
            -
                      nil
         | 
| 13 | 
            -
                    end
         | 
| 14 | 
            -
                  end.compact
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                  decorated_address[attribute] = array_values.empty? ? nil : array_values.join(" ")
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                  decorated_address
         | 
| 19 | 
            -
                end
         | 
| 20 | 
            -
              end
         | 
| 21 | 
            -
             | 
| 1 | 
            +
            class SmartyStreetsApi::Decorators::UsFormat < SmartyStreetsApi::Decorators::BaseDecorator
         | 
| 22 2 | 
             
              private
         | 
| 23 3 |  | 
| 24 4 | 
             
              def street
         | 
| @@ -0,0 +1,45 @@ | |
| 1 | 
            +
            class SmartyStreetsApi::InternationalStreetAddress < SmartyStreetsApi::ApiClient
         | 
| 2 | 
            +
              def self.whitelisted_input_fields
         | 
| 3 | 
            +
                %w(
         | 
| 4 | 
            +
                  input_id
         | 
| 5 | 
            +
                  country
         | 
| 6 | 
            +
                  geocode
         | 
| 7 | 
            +
                  language
         | 
| 8 | 
            +
                  freeform
         | 
| 9 | 
            +
                  address1
         | 
| 10 | 
            +
                  address2
         | 
| 11 | 
            +
                  address3
         | 
| 12 | 
            +
                  address4
         | 
| 13 | 
            +
                  organization
         | 
| 14 | 
            +
                  locality
         | 
| 15 | 
            +
                  administrative_area
         | 
| 16 | 
            +
                  postal_code
         | 
| 17 | 
            +
                )
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              def self.output_address_lines_fields
         | 
| 21 | 
            +
                %w(
         | 
| 22 | 
            +
                  organization
         | 
| 23 | 
            +
                  address1
         | 
| 24 | 
            +
                  address2
         | 
| 25 | 
            +
                  address3
         | 
| 26 | 
            +
                  address4
         | 
| 27 | 
            +
                  address5
         | 
| 28 | 
            +
                  address6
         | 
| 29 | 
            +
                  address7
         | 
| 30 | 
            +
                  address8
         | 
| 31 | 
            +
                  address9
         | 
| 32 | 
            +
                  address10
         | 
| 33 | 
            +
                  address11
         | 
| 34 | 
            +
                  address12
         | 
| 35 | 
            +
                )
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              def self.output_address_indexes_fields
         | 
| 39 | 
            +
                %w(input_id)
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
              def self.endpoint
         | 
| 43 | 
            +
                "https://international-street.#{SmartyStreetsApi.configuration.base_url}/verify"
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
            end
         | 
| @@ -1,79 +1,39 @@ | |
| 1 | 
            -
            class SmartyStreetsApi::UsStreetAddress
         | 
| 2 | 
            -
               | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
                 | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
               | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 31 | 
            -
                   | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
                end
         | 
| 39 | 
            -
              end
         | 
| 40 | 
            -
             | 
| 41 | 
            -
              def self.address_lines(address)
         | 
| 42 | 
            -
                address.select { |field| OUTPUT_ADDRESS_LINES.include?(field) }.symbolize_keys!
         | 
| 43 | 
            -
              end
         | 
| 44 | 
            -
             | 
| 45 | 
            -
              def self.address_indexes(address)
         | 
| 46 | 
            -
                address.select { |field| OUTPUT_ADDRESS_INDEXES.include?(field) }.symbolize_keys!
         | 
| 47 | 
            -
              end
         | 
| 48 | 
            -
             | 
| 49 | 
            -
              def self.severe_error?(response_status_code)
         | 
| 50 | 
            -
                response_status_code.to_i != 200
         | 
| 51 | 
            -
              end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
              def self.raise_error!(response_status_code)
         | 
| 54 | 
            -
                reason = case response_status_code.to_i
         | 
| 55 | 
            -
                when 401
         | 
| 56 | 
            -
                  "Unauthorized"
         | 
| 57 | 
            -
                when 402
         | 
| 58 | 
            -
                  "Payment Required"
         | 
| 59 | 
            -
                when 413
         | 
| 60 | 
            -
                  "Request Entity Too Large"
         | 
| 61 | 
            -
                when 400
         | 
| 62 | 
            -
                  "Bad Request (Malformed Payload)"
         | 
| 63 | 
            -
                when 429
         | 
| 64 | 
            -
                  "Too Many Requests"
         | 
| 65 | 
            -
                else
         | 
| 66 | 
            -
                  "Unknown error: #{response_status_code}"
         | 
| 67 | 
            -
                end
         | 
| 68 | 
            -
             | 
| 69 | 
            -
                raise SmartyStreetsApi::Exceptions::SevereApiError.new(reason)
         | 
| 70 | 
            -
              end
         | 
| 71 | 
            -
             | 
| 72 | 
            -
              def self.host
         | 
| 73 | 
            -
                SmartyStreetsApi.configuration.base_url
         | 
| 74 | 
            -
              end
         | 
| 75 | 
            -
             | 
| 76 | 
            -
              def self.auth_args
         | 
| 77 | 
            -
                SmartyStreetsApi.configuration.auth_args
         | 
| 1 | 
            +
            class SmartyStreetsApi::UsStreetAddress < SmartyStreetsApi::ApiClient
         | 
| 2 | 
            +
              def self.whitelisted_input_fields
         | 
| 3 | 
            +
                %w(
         | 
| 4 | 
            +
                  input_id
         | 
| 5 | 
            +
                  street
         | 
| 6 | 
            +
                  street2
         | 
| 7 | 
            +
                  secondary
         | 
| 8 | 
            +
                  city
         | 
| 9 | 
            +
                  state
         | 
| 10 | 
            +
                  zipcode
         | 
| 11 | 
            +
                  lastline
         | 
| 12 | 
            +
                  addressee
         | 
| 13 | 
            +
                  urbanization
         | 
| 14 | 
            +
                  candidates
         | 
| 15 | 
            +
                )
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              def self.output_address_lines_fields
         | 
| 19 | 
            +
                %w(
         | 
| 20 | 
            +
                  addressee
         | 
| 21 | 
            +
                  delivery_line_1
         | 
| 22 | 
            +
                  delivery_line_2
         | 
| 23 | 
            +
                  last_line
         | 
| 24 | 
            +
                )
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              def self.output_address_indexes_fields
         | 
| 28 | 
            +
                %w(
         | 
| 29 | 
            +
                  input_id
         | 
| 30 | 
            +
                  input_index
         | 
| 31 | 
            +
                  candidate_index
         | 
| 32 | 
            +
                  delivery_point_barcode
         | 
| 33 | 
            +
                )
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              def self.endpoint
         | 
| 37 | 
            +
                "https://#{SmartyStreetsApi.configuration.base_url}/street-address"
         | 
| 78 38 | 
             
              end
         | 
| 79 39 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: smartystreets_api
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - florrain
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017-01- | 
| 11 | 
            +
            date: 2017-01-04 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -98,8 +98,13 @@ files: | |
| 98 98 | 
             
            - README.md
         | 
| 99 99 | 
             
            - Rakefile
         | 
| 100 100 | 
             
            - lib/smartystreets_api.rb
         | 
| 101 | 
            +
            - lib/smartystreets_api/api_client.rb
         | 
| 102 | 
            +
            - lib/smartystreets_api/decorators/base_decorator.rb
         | 
| 103 | 
            +
            - lib/smartystreets_api/decorators/international_format.rb
         | 
| 104 | 
            +
            - lib/smartystreets_api/decorators/international_format_2_lines.rb
         | 
| 101 105 | 
             
            - lib/smartystreets_api/decorators/us_format.rb
         | 
| 102 106 | 
             
            - lib/smartystreets_api/exceptions.rb
         | 
| 107 | 
            +
            - lib/smartystreets_api/international_street_address.rb
         | 
| 103 108 | 
             
            - lib/smartystreets_api/monkey_patches.rb
         | 
| 104 109 | 
             
            - lib/smartystreets_api/us_street_address.rb
         | 
| 105 110 | 
             
            - lib/smartystreets_api/version.rb
         |