class MelissaData::WebSmart::PropertyAPI

Constants

BASE_URL
USER_AGENT

Public Instance Methods

address(address:, city:, state:, zip:, country:) click to toggle source
# File lib/melissa_data/web_smart/property_api.rb, line 64
def address(address:, city:, state:, zip:, country:)
  raw = default_connection(BASE_URL, json_headers: true)
    .get '/v3/WEB/ContactVerify/doContactVerify', {
      id: MelissaData.web_smart_id,
      Actions: 'Check',
      a1: address,
      city: city,
      state: state,
      postal: zip,
      ctry: country,
      AdvancedAddressCorrection: 'on'
  }

  res = JSON.parse(raw.body).deep_transform_keys(&:underscore)
  res&.with_indifferent_access[:records]&.first
end
default_connection(url = BASE_URL, json_headers: false) click to toggle source
# File lib/melissa_data/web_smart/property_api.rb, line 11
def default_connection(url = BASE_URL, json_headers: false)
  Faraday.new(url: url) do |conn|
    conn.response :logger
    conn.headers[:user_agent] = USER_AGENT

    if json_headers
      conn.headers['Content-Type'] = 'application/json'
      conn.headers['Accept'] = 'application/json'
    end

    conn.adapter :typhoeus
  end
end
property_by_address(address:) click to toggle source
# File lib/melissa_data/web_smart/property_api.rb, line 51
def property_by_address(address:)
  raw = default_connection(BASE_URL).get '/v4/WEB/LookupProperty/', {
    id: MelissaData.web_smart_id,
    ff: address,
    cols: 'GrpAll',
    addressKey: nil,
    format: 'json'
  }

  res = JSON.parse(raw.body).deep_transform_keys(&:underscore)
  res&.with_indifferent_access
end
property_by_address_key(address_key:) click to toggle source
# File lib/melissa_data/web_smart/property_api.rb, line 39
def property_by_address_key(address_key:)
  raw = default_connection(BASE_URL).get '/v4/WEB/LookupProperty/', {
    id: MelissaData.web_smart_id,
    addressKey: address_key,
    cols: 'GrpAll',
    format: 'json'
  }

  res = JSON.parse(raw.body).deep_transform_keys(&:underscore)
  res&.with_indifferent_access
end
property_by_apn(fips:, apn:) click to toggle source
# File lib/melissa_data/web_smart/property_api.rb, line 25
def property_by_apn(fips:, apn:)
  raw = default_connection(BASE_URL).get '/v4/WEB/LookupProperty/', {
    id: MelissaData.web_smart_id,
    fips: fips,
    apn: apn,
    cols: 'GrpAll',
    addressKey: nil,
    format: 'json'
  }

  res = JSON.parse(raw.body).deep_transform_keys(&:underscore)
  res&.with_indifferent_access
end