Class: MelissaData::WebSmart::Client

Inherits:
Object
  • Object
show all
Includes:
Formatters, ResponseProcessor
Defined in:
lib/melissa_data/web_smart/client.rb

Constant Summary

Constants included from ResponseProcessor

ResponseProcessor::CODE_TYPES

Instance Method Summary collapse

Methods included from Formatters

#viperize, #viperize_hash

Methods included from ResponseProcessor

#codes, #codes_for, #error_codes, #has_error_codes?, #map_codes_for, #process

Constructor Details

#initializeClient

Returns a new instance of Client.



7
8
9
# File 'lib/melissa_data/web_smart/client.rb', line 7

def initialize
  @client = MelissaData::WebSmart::PropertyAPI.new
end

Instance Method Details

#add_coordinates(response) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
# File 'lib/melissa_data/web_smart/client.rb', line 45

def add_coordinates(response)
  addr  = response.dig(:property_address, :address)
  city  = response.dig(:property_address, :city)
  state = response.dig(:property_address, :state)
  zip   = response.dig(:property_address, :zip)

  if addr && city && state && zip
    full_address = "#{addr}, #{city}, #{state}, #{zip}"
    MelissaData::GeoLookup::Geocoder.address_to_coordinates(full_address)
  end
end

#address(address:, city:, state:, zip:, country: "USA") ⇒ Object



36
37
38
39
40
41
42
43
# File 'lib/melissa_data/web_smart/client.rb', line 36

def address(address:, city:, state:, zip:, country: "USA")
  resp = viperize_hash(@client.address(address: address,
                                       city: city,
                                       state: state,
                                       zip: zip,
                                       country: country))
  process(resp, 'address')
end

#property_by_address(address:) ⇒ Object



31
32
33
34
# File 'lib/melissa_data/web_smart/client.rb', line 31

def property_by_address(address:)
  @response = process(@client.property_by_address(address: address), 'property')
  resolve_response
end

#property_by_address_key(address_key:) ⇒ Object



16
17
18
19
# File 'lib/melissa_data/web_smart/client.rb', line 16

def property_by_address_key(address_key:)
  @response = process(@client.property_by_address_key(address_key: address_key), 'property')
  resolve_response
end

#property_by_apn(fips:, apn:) ⇒ Object



11
12
13
14
# File 'lib/melissa_data/web_smart/client.rb', line 11

def property_by_apn(fips:, apn:)
  @response = process(@client.property_by_apn(fips: fips, apn: apn), 'property')
  resolve_response
end

#resolve_responseObject



25
26
27
28
29
# File 'lib/melissa_data/web_smart/client.rb', line 25

def resolve_response
  return @response unless success?
  add_coordinates(@response[:records].first) unless MelissaData::GeoLookup::Geocoder.coordinates? @response[:records].first
  @response
end

#success?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/melissa_data/web_smart/client.rb', line 21

def success?
  !@response.key?(:errors)
end