smarty_streets 0.0.2 → 0.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ec8c43504668fd90dff720a7fee5f3f798d02ad6
4
- data.tar.gz: 017240974ec6aa6dda3c5398e14e1169c0a32a6e
3
+ metadata.gz: bed58a4493bc3453d5068e5d6583b7bb62fe5c56
4
+ data.tar.gz: ef2a974bd5cf84dbb63cdf7fa6f126d4d97d2a9a
5
5
  SHA512:
6
- metadata.gz: 589dba931bfaeb21335064f071d62d29b1615ae12f359a06bb9eacd00fbde89c398c616cf81994165da1a0bc8f196ec0b9b2e4c0d7c92cfaaca92a910d0504c5
7
- data.tar.gz: cea6b100483a9335fe7c5412701f340059b3a6ba0d70b3661184e34dac268957cce9c5656e412d93b60cdfd7d48a3f90daf962665e7f0c3bc18c44766a9ec82c
6
+ metadata.gz: 8af3ba8d72a9b5ef60ec6b591d45eab28b79e53fc1f01044a9d47b4af2691d1ca79d8e1ce67c72cb8125f229025aff87a09bf0fe27833504c616365e6e8ca2c2
7
+ data.tar.gz: 1bd2ea27c0a246d3c322ee53ecdbb0d9b7986c502c849476ee59c8de3357c6a322ba11d5c26f7915631dc741403e4eb707f827f16a1075b22c20c19e93d052c2
data/README.md CHANGED
@@ -24,17 +24,17 @@ You must have valid tokens from http://www.smartystreets.com
24
24
  SmartyStreets.configure do |c|
25
25
  c.auth_id = 'MY-AUTH-ID'
26
26
  c.auth_token = 'MY-AUTH-TOKEN'
27
- c.number_of_candidates = 5
27
+ c.candidates = 5
28
28
  end
29
29
 
30
30
  locations = SmartyStreets.standardize do |location|
31
31
  location.street = '1 infinite loop'
32
32
  location.city = 'cupertino'
33
33
  location.state = 'california'
34
- location.zip_code = '95014'
34
+ location.zipcode = '95014'
35
35
  end
36
36
 
