smartystreets_ruby_sdk 6.4.1 → 10.0.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/.claude/settings.json +18 -0
- data/.github/workflows/ci.yml +10 -0
- data/.github/workflows/publish.yml +29 -0
- data/.github/workflows/test.yml +21 -0
- data/CLAUDE.md +73 -0
- data/Makefile +11 -5
- data/README.md +2 -0
- data/examples/international_autocomplete_example.rb +10 -7
- data/examples/international_example.rb +7 -6
- data/examples/international_postal_code_example.rb +5 -4
- data/examples/us_autocomplete_example.rb +69 -0
- data/examples/us_autocomplete_pro_example.rb +10 -12
- data/examples/us_enrichment_business_example.rb +72 -0
- data/examples/us_enrichment_business_name_search_example.rb +76 -0
- data/examples/us_enrichment_etag_example.rb +130 -0
- data/examples/us_enrichment_example.rb +130 -44
- data/examples/us_extract_example.rb +7 -6
- data/examples/us_reverse_geo_example.rb +10 -6
- data/examples/us_street_component_analysis_example.rb +2 -1
- data/examples/us_street_iana_timezone_example.rb +54 -0
- data/examples/us_street_match_strategy_example.rb +85 -0
- data/examples/us_street_multiple_address_example.rb +7 -6
- data/examples/us_street_single_address_example.rb +7 -6
- data/examples/us_zipcode_multiple_lookup_example.rb +7 -6
- data/examples/us_zipcode_single_lookup_example.rb +7 -6
- data/lib/smartystreets_ruby_sdk/basic_auth_credentials.rb +14 -0
- data/lib/smartystreets_ruby_sdk/client_builder.rb +36 -5
- data/lib/smartystreets_ruby_sdk/custom_header_sender.rb +16 -2
- data/lib/smartystreets_ruby_sdk/errors.rb +16 -11
- data/lib/smartystreets_ruby_sdk/exceptions.rb +12 -0
- data/lib/smartystreets_ruby_sdk/international_autocomplete/client.rb +2 -0
- data/lib/smartystreets_ruby_sdk/international_autocomplete/lookup.rb +4 -2
- data/lib/smartystreets_ruby_sdk/international_street/client.rb +10 -1
- data/lib/smartystreets_ruby_sdk/international_street/components.rb +8 -3
- data/lib/smartystreets_ruby_sdk/international_street/language_mode.rb +20 -3
- data/lib/smartystreets_ruby_sdk/international_street/lookup.rb +5 -12
- data/lib/smartystreets_ruby_sdk/international_street/rootlevel.rb +1 -5
- data/lib/smartystreets_ruby_sdk/native_sender.rb +3 -4
- data/lib/smartystreets_ruby_sdk/native_serializer.rb +1 -0
- data/lib/smartystreets_ruby_sdk/request.rb +2 -1
- data/lib/smartystreets_ruby_sdk/response.rb +13 -0
- data/lib/smartystreets_ruby_sdk/retry_sender.rb +32 -13
- data/lib/smartystreets_ruby_sdk/status_code_sender.rb +39 -22
- data/lib/smartystreets_ruby_sdk/us_autocomplete/client.rb +82 -0
- data/lib/smartystreets_ruby_sdk/us_autocomplete/geolocation_type.rb +8 -0
- data/lib/smartystreets_ruby_sdk/us_autocomplete/lookup.rb +73 -0
- data/lib/smartystreets_ruby_sdk/us_autocomplete/source_type.rb +8 -0
- data/lib/smartystreets_ruby_sdk/us_autocomplete/suggestion.rb +22 -0
- data/lib/smartystreets_ruby_sdk/us_autocomplete.rb +10 -0
- data/lib/smartystreets_ruby_sdk/us_autocomplete_pro/source_type.rb +8 -0
- data/lib/smartystreets_ruby_sdk/us_autocomplete_pro.rb +1 -0
- data/lib/smartystreets_ruby_sdk/us_enrichment/business/detail/attributes.rb +241 -0
- data/lib/smartystreets_ruby_sdk/us_enrichment/business/detail/response.rb +20 -0
- data/lib/smartystreets_ruby_sdk/us_enrichment/business/summary/business_entry.rb +16 -0
- data/lib/smartystreets_ruby_sdk/us_enrichment/business/summary/response.rb +24 -0
- data/lib/smartystreets_ruby_sdk/us_enrichment/client.rb +99 -30
- data/lib/smartystreets_ruby_sdk/us_enrichment/geo_reference/response.rb +2 -3
- data/lib/smartystreets_ruby_sdk/us_enrichment/lookup.rb +42 -9
- data/lib/smartystreets_ruby_sdk/us_enrichment/property/principal/response.rb +3 -4
- data/lib/smartystreets_ruby_sdk/us_enrichment/secondary/count/response.rb +2 -3
- data/lib/smartystreets_ruby_sdk/us_enrichment/secondary/response.rb +2 -3
- data/lib/smartystreets_ruby_sdk/us_enrichment.rb +6 -5
- data/lib/smartystreets_ruby_sdk/us_reverse_geo/source_type.rb +8 -0
- data/lib/smartystreets_ruby_sdk/us_reverse_geo/us_reverse_geo_response.rb +1 -1
- data/lib/smartystreets_ruby_sdk/us_reverse_geo.rb +1 -0
- data/lib/smartystreets_ruby_sdk/us_street/candidate.rb +2 -1
- data/lib/smartystreets_ruby_sdk/us_street/client.rb +10 -3
- data/lib/smartystreets_ruby_sdk/us_street/metadata.rb +5 -1
- data/lib/smartystreets_ruby_sdk/version.rb +1 -1
- data/lib/smartystreets_ruby_sdk.rb +2 -0
- metadata +27 -6
- data/.github/workflows/gem-publish.yml +0 -27
- data/lib/smartystreets_ruby_sdk/us_enrichment/risk/attributes.rb +0 -524
- data/lib/smartystreets_ruby_sdk/us_enrichment/risk/response.rb +0 -19
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
require_relative '../request'
|
|
2
|
+
require_relative '../exceptions'
|
|
3
|
+
require_relative 'geolocation_type'
|
|
4
|
+
require_relative 'suggestion'
|
|
5
|
+
|
|
6
|
+
module SmartyStreets
|
|
7
|
+
module USAutocomplete
|
|
8
|
+
# It is recommended to instantiate this class using ClientBuilder.build_us_autocomplete_api_client
|
|
9
|
+
class Client
|
|
10
|
+
def initialize(sender, serializer)
|
|
11
|
+
@sender = sender
|
|
12
|
+
@serializer = serializer
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Sends a Lookup object to the US Autocomplete API and stores the result in the Lookup's result field.
|
|
16
|
+
def send(lookup)
|
|
17
|
+
if not lookup or not lookup.search
|
|
18
|
+
raise SmartyStreets::SmartyError, 'Send() must be passed a Lookup with the search field set.'
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
request = build_request(lookup)
|
|
22
|
+
|
|
23
|
+
response = @sender.send(request)
|
|
24
|
+
|
|
25
|
+
raise response.error if response.error
|
|
26
|
+
|
|
27
|
+
result = @serializer.deserialize(response.payload)
|
|
28
|
+
suggestions = convert_suggestions(result.fetch('suggestions', []))
|
|
29
|
+
lookup.result = suggestions
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def build_request(lookup)
|
|
34
|
+
request = Request.new
|
|
35
|
+
|
|
36
|
+
add_parameter(request, 'search', lookup.search)
|
|
37
|
+
add_parameter(request, 'max_results', lookup.max_results.to_s)
|
|
38
|
+
add_parameter(request, 'include_only_cities', build_filter_string(lookup.city_filter))
|
|
39
|
+
add_parameter(request, 'include_only_states', build_filter_string(lookup.state_filter))
|
|
40
|
+
add_parameter(request, 'include_only_zip_codes', build_filter_string(lookup.zip_filter))
|
|
41
|
+
add_parameter(request, 'exclude_states', build_filter_string(lookup.exclude_states))
|
|
42
|
+
add_parameter(request, 'prefer_cities', build_filter_string(lookup.prefer_cities))
|
|
43
|
+
add_parameter(request, 'prefer_states', build_filter_string(lookup.prefer_states))
|
|
44
|
+
add_parameter(request, 'prefer_zip_codes', build_filter_string(lookup.prefer_zip_codes))
|
|
45
|
+
add_parameter(request, 'prefer_ratio', lookup.prefer_ratio.to_s)
|
|
46
|
+
add_parameter(request, 'source', lookup.source)
|
|
47
|
+
if lookup.prefer_zip_codes.any? || lookup.zip_filter.any?
|
|
48
|
+
request.parameters['prefer_geolocation'] = GeolocationType::NONE
|
|
49
|
+
else
|
|
50
|
+
add_parameter(request, 'prefer_geolocation', lookup.prefer_geolocation)
|
|
51
|
+
end
|
|
52
|
+
add_parameter(request, 'selected', lookup.selected)
|
|
53
|
+
add_parameter(request, 'exclude', build_filter_string(lookup.exclude, ','))
|
|
54
|
+
|
|
55
|
+
for key in lookup.custom_param_hash.keys do
|
|
56
|
+
add_parameter(request, key, lookup.custom_param_hash[key])
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
request
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def build_filter_string(filter_list, separator=';')
|
|
63
|
+
filter_list ? filter_list.join(separator) : nil
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def convert_suggestions(suggestion_hashes)
|
|
67
|
+
converted_suggestions = []
|
|
68
|
+
return converted_suggestions if suggestion_hashes.nil?
|
|
69
|
+
|
|
70
|
+
suggestion_hashes.each do |suggestion|
|
|
71
|
+
converted_suggestions.push(USAutocomplete::Suggestion.new(suggestion))
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
converted_suggestions
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def add_parameter(request, key, value)
|
|
78
|
+
request.parameters[key] = value unless value.nil? or value.empty?
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
require_relative '../json_able'
|
|
2
|
+
|
|
3
|
+
module SmartyStreets
|
|
4
|
+
module USAutocomplete
|
|
5
|
+
# In addition to holding all of the input data for this lookup, this class also will contain the result
|
|
6
|
+
# of the lookup after it comes back from the API.
|
|
7
|
+
#
|
|
8
|
+
# See "https://www.smarty.com/docs/apis/us-autocomplete-v2/reference#http-request-input-fields"
|
|
9
|
+
class Lookup < JSONAble
|
|
10
|
+
|
|
11
|
+
attr_accessor :result, :search, :max_results, :city_filter, :state_filter, :zip_filter,
|
|
12
|
+
:exclude_states, :prefer_cities, :prefer_states, :prefer_zip_codes, :prefer_ratio,
|
|
13
|
+
:prefer_geolocation, :selected, :exclude, :source, :custom_param_hash
|
|
14
|
+
|
|
15
|
+
def initialize(search=nil, max_results=nil, city_filter=nil, state_filter=nil, zip_filter=nil,
|
|
16
|
+
exclude_states=nil, prefer_cities=nil, prefer_states=nil, prefer_zips=nil, prefer_ratio=nil,
|
|
17
|
+
prefer_geolocation=nil, selected=nil, exclude=nil, source=nil, custom_param_hash=nil)
|
|
18
|
+
@result = []
|
|
19
|
+
@search = search
|
|
20
|
+
@max_results = max_results
|
|
21
|
+
@city_filter = city_filter ? city_filter : []
|
|
22
|
+
@state_filter = state_filter ? state_filter : []
|
|
23
|
+
@zip_filter = zip_filter ? zip_filter : []
|
|
24
|
+
@exclude_states = exclude_states ? exclude_states : []
|
|
25
|
+
@prefer_cities = prefer_cities ? prefer_cities : []
|
|
26
|
+
@prefer_states = prefer_states ? prefer_states : []
|
|
27
|
+
@prefer_zip_codes = prefer_zips ? prefer_zips : []
|
|
28
|
+
@prefer_ratio = prefer_ratio
|
|
29
|
+
@prefer_geolocation = prefer_geolocation
|
|
30
|
+
@selected = selected
|
|
31
|
+
@exclude = exclude ? exclude : []
|
|
32
|
+
@source = source
|
|
33
|
+
@custom_param_hash = {}
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def add_custom_parameter(parameter, value)
|
|
37
|
+
@custom_param_hash[parameter] = value
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def add_city_filter(city)
|
|
41
|
+
@city_filter.push(city)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def add_state_filter(state)
|
|
45
|
+
@state_filter.push(state)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def add_zip_filter(zip)
|
|
49
|
+
@zip_filter.push(zip)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def add_state_exclusion(state)
|
|
53
|
+
@exclude_states.push(state)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def add_preferred_city(city)
|
|
57
|
+
@prefer_cities.push(city)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def add_preferred_state(state)
|
|
61
|
+
@prefer_states.push(state)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def add_preferred_zip(zip)
|
|
65
|
+
@prefer_zip_codes.push(zip)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def add_exclude(exclude_type)
|
|
69
|
+
@exclude.push(exclude_type)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module SmartyStreets
|
|
2
|
+
module USAutocomplete
|
|
3
|
+
# See "https://www.smarty.com/docs/apis/us-autocomplete-v2/reference#http-response-status"
|
|
4
|
+
class Suggestion
|
|
5
|
+
|
|
6
|
+
attr_reader :smarty_key, :entry_id, :urbanization, :street_line, :secondary, :city, :state, :zipcode, :entries, :source
|
|
7
|
+
|
|
8
|
+
def initialize(obj)
|
|
9
|
+
@smarty_key = obj.fetch('smarty_key', nil)
|
|
10
|
+
@entry_id = obj.fetch('entry_id', nil)
|
|
11
|
+
@urbanization = obj.fetch('urbanization', nil)
|
|
12
|
+
@street_line = obj.fetch('street_line', nil)
|
|
13
|
+
@secondary = obj.fetch('secondary', nil)
|
|
14
|
+
@city = obj.fetch('city', nil)
|
|
15
|
+
@state = obj.fetch('state', nil)
|
|
16
|
+
@zipcode = obj.fetch('zipcode', nil)
|
|
17
|
+
@entries = obj.fetch('entries', 0)
|
|
18
|
+
@source = obj.fetch('source', nil)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
require_relative './us_autocomplete/lookup'
|
|
2
|
+
require_relative './us_autocomplete/geolocation_type'
|
|
3
|
+
require_relative './us_autocomplete/source_type'
|
|
4
|
+
require_relative './us_autocomplete/suggestion'
|
|
5
|
+
require_relative './us_autocomplete/client'
|
|
6
|
+
|
|
7
|
+
module SmartyStreets
|
|
8
|
+
module USAutocomplete
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
module SmartyStreets
|
|
2
|
+
module USEnrichment
|
|
3
|
+
module Business
|
|
4
|
+
module Detail
|
|
5
|
+
class Attributes
|
|
6
|
+
attr_reader :accounting_expense_range, :accounting_expense_total, :advertising_expense_range, :advertising_expense_total, :business_insurance_expense_range, :business_insurance_expense_total
|
|
7
|
+
attr_reader :business_status, :business_type, :carrier_route, :census_block, :census_tract, :city_name
|
|
8
|
+
attr_reader :company_name, :company_name_secondary, :contact_first_name, :contact_full_name, :contact_gender, :contact_last_name
|
|
9
|
+
attr_reader :contact_middle_name, :contact_prefix, :contact_professional_title, :contact_suffix, :core_based_stat_area_code, :core_based_stat_area_name
|
|
10
|
+
attr_reader :corporate_employee_count_range, :corporate_employee_count_total, :county_fips, :county_name, :credit_capacity, :credit_capacity_range
|
|
11
|
+
attr_reader :credit_score, :credit_score_description, :date_of_last_update, :delivery_line_1, :delivery_point, :delivery_point_check_digit
|
|
12
|
+
attr_reader :domestic_foreign_owner_indicator, :ein, :email, :email_available_indicator, :executive_department, :executive_level
|
|
13
|
+
attr_reader :executive_verification_type, :fax, :female_owned_indicator, :foreign_parent_city_name, :foreign_parent_company_name, :foreign_parent_country
|
|
14
|
+
attr_reader :fortune_1000_branches, :fortune_1000_indicator, :fortune_1000_rank, :holding_city_name, :holding_company_name, :holding_id
|
|
15
|
+
attr_reader :holding_state_abbreviation, :home_based_business_indicator, :hq_city_name, :hq_company_name, :hq_id, :hq_number_of_companies
|
|
16
|
+
attr_reader :hq_state_abbreviation, :latitude, :legal_expense_range, :legal_expense_total, :linkage_company_name, :linkage_indicator
|
|
17
|
+
attr_reader :linkage_level, :linkage_type, :location_employee_count, :location_employee_count_range, :location_sales_range, :location_sales_total
|
|
18
|
+
attr_reader :longitude, :mail_score_code, :mail_score_description, :mailing_carrier_route, :mailing_city_name, :mailing_delivery_line_1
|
|
19
|
+
attr_reader :mailing_delivery_point, :mailing_delivery_point_check_digit, :mailing_plus4_code, :mailing_state_abbreviation, :mailing_zipcode, :manufacturing_indicator
|
|
20
|
+
attr_reader :minority_owned_indicator, :minority_type, :naics_01_code, :naics_01_description, :naics_02_code, :naics_02_description
|
|
21
|
+
attr_reader :naics_03_code, :naics_03_description, :naics_04_code, :naics_04_description, :naics_05_code, :naics_05_description
|
|
22
|
+
attr_reader :naics_06_code, :naics_06_description, :new_business_indicator, :non_profit_indicator, :num_of_pcs_range, :num_of_pcs_total
|
|
23
|
+
attr_reader :number_of_years_in_business, :number_of_years_in_business_range, :office_equipment_expense_range, :office_equipment_expense_total, :operating_hours_friday, :operating_hours_monday
|
|
24
|
+
attr_reader :operating_hours_saturday, :operating_hours_sunday, :operating_hours_thursday, :operating_hours_tuesday, :operating_hours_wednesday, :phone
|
|
25
|
+
attr_reader :phone_area_code, :phone_secondary, :phone_toll_free, :plus4_code, :population_range, :precision
|
|
26
|
+
attr_reader :primary_executive_indicator, :primary_number, :primary_sic_2digit_code, :primary_sic_2digit_description, :primary_sic_4digit_code, :primary_sic_4digit_description
|
|
27
|
+
attr_reader :primary_sic_code, :primary_sic_description, :public_indicator, :rdi, :rent_expense_range, :rent_expense_total
|
|
28
|
+
attr_reader :secondary_01_sic_7digit_code, :secondary_01_sic_7digit_description, :secondary_02_sic_7digit_code, :secondary_02_sic_7digit_description, :secondary_03_sic_7digit_code, :secondary_03_sic_7digit_description
|
|
29
|
+
attr_reader :secondary_04_sic_7digit_code, :secondary_04_sic_7digit_description, :secondary_05_sic_7digit_code, :secondary_05_sic_7digit_description, :secondary_designator, :secondary_number
|
|
30
|
+
attr_reader :sectional_center_facility, :small_business_indicator, :source_title, :square_footage, :square_footage_range, :standardized_title
|
|
31
|
+
attr_reader :standardized_title_rank, :state_abbreviation, :stock_exchange, :street_name, :street_postdirection, :street_predirection
|
|
32
|
+
attr_reader :street_suffix, :sub_hq_city_name, :sub_hq_company_name, :sub_hq_id, :sub_hq_number_of_companies, :sub_hq_state_abbreviation
|
|
33
|
+
attr_reader :technology_expense_range, :technology_expense_total, :telecom_expense_range, :telecom_expense_total, :ticker_symbol, :time_zone
|
|
34
|
+
attr_reader :url, :url_facebook, :url_instagram, :url_linkedin, :url_twitter, :url_yelp
|
|
35
|
+
attr_reader :url_youtube, :utilities_expense_range, :utilities_expense_total, :webmail_indicator, :year_current, :year_current_employee_count
|
|
36
|
+
attr_reader :year_established, :year_four_prior, :year_four_prior_employee_count, :year_four_prior_employee_growth, :year_one_prior, :year_one_prior_employee_count
|
|
37
|
+
attr_reader :year_one_prior_employee_growth, :year_three_prior, :year_three_prior_employee_count, :year_three_prior_employee_growth, :year_two_prior, :year_two_prior_employee_count
|
|
38
|
+
attr_reader :year_two_prior_employee_growth, :zipcode
|
|
39
|
+
|
|
40
|
+
def initialize(obj)
|
|
41
|
+
return if obj.nil?
|
|
42
|
+
@accounting_expense_range = obj['accounting_expense_range']
|
|
43
|
+
@accounting_expense_total = obj['accounting_expense_total']
|
|
44
|
+
@advertising_expense_range = obj['advertising_expense_range']
|
|
45
|
+
@advertising_expense_total = obj['advertising_expense_total']
|
|
46
|
+
@business_insurance_expense_range = obj['business_insurance_expense_range']
|
|
47
|
+
@business_insurance_expense_total = obj['business_insurance_expense_total']
|
|
48
|
+
@business_status = obj['business_status']
|
|
49
|
+
@business_type = obj['business_type']
|
|
50
|
+
@carrier_route = obj['carrier_route']
|
|
51
|
+
@census_block = obj['census_block']
|
|
52
|
+
@census_tract = obj['census_tract']
|
|
53
|
+
@city_name = obj['city_name']
|
|
54
|
+
@company_name = obj['company_name']
|
|
55
|
+
@company_name_secondary = obj['company_name_secondary']
|
|
56
|
+
@contact_first_name = obj['contact_first_name']
|
|
57
|
+
@contact_full_name = obj['contact_full_name']
|
|
58
|
+
@contact_gender = obj['contact_gender']
|
|
59
|
+
@contact_last_name = obj['contact_last_name']
|
|
60
|
+
@contact_middle_name = obj['contact_middle_name']
|
|
61
|
+
@contact_prefix = obj['contact_prefix']
|
|
62
|
+
@contact_professional_title = obj['contact_professional_title']
|
|
63
|
+
@contact_suffix = obj['contact_suffix']
|
|
64
|
+
@core_based_stat_area_code = obj['core_based_stat_area_code']
|
|
65
|
+
@core_based_stat_area_name = obj['core_based_stat_area_name']
|
|
66
|
+
@corporate_employee_count_range = obj['corporate_employee_count_range']
|
|
67
|
+
@corporate_employee_count_total = obj['corporate_employee_count_total']
|
|
68
|
+
@county_fips = obj['county_fips']
|
|
69
|
+
@county_name = obj['county_name']
|
|
70
|
+
@credit_capacity = obj['credit_capacity']
|
|
71
|
+
@credit_capacity_range = obj['credit_capacity_range']
|
|
72
|
+
@credit_score = obj['credit_score']
|
|
73
|
+
@credit_score_description = obj['credit_score_description']
|
|
74
|
+
@date_of_last_update = obj['date_of_last_update']
|
|
75
|
+
@delivery_line_1 = obj['delivery_line_1']
|
|
76
|
+
@delivery_point = obj['delivery_point']
|
|
77
|
+
@delivery_point_check_digit = obj['delivery_point_check_digit']
|
|
78
|
+
@domestic_foreign_owner_indicator = obj['domestic_foreign_owner_indicator']
|
|
79
|
+
@ein = obj['ein']
|
|
80
|
+
@email = obj['email']
|
|
81
|
+
@email_available_indicator = obj['email_available_indicator']
|
|
82
|
+
@executive_department = obj['executive_department']
|
|
83
|
+
@executive_level = obj['executive_level']
|
|
84
|
+
@executive_verification_type = obj['executive_verification_type']
|
|
85
|
+
@fax = obj['fax']
|
|
86
|
+
@female_owned_indicator = obj['female_owned_indicator']
|
|
87
|
+
@foreign_parent_city_name = obj['foreign_parent_city_name']
|
|
88
|
+
@foreign_parent_company_name = obj['foreign_parent_company_name']
|
|
89
|
+
@foreign_parent_country = obj['foreign_parent_country']
|
|
90
|
+
@fortune_1000_branches = obj['fortune_1000_branches']
|
|
91
|
+
@fortune_1000_indicator = obj['fortune_1000_indicator']
|
|
92
|
+
@fortune_1000_rank = obj['fortune_1000_rank']
|
|
93
|
+
@holding_city_name = obj['holding_city_name']
|
|
94
|
+
@holding_company_name = obj['holding_company_name']
|
|
95
|
+
@holding_id = obj['holding_id']
|
|
96
|
+
@holding_state_abbreviation = obj['holding_state_abbreviation']
|
|
97
|
+
@home_based_business_indicator = obj['home_based_business_indicator']
|
|
98
|
+
@hq_city_name = obj['hq_city_name']
|
|
99
|
+
@hq_company_name = obj['hq_company_name']
|
|
100
|
+
@hq_id = obj['hq_id']
|
|
101
|
+
@hq_number_of_companies = obj['hq_number_of_companies']
|
|
102
|
+
@hq_state_abbreviation = obj['hq_state_abbreviation']
|
|
103
|
+
@latitude = obj['latitude']
|
|
104
|
+
@legal_expense_range = obj['legal_expense_range']
|
|
105
|
+
@legal_expense_total = obj['legal_expense_total']
|
|
106
|
+
@linkage_company_name = obj['linkage_company_name']
|
|
107
|
+
@linkage_indicator = obj['linkage_indicator']
|
|
108
|
+
@linkage_level = obj['linkage_level']
|
|
109
|
+
@linkage_type = obj['linkage_type']
|
|
110
|
+
@location_employee_count = obj['location_employee_count']
|
|
111
|
+
@location_employee_count_range = obj['location_employee_count_range']
|
|
112
|
+
@location_sales_range = obj['location_sales_range']
|
|
113
|
+
@location_sales_total = obj['location_sales_total']
|
|
114
|
+
@longitude = obj['longitude']
|
|
115
|
+
@mail_score_code = obj['mail_score_code']
|
|
116
|
+
@mail_score_description = obj['mail_score_description']
|
|
117
|
+
@mailing_carrier_route = obj['mailing_carrier_route']
|
|
118
|
+
@mailing_city_name = obj['mailing_city_name']
|
|
119
|
+
@mailing_delivery_line_1 = obj['mailing_delivery_line_1']
|
|
120
|
+
@mailing_delivery_point = obj['mailing_delivery_point']
|
|
121
|
+
@mailing_delivery_point_check_digit = obj['mailing_delivery_point_check_digit']
|
|
122
|
+
@mailing_plus4_code = obj['mailing_plus4_code']
|
|
123
|
+
@mailing_state_abbreviation = obj['mailing_state_abbreviation']
|
|
124
|
+
@mailing_zipcode = obj['mailing_zipcode']
|
|
125
|
+
@manufacturing_indicator = obj['manufacturing_indicator']
|
|
126
|
+
@minority_owned_indicator = obj['minority_owned_indicator']
|
|
127
|
+
@minority_type = obj['minority_type']
|
|
128
|
+
@naics_01_code = obj['naics_01_code']
|
|
129
|
+
@naics_01_description = obj['naics_01_description']
|
|
130
|
+
@naics_02_code = obj['naics_02_code']
|
|
131
|
+
@naics_02_description = obj['naics_02_description']
|
|
132
|
+
@naics_03_code = obj['naics_03_code']
|
|
133
|
+
@naics_03_description = obj['naics_03_description']
|
|
134
|
+
@naics_04_code = obj['naics_04_code']
|
|
135
|
+
@naics_04_description = obj['naics_04_description']
|
|
136
|
+
@naics_05_code = obj['naics_05_code']
|
|
137
|
+
@naics_05_description = obj['naics_05_description']
|
|
138
|
+
@naics_06_code = obj['naics_06_code']
|
|
139
|
+
@naics_06_description = obj['naics_06_description']
|
|
140
|
+
@new_business_indicator = obj['new_business_indicator']
|
|
141
|
+
@non_profit_indicator = obj['non_profit_indicator']
|
|
142
|
+
@num_of_pcs_range = obj['num_of_pcs_range']
|
|
143
|
+
@num_of_pcs_total = obj['num_of_pcs_total']
|
|
144
|
+
@number_of_years_in_business = obj['number_of_years_in_business']
|
|
145
|
+
@number_of_years_in_business_range = obj['number_of_years_in_business_range']
|
|
146
|
+
@office_equipment_expense_range = obj['office_equipment_expense_range']
|
|
147
|
+
@office_equipment_expense_total = obj['office_equipment_expense_total']
|
|
148
|
+
@operating_hours_friday = obj['operating_hours_friday']
|
|
149
|
+
@operating_hours_monday = obj['operating_hours_monday']
|
|
150
|
+
@operating_hours_saturday = obj['operating_hours_saturday']
|
|
151
|
+
@operating_hours_sunday = obj['operating_hours_sunday']
|
|
152
|
+
@operating_hours_thursday = obj['operating_hours_thursday']
|
|
153
|
+
@operating_hours_tuesday = obj['operating_hours_tuesday']
|
|
154
|
+
@operating_hours_wednesday = obj['operating_hours_wednesday']
|
|
155
|
+
@phone = obj['phone']
|
|
156
|
+
@phone_area_code = obj['phone_area_code']
|
|
157
|
+
@phone_secondary = obj['phone_secondary']
|
|
158
|
+
@phone_toll_free = obj['phone_toll_free']
|
|
159
|
+
@plus4_code = obj['plus4_code']
|
|
160
|
+
@population_range = obj['population_range']
|
|
161
|
+
@precision = obj['precision']
|
|
162
|
+
@primary_executive_indicator = obj['primary_executive_indicator']
|
|
163
|
+
@primary_number = obj['primary_number']
|
|
164
|
+
@primary_sic_2digit_code = obj['primary_sic_2digit_code']
|
|
165
|
+
@primary_sic_2digit_description = obj['primary_sic_2digit_description']
|
|
166
|
+
@primary_sic_4digit_code = obj['primary_sic_4digit_code']
|
|
167
|
+
@primary_sic_4digit_description = obj['primary_sic_4digit_description']
|
|
168
|
+
@primary_sic_code = obj['primary_sic_code']
|
|
169
|
+
@primary_sic_description = obj['primary_sic_description']
|
|
170
|
+
@public_indicator = obj['public_indicator']
|
|
171
|
+
@rdi = obj['rdi']
|
|
172
|
+
@rent_expense_range = obj['rent_expense_range']
|
|
173
|
+
@rent_expense_total = obj['rent_expense_total']
|
|
174
|
+
@secondary_01_sic_7digit_code = obj['secondary_01_sic_7digit_code']
|
|
175
|
+
@secondary_01_sic_7digit_description = obj['secondary_01_sic_7digit_description']
|
|
176
|
+
@secondary_02_sic_7digit_code = obj['secondary_02_sic_7digit_code']
|
|
177
|
+
@secondary_02_sic_7digit_description = obj['secondary_02_sic_7digit_description']
|
|
178
|
+
@secondary_03_sic_7digit_code = obj['secondary_03_sic_7digit_code']
|
|
179
|
+
@secondary_03_sic_7digit_description = obj['secondary_03_sic_7digit_description']
|
|
180
|
+
@secondary_04_sic_7digit_code = obj['secondary_04_sic_7digit_code']
|
|
181
|
+
@secondary_04_sic_7digit_description = obj['secondary_04_sic_7digit_description']
|
|
182
|
+
@secondary_05_sic_7digit_code = obj['secondary_05_sic_7digit_code']
|
|
183
|
+
@secondary_05_sic_7digit_description = obj['secondary_05_sic_7digit_description']
|
|
184
|
+
@secondary_designator = obj['secondary_designator']
|
|
185
|
+
@secondary_number = obj['secondary_number']
|
|
186
|
+
@sectional_center_facility = obj['sectional_center_facility']
|
|
187
|
+
@small_business_indicator = obj['small_business_indicator']
|
|
188
|
+
@source_title = obj['source_title']
|
|
189
|
+
@square_footage = obj['square_footage']
|
|
190
|
+
@square_footage_range = obj['square_footage_range']
|
|
191
|
+
@standardized_title = obj['standardized_title']
|
|
192
|
+
@standardized_title_rank = obj['standardized_title_rank']
|
|
193
|
+
@state_abbreviation = obj['state_abbreviation']
|
|
194
|
+
@stock_exchange = obj['stock_exchange']
|
|
195
|
+
@street_name = obj['street_name']
|
|
196
|
+
@street_postdirection = obj['street_postdirection']
|
|
197
|
+
@street_predirection = obj['street_predirection']
|
|
198
|
+
@street_suffix = obj['street_suffix']
|
|
199
|
+
@sub_hq_city_name = obj['sub_hq_city_name']
|
|
200
|
+
@sub_hq_company_name = obj['sub_hq_company_name']
|
|
201
|
+
@sub_hq_id = obj['sub_hq_id']
|
|
202
|
+
@sub_hq_number_of_companies = obj['sub_hq_number_of_companies']
|
|
203
|
+
@sub_hq_state_abbreviation = obj['sub_hq_state_abbreviation']
|
|
204
|
+
@technology_expense_range = obj['technology_expense_range']
|
|
205
|
+
@technology_expense_total = obj['technology_expense_total']
|
|
206
|
+
@telecom_expense_range = obj['telecom_expense_range']
|
|
207
|
+
@telecom_expense_total = obj['telecom_expense_total']
|
|
208
|
+
@ticker_symbol = obj['ticker_symbol']
|
|
209
|
+
@time_zone = obj['time_zone']
|
|
210
|
+
@url = obj['url']
|
|
211
|
+
@url_facebook = obj['url_facebook']
|
|
212
|
+
@url_instagram = obj['url_instagram']
|
|
213
|
+
@url_linkedin = obj['url_linkedin']
|
|
214
|
+
@url_twitter = obj['url_twitter']
|
|
215
|
+
@url_yelp = obj['url_yelp']
|
|
216
|
+
@url_youtube = obj['url_youtube']
|
|
217
|
+
@utilities_expense_range = obj['utilities_expense_range']
|
|
218
|
+
@utilities_expense_total = obj['utilities_expense_total']
|
|
219
|
+
@webmail_indicator = obj['webmail_indicator']
|
|
220
|
+
@year_current = obj['year_current']
|
|
221
|
+
@year_current_employee_count = obj['year_current_employee_count']
|
|
222
|
+
@year_established = obj['year_established']
|
|
223
|
+
@year_four_prior = obj['year_four_prior']
|
|
224
|
+
@year_four_prior_employee_count = obj['year_four_prior_employee_count']
|
|
225
|
+
@year_four_prior_employee_growth = obj['year_four_prior_employee_growth']
|
|
226
|
+
@year_one_prior = obj['year_one_prior']
|
|
227
|
+
@year_one_prior_employee_count = obj['year_one_prior_employee_count']
|
|
228
|
+
@year_one_prior_employee_growth = obj['year_one_prior_employee_growth']
|
|
229
|
+
@year_three_prior = obj['year_three_prior']
|
|
230
|
+
@year_three_prior_employee_count = obj['year_three_prior_employee_count']
|
|
231
|
+
@year_three_prior_employee_growth = obj['year_three_prior_employee_growth']
|
|
232
|
+
@year_two_prior = obj['year_two_prior']
|
|
233
|
+
@year_two_prior_employee_count = obj['year_two_prior_employee_count']
|
|
234
|
+
@year_two_prior_employee_growth = obj['year_two_prior_employee_growth']
|
|
235
|
+
@zipcode = obj['zipcode']
|
|
236
|
+
end
|
|
237
|
+
end
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require_relative 'attributes'
|
|
2
|
+
|
|
3
|
+
module SmartyStreets
|
|
4
|
+
module USEnrichment
|
|
5
|
+
module Business
|
|
6
|
+
module Detail
|
|
7
|
+
class Response
|
|
8
|
+
attr_reader :smarty_key, :data_set_name, :business_id, :attributes
|
|
9
|
+
|
|
10
|
+
def initialize(obj)
|
|
11
|
+
@smarty_key = obj['smarty_key']
|
|
12
|
+
@data_set_name = obj['data_set_name']
|
|
13
|
+
@business_id = obj['business_id']
|
|
14
|
+
@attributes = Attributes.new(obj['attributes'])
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module SmartyStreets
|
|
2
|
+
module USEnrichment
|
|
3
|
+
module Business
|
|
4
|
+
module Summary
|
|
5
|
+
class BusinessEntry
|
|
6
|
+
attr_reader :company_name, :business_id
|
|
7
|
+
|
|
8
|
+
def initialize(obj)
|
|
9
|
+
@company_name = obj['company_name']
|
|
10
|
+
@business_id = obj['business_id']
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require_relative 'business_entry'
|
|
2
|
+
|
|
3
|
+
module SmartyStreets
|
|
4
|
+
module USEnrichment
|
|
5
|
+
module Business
|
|
6
|
+
module Summary
|
|
7
|
+
class Response
|
|
8
|
+
attr_reader :smarty_key, :data_set_name, :businesses
|
|
9
|
+
|
|
10
|
+
def initialize(obj)
|
|
11
|
+
@smarty_key = obj['smarty_key']
|
|
12
|
+
@data_set_name = obj['data_set_name']
|
|
13
|
+
@businesses = build_businesses(obj['businesses'])
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def build_businesses(entries)
|
|
17
|
+
return [] if entries.nil?
|
|
18
|
+
entries.map { |entry| Business::Summary::BusinessEntry.new(entry) }
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|