37
- # #<SmartyStreets::Location:0x007fb4bbb507d0 @street="1 Infinite Loop", @city="Cupertino", @state="CA", @zip_code="95014-2083", @delivery_point_barcode="950142083017", @components={"primary_number"=>"1", "street_name"=>"Infinite", "street_suffix"=>"Loop", "city_name"=>"Cupertino", "state_abbreviation"=>"CA", "zipcode"=>"95014", "plus4_code"=>"2083", "delivery_point"=>"01", "delivery_point_check_digit"=>"7"}, @meta_data={"record_type"=>"S", "county_fips"=>"06085", "county_name"=>"Santa Clara", "carrier_route"=>"C067", "congressional_district"=>"18", "rdi"=>"Commercial", "elot_sequence"=>"0031", "elot_sort"=>"A", "latitude"=>37.33118, "longitude"=>-122.03062, "precision"=>"Zip9"}>
37
+ # #<SmartyStreets::Location:0x007fb4bbb507d0 @street="1 Infinite Loop", @city="Cupertino", @state="CA", @zipcode="95014-2083", @delivery_point_barcode="950142083017", @components={"primary_number"=>"1", "street_name"=>"Infinite", "street_suffix"=>"Loop", "city_name"=>"Cupertino", "state_abbreviation"=>"CA", "zipcode"=>"95014", "plus4_code"=>"2083", "delivery_point"=>"01", "delivery_point_check_digit"=>"7"}, @metadata={"record_type"=>"S", "county_fips"=>"06085", "county_name"=>"Santa Clara", "carrier_route"=>"C067", "congressional_district"=>"18", "rdi"=>"Commercial", "elot_sequence"=>"0031", "elot_sort"=>"A", "latitude"=>37.33118, "longitude"=>-122.03062, "precision"=>"Zip9"}>
38
38
  ```
39
39
 
40
40
  ## Contributing
@@ -15,7 +15,7 @@ module SmartyStreets
15
15
  # SmartyStreets.configure do |config|
16
16
  # config.auth_id = 'AUTHID'
17
17
  # config.auth_token = 'AUTHTOKEN'
18
- # config.number_of_candidates = 1
18
+ # config.candidates = 1
19
19
  # end
20
20
  def configure
21
21
  self.configuration = Configuration.new
@@ -10,11 +10,11 @@ module SmartyStreets
10
10
  attr_accessor :auth_token
11
11
 
12
12
  # Number of candidates to provide when making a request.
13
- attr_accessor :number_of_candidates
13
+ attr_accessor :candidates
14
14
 
15
15
  def initialize
16
16
  @api_url = 'api.smartystreets.com'
17
- @number_of_candidates = 1
17
+ @candidates = 1
18
18
  end
19
19
 
20
20
  # Returns a hash of all configurable options
@@ -1,8 +1,15 @@
1
1
  module SmartyStreets
2
2
  class Location
3
+ # Request & Response fields
4
+ attr_accessor :input_id
3
5
  attr_accessor :street, :street2, :secondary
4
- attr_accessor :city, :state, :zip_code
5
- attr_accessor :last_line, :addressee, :urbanization
6
- attr_accessor :delivery_point_barcode, :components, :meta_data, :analysis
6
+ attr_accessor :city, :state, :zipcode
7
+ attr_accessor :lastline, :addressee, :urbanization
8
+ attr_accessor :candidates
9
+
10
+ # Response only fields
11
+ attr_accessor :input_index, :candidate_index
12
+ attr_accessor :delivery_line_1, :delivery_line_2, :delivery_point_barcode
13
+ attr_accessor :components, :metadata, :analysis
7
14
  end
8
15
  end
@@ -21,21 +21,21 @@ module SmartyStreets
21
21
 
22
22
  def handle_response(response)
23
23
  raise InvalidCredentials if response.code == 401
24
- raise MalformedData if response.code == 400
25
- raise PaymentRequired if response.code == 402
26
- raise RemoteServerError if response.code == 500
27
- raise NoValidCandidates if response.body.nil?
24
+ raise MalformedData if response.code == 400
25
+ raise PaymentRequired if response.code == 402
26
+ raise RemoteServerError if response.code == 500
27
+ raise NoValidCandidates if response.body.nil?
28
28
 
29
29
  JSON.parse(response.body).collect do |l|
30
30
  location = Location.new
31
- location.street = l['delivery_line_1']
32
- location.city = l['components']['city_name']
33
- location.state = l['components']['state_abbreviation']
34
- location.zip_code = l['components']['zipcode'] + '-' + l['components']['plus4_code']
31
+ location.street = l['delivery_line_1']
32
+ location.city = l['components']['city_name']
33
+ location.state = l['components']['state_abbreviation']
34
+ location.zipcode = l['components']['zipcode'] + '-' + l['components']['plus4_code']
35
35
  location.delivery_point_barcode = l['delivery_point_barcode']
36
- location.components = l['components']
37
- location.meta_data = l['metadata']
38
- location.analysis = l['analysis']
36
+ location.components = l['components']
37
+ location.metadata = l['metadata']
38
+ location.analysis = l['analysis']
39
39
  location
40
40
  end
41
41
  end
@@ -46,26 +46,26 @@ module SmartyStreets
46
46
 
47
47
  def build_request_url(location)
48
48
  parameters = {
49
+ input_id: location.input_id,
49
50
  street: location.street,
50
51
  street2: location.street2,
51
52
  secondary: location.secondary,
52
53
  city: location.city,
53
54
  state: location.state,
54
- zip_code: location.zip_code,
55
- last_line: location.last_line,
55
+ zipcode: location.zipcode,
56
+ lastline: location.lastline,
56
57
  addressee: location.addressee,
57
58
  urbanization: location.urbanization,
58
- candidates: SmartyStreets.configuration.number_of_candidates,
59
- auth_id: SmartyStreets.configuration.auth_id,
60
- auth_token: SmartyStreets.configuration.auth_token
59
+ candidates: location.candidates || SmartyStreets.configuration.candidates,
60
+ "auth-id" => SmartyStreets.configuration.auth_id,
61
+ "auth-token" => SmartyStreets.configuration.auth_token
61
62
  }
62
63
 
63
64
  parameter_string = parameters.collect { |k,v|
64
- "#{k.to_s.gsub('_', '-')}=#{CGI.escape(v.to_s)}"
65
+ "#{k.to_s}=#{CGI.escape(v.to_s)}"
65
66
  }.join('&')
66
67
 
67
- 'http://' + SmartyStreets.configuration.api_url +
68
- '/street-address/?' + parameter_string
68
+ 'https://' + SmartyStreets.configuration.api_url + '/street-address/?' + parameter_string
69
69
  end
70
70
  end
71
71
  end
@@ -1,3 +1,3 @@
1
1
  module SmartyStreets
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -6,7 +6,7 @@ describe SmartyStreets::Configuration do
6
6
  c.api_url = 'apiurl'
7
7
  c.auth_id = 'MYAUTHID'
8
8
  c.auth_token = 'MYAUTHTOKEN'
9
- c.number_of_candidates = 1
9
+ c.candidates = 1
10
10
  end
11
11
  end
12
12
 
@@ -22,7 +22,7 @@ describe SmartyStreets::Configuration do
22
22
  expect(SmartyStreets.configuration.auth_token).to eq 'MYAUTHTOKEN'
23
23
  end
24
24
 
25
- it 'sets the number_of_candidates' do
26
- expect(SmartyStreets.configuration.number_of_candidates).to eq 1
25
+ it 'sets the candidates' do
26
+ expect(SmartyStreets.configuration.candidates).to eq 1
27
27
  end
28
28
  end
@@ -1,171 +1,96 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe SmartyStreets do
4
+ let(:auth_id) { 'MYAUTHID' }
5
+ let(:auth_token) { 'MYAUTHTOKEN' }
6
+ let(:candidates) { 1 }
7
+ let(:response) { double(:response, code: response_code, body: response_body) }
8
+ let(:response_code) { }
9
+ let(:response_body) { }
10
+
11
+
4
12
  before do
13
+ SmartyStreets.configure do |c|
14
+ c.auth_id = auth_id
15
+ c.auth_token = auth_token
16
+ c.candidates = candidates
17
+ end
18
+
19
+ allow(HTTParty).to receive(:get).and_return(response)
5
20
  end
6
21
 
7
22
  context SmartyStreets::Request do
8
23
  context 'unauthorized request' do
9
- let(:unauthorized_request) do
10
- double(:response, code: 401)
11
- end
12
-
13
- before do
14
- SmartyStreets.configure do |c|
15
- c.auth_id = 'ERROR'
16
- c.auth_token = 'ERROR'
17
- end
18
- HTTParty.stub(:get).and_return(unauthorized_request)
19
- end
24
+ let(:response_code) { 401 }
20
25
 
21
26
  specify 'raises an InvalidCredentials error' do
22
27
  expect {
23
- locations = SmartyStreets.standardize do |location|
24
- location.street = '1 infinite loop'
25
- location.city = 'cupertino'
26
- location.state = 'california'
27
- location.zip_code = '95014'
28
- end
28
+ locations = SmartyStreets.standardize {}
29
29
  }.to raise_error SmartyStreets::Request::InvalidCredentials
30
30
  end
31
31
  end
32
32
 
33
33
  context 'malformed data' do
34
- let(:malformed_data_request) do
35
- double(:response, code: 400)
36
- end
37
-
38
- before do
39
- SmartyStreets.configure do |c|
40
- c.auth_id = 'ERROR'
41
- c.auth_token = 'ERROR'
42
- end
43
- HTTParty.stub(:get).and_return(malformed_data_request)
44
- end
34
+ let(:response_code) { 400 }
45
35
 
46
36
  specify 'raises an InvalidCredentials error' do
47
37
  expect {
48
- locations = SmartyStreets.standardize do |location|
49
- location.street = '1 infinite loop'
50
- location.city = 'cupertino'
51
- location.state = 'california'
52
- location.zip_code = '95014'
53
- end
38
+ SmartyStreets.standardize {}
54
39
  }.to raise_error SmartyStreets::Request::MalformedData
55
40
  end
56
41
  end
57
42
 
58
43
  context 'payment required' do
59
- let(:payment_required_request) do
60
- double(:response, code: 402)
61
- end
62
-
63
- before do
64
- SmartyStreets.configure do |c|
65
- c.auth_id = 'ERROR'
66
- c.auth_token = 'ERROR'
67
- end
68
- HTTParty.stub(:get).and_return(payment_required_request)
69
- end
44
+ let(:response_code) { 402 }
70
45
 
71
46
  specify 'raises an InvalidCredentials error' do
72
47
  expect {
73
- locations = SmartyStreets.standardize do |location|
74
- location.street = '1 infinite loop'
75
- location.city = 'cupertino'
76
- location.state = 'california'
77
- location.zip_code = '95014'
78
- end
48
+ SmartyStreets.standardize {}
79
49
  }.to raise_error SmartyStreets::Request::PaymentRequired
80
50
  end
81
51
  end
82
52
 
83
53
  context 'remote server error' do
84
- let(:remote_server_error_request) do
85
- double(:response, code: 500)
86
- end
87
-
88
- before do
89
- SmartyStreets.configure do |c|
90
- c.auth_id = 'ERROR'
91
- c.auth_token = 'ERROR'
92
- end
93
- HTTParty.stub(:get).and_return(remote_server_error_request)
94
- end
54
+ let(:response_code) { 500 }
95
55
 
96
56
  specify 'raises an InvalidCredentials error' do
97
57
  expect {
98
- locations = SmartyStreets.standardize do |location|
99
- location.street = '1 infinite loop'
100
- location.city = 'cupertino'
101
- location.state = 'california'
102
- location.zip_code = '95014'
103
- end
58
+ SmartyStreets.standardize {}
104
59
  }.to raise_error SmartyStreets::Request::RemoteServerError
105
60
  end
106
61
  end
107
62
 
108
63
  context 'successful request' do
109
- let(:successful_response) do
110
- double(:response, code: 200, body: successful_response_data)
111
- end
112
-
113
- before do
114
- SmartyStreets.configure do |c|
115
- c.auth_id = 'MYAUTHID'
116
- c.auth_token = 'MYAUTHTOKEN'
117
- c.number_of_candidates = 5
118
- end
119
- HTTParty.stub(:get).and_return(successful_response)
120
- end
64
+ let(:response_code) { 200 }
65
+ let(:response_body) { successful_response_data }
66
+ let(:candidates) { 5 }
67
+ let(:successful_response_data) { '[{"input_index":0,"candidate_index":0,"delivery_line_1":"1 Infinite Loop","lastline":"Cupertino CA 95014-2083","delivery_point_barcode":"950142083017","components":{"primary_number":"1","street_name":"Infinite","street_suffix":"Loop","city_name":"Cupertino","state_abbreviation":"CA","zipcode":"95014","plus4_code":"2083","delivery_point":"01","delivery_point_check_digit":"7"},"metadata":{"record_type":"S","county_fips":"06085","county_name":"Santa Clara","carrier_route":"C067","congressional_district":"18","rdi":"Commercial","elot_sequence":"0031","elot_sort":"A","latitude":37.33118,"longitude":-122.03062,"precision":"Zip9"},"analysis":{"dpv_match_code":"Y","dpv_footnotes":"AABB","dpv_cmra":"N","dpv_vacant":"N","active":"Y"}},{"input_index":0,"candidate_index":1,"addressee":"Apple Computer","delivery_line_1":"1 Infinite Loop","lastline":"Cupertino CA 95014-2084","delivery_point_barcode":"950142084016","components":{"primary_number":"1","street_name":"Infinite","street_suffix":"Loop","city_name":"Cupertino","state_abbreviation":"CA","zipcode":"95014","plus4_code":"2084","delivery_point":"01","delivery_point_check_digit":"6"},"metadata":{"record_type":"F","county_fips":"06085","county_name":"Santa Clara","carrier_route":"C067","congressional_district":"18","rdi":"Commercial","elot_sequence":"0032","elot_sort":"A","latitude":37.33118,"longitude":-122.03062,"precision":"Zip9"},"analysis":{"dpv_match_code":"Y","dpv_footnotes":"AABB","dpv_cmra":"N","dpv_vacant":"N","active":"Y"}}]' }
121
68
 
122
69
  specify 'makes a request for a standardized address' do
123
70
  locations = SmartyStreets.standardize do |location|
124
71
  location.street = '1 infinite loop'
125
72
  location.city = 'cupertino'
126
73
  location.state = 'calforna'
127
- location.zip_code = '95014'
74
+ location.zipcode = '95014'
128
75
  end
129
76
 
130
- expect(locations.first.street).to eq '1 Infinite Loop'
131
- expect(locations.first.city).to eq 'Cupertino'
132
- expect(locations.first.state).to eq 'CA'
133
- expect(locations.first.zip_code).to eq '95014-2083'
77
+ expect(locations.first.street).to eq '1 Infinite Loop'
78
+ expect(locations.first.city).to eq 'Cupertino'
79
+ expect(locations.first.state).to eq 'CA'
80
+ expect(locations.first.zipcode).to eq '95014-2083'
134
81
  end
135
82
  end
136
83
 
137
84
  context 'address with no candidates' do
138
- let(:unsuccessful_response) do
139
- double(:response, code: 200, body: unsuccessful_response_data)
140
- end
141
-
142
- before do
143
- SmartyStreets.configure do |c|
144
- c.auth_id = 'MYAUTHID'
145
- c.auth_token = 'MYAUTHTOKEN'
146
- c.number_of_candidates = 5
147
- end
148
- HTTParty.stub(:get).and_return(unsuccessful_response)
149
- end
85
+ let(:response_code) { 200 }
86
+ let(:candidates) { 5 }
150
87
 
151
88
  specify 'makes a request for a standardized address' do
152
89
  expect {
153
- locations = SmartyStreets.standardize do |location|
154
- location.street = '1234 Unicorn Lane'
155
- location.city = 'earth'
156
- location.state = 'galaxy'
157
- location.zip_code = '1234923'
158
- end
90
+ locations = SmartyStreets.standardize {}
159
91
  }.to raise_error SmartyStreets::Request::NoValidCandidates
160
92
  end
161
93
  end
162
94
  end
163
95
 
164
- def successful_response_data
165
- '[{"input_index":0,"candidate_index":0,"delivery_line_1":"1 Infinite Loop","last_line":"Cupertino CA 95014-2083","delivery_point_barcode":"950142083017","components":{"primary_number":"1","street_name":"Infinite","street_suffix":"Loop","city_name":"Cupertino","state_abbreviation":"CA","zipcode":"95014","plus4_code":"2083","delivery_point":"01","delivery_point_check_digit":"7"},"metadata":{"record_type":"S","county_fips":"06085","county_name":"Santa Clara","carrier_route":"C067","congressional_district":"18","rdi":"Commercial","elot_sequence":"0031","elot_sort":"A","latitude":37.33118,"longitude":-122.03062,"precision":"Zip9"},"analysis":{"dpv_match_code":"Y","dpv_footnotes":"AABB","dpv_cmra":"N","dpv_vacant":"N","active":"Y"}},{"input_index":0,"candidate_index":1,"addressee":"Apple Computer","delivery_line_1":"1 Infinite Loop","last_line":"Cupertino CA 95014-2084","delivery_point_barcode":"950142084016","components":{"primary_number":"1","street_name":"Infinite","street_suffix":"Loop","city_name":"Cupertino","state_abbreviation":"CA","zipcode":"95014","plus4_code":"2084","delivery_point":"01","delivery_point_check_digit":"6"},"metadata":{"record_type":"F","county_fips":"06085","county_name":"Santa Clara","carrier_route":"C067","congressional_district":"18","rdi":"Commercial","elot_sequence":"0032","elot_sort":"A","latitude":37.33118,"longitude":-122.03062,"precision":"Zip9"},"analysis":{"dpv_match_code":"Y","dpv_footnotes":"AABB","dpv_cmra":"N","dpv_vacant":"N","active":"Y"}}]'
166
- end
167
-
168
- def unsuccessful_response_data
169
- nil
170
- end
171
- end
96
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smarty_streets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Russ Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-20 00:00:00.000000000 Z
11
+ date: 2015-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
108
  version: '0'
109
109
  requirements: []
110
110
  rubyforge_project:
111
- rubygems_version: 2.0.3
111
+ rubygems_version: 2.0.14
112
112
  signing_key:
113
113
  specification_version: 4
114
114
  summary: A ruby gem to integrate with http://www.smartystreets.com