ideal_postcodes 2.0.0 → 2.0.1
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 +5 -5
- data/.github/workflows/ci.yml +22 -0
- data/lib/ideal_postcodes.rb +1 -1
- data/lib/idealpostcodes/address.rb +28 -28
- data/lib/idealpostcodes/errors.rb +31 -26
- data/lib/idealpostcodes/key.rb +12 -11
- data/lib/idealpostcodes/postcode.rb +21 -20
- data/lib/idealpostcodes/util.rb +38 -25
- data/lib/idealpostcodes/version.rb +2 -2
- data/lib/idealpostcodes.rb +104 -92
- data/spec/addresses_spec.rb +63 -63
- data/spec/idealpostcodes_spec.rb +51 -51
- data/spec/keys_spec.rb +21 -21
- data/spec/postcodes_spec.rb +74 -63
- data/spec/spec_helper.rb +50 -29
- data/spec/vcr_cassettes/IdealPostcodes_Address_lookup_raises_an_exception_if_invalid_key.yml +39 -39
- data/spec/vcr_cassettes/IdealPostcodes_Address_lookup_raises_an_exception_if_limit_breached.yml +39 -39
- data/spec/vcr_cassettes/IdealPostcodes_Address_lookup_raises_an_exception_if_no_lookups_remaining.yml +39 -39
- data/spec/vcr_cassettes/IdealPostcodes_Address_lookup_returns_an_address_for_a_valid_UDPRN.yml +71 -71
- data/spec/vcr_cassettes/IdealPostcodes_Address_lookup_returns_nil_for_an_invalid_UDPRN.yml +39 -39
- data/spec/vcr_cassettes/IdealPostcodes_Address_search_is_sensitive_to_limit.yml +78 -78
- data/spec/vcr_cassettes/IdealPostcodes_Address_search_is_sensitive_to_page.yml +366 -366
- data/spec/vcr_cassettes/IdealPostcodes_Address_search_raises_an_exception_if_invalid_key.yml +39 -39
- data/spec/vcr_cassettes/IdealPostcodes_Address_search_raises_an_exception_if_limit_breached.yml +39 -39
- data/spec/vcr_cassettes/IdealPostcodes_Address_search_raises_an_exception_if_no_lookups_remaining.yml +39 -39
- data/spec/vcr_cassettes/IdealPostcodes_Address_search_returns_results_in_a_SearchResult_object.yml +270 -270
- data/spec/vcr_cassettes/IdealPostcodes_Key_lookup_details_returns_key_details.yml +58 -58
- data/spec/vcr_cassettes/IdealPostcodes_Key_lookup_returns_the_availability_status_of_a_key_false_key_.yml +42 -42
- data/spec/vcr_cassettes/IdealPostcodes_Key_lookup_returns_the_availability_status_of_a_key_true_key_.yml +42 -42
- data/spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_is_sensitive_to_limit_parameter.yml +49 -49
- data/spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_is_sensitive_to_radius_parament.yml +130 -130
- data/spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_returns_an_array_of_postcodes_and_locations.yml +81 -81
- data/spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_returns_an_empty_array_if_no_results_are_found.yml +40 -40
- data/spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_raises_an_exception_if_invalid_key.yml +39 -39
- data/spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_raises_an_exception_if_key_has_run_out_of_balance.yml +39 -39
- data/spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_raises_an_exception_if_limit_has_been_reached.yml +39 -39
- data/spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_returns_a_list_of_addresses_for_a_postcode.yml +265 -265
- data/spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_returns_an_empty_array_if_postcode_does_not_exist.yml +39 -39
- data/spec/vcr_cassettes/IdealPostcodes_key_available_returns_false_if_key_is_unavailable.yml +42 -42
- data/spec/vcr_cassettes/IdealPostcodes_key_available_returns_true_if_key_is_available.yml +42 -42
- data/spec/vcr_cassettes/IdealPostcodes_key_details_raises_an_exception_if_no_secret_is_provided.yml +42 -42
- data/spec/vcr_cassettes/IdealPostcodes_key_details_returns_key_information.yml +58 -58
- data/spec/vcr_cassettes/IdealPostcodes_request_generates_a_HTTP_request.yml +265 -265
- data/spec/vcr_cassettes/IdealPostcodes_request_raises_authentication_error_if_invalid_key_is_provided.yml +39 -39
- data/spec/vcr_cassettes/IdealPostcodes_request_raises_limit_reached_error_if_a_limit_has_been_breached.yml +39 -39
- data/spec/vcr_cassettes/IdealPostcodes_request_raises_token_exhausted_error_if_key_balance_is_depleted.yml +39 -39
- metadata +4 -5
- data/.travis.yml +0 -9
data/spec/idealpostcodes_spec.rb
CHANGED
@@ -1,56 +1,56 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe IdealPostcodes do
|
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
|
-
|
4
|
+
describe '#request' do
|
5
|
+
it 'generates a HTTP request' do
|
6
|
+
response = IdealPostcodes.request :get, 'postcodes/ID1 1QD'
|
7
|
+
expect(response[:code]).to eq(2000)
|
8
|
+
end
|
9
|
+
it 'raises an error if no key is provided' do
|
10
|
+
IdealPostcodes.api_key = nil
|
11
|
+
expect do
|
12
|
+
response = IdealPostcodes.request :get, 'postcodes/ID1 1QD'
|
13
|
+
end.to raise_error(IdealPostcodes::AuthenticationError)
|
14
|
+
end
|
15
|
+
it 'raises authentication error if invalid key is provided' do
|
16
|
+
IdealPostcodes.api_key = 'foo'
|
17
|
+
expect do
|
18
|
+
response = IdealPostcodes.request :get, 'postcodes/ID1 1QD'
|
19
|
+
end.to raise_error(IdealPostcodes::AuthenticationError)
|
20
|
+
end
|
21
|
+
it 'raises token exhausted error if key balance is depleted' do
|
22
|
+
expect do
|
23
|
+
response = IdealPostcodes.request :get, 'postcodes/ID1 CLIP'
|
24
|
+
end.to raise_error(IdealPostcodes::TokenExhaustedError)
|
25
|
+
end
|
26
|
+
it 'raises limit reached error if a limit has been breached' do
|
27
|
+
expect do
|
28
|
+
response = IdealPostcodes.request :get, 'postcodes/ID1 CHOP'
|
29
|
+
end.to raise_error(IdealPostcodes::LimitReachedError)
|
30
|
+
end
|
31
|
+
end
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
33
|
+
describe '.key_available' do
|
34
|
+
it 'returns true if key is available' do
|
35
|
+
IdealPostcodes.api_key = 'iddqd'
|
36
|
+
expect(IdealPostcodes.key_available).to equal(true)
|
37
|
+
end
|
38
|
+
it 'returns false if key is unavailable' do
|
39
|
+
IdealPostcodes.api_key = 'idkfa'
|
40
|
+
expect(IdealPostcodes.key_available).to equal(false)
|
41
|
+
end
|
42
|
+
end
|
43
43
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
end
|
44
|
+
describe '.key_details' do
|
45
|
+
it 'raises an exception if no secret is provided' do
|
46
|
+
expect { IdealPostcodes.key_details }.to raise_error(
|
47
|
+
IdealPostcodes::AuthenticationError
|
48
|
+
)
|
49
|
+
end
|
50
|
+
it 'returns key information' do
|
51
|
+
IdealPostcodes.apply_secret(secret_key)
|
52
|
+
response = IdealPostcodes.key_details
|
53
|
+
expect(is_key(response)).to eq(true)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/spec/keys_spec.rb
CHANGED
@@ -1,25 +1,25 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe IdealPostcodes::Key do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
4
|
+
describe '.lookup' do
|
5
|
+
it 'returns the availability status of a key (true key)' do
|
6
|
+
result = IdealPostcodes::Key.lookup 'iddqd'
|
7
|
+
expect(result[:available]).to eq(true)
|
8
|
+
end
|
9
|
+
it 'returns the availability status of a key (false key)' do
|
10
|
+
result = IdealPostcodes::Key.lookup 'idkfa'
|
11
|
+
expect(result[:available]).to eq(false)
|
12
|
+
end
|
13
|
+
end
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
15
|
+
describe '.lookup_details' do
|
16
|
+
it 'returns key details' do
|
17
|
+
result = IdealPostcodes::Key.lookup_details 'gandhi', secret_key
|
18
|
+
expect(result[:lookups_remaining]).to_not be_nil
|
19
|
+
expect(result[:daily_limit]).to_not be_nil
|
20
|
+
expect(result[:individual_limit]).to_not be_nil
|
21
|
+
expect(result[:allowed_urls]).to_not be_nil
|
22
|
+
expect(result[:notifications]).to_not be_nil
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/spec/postcodes_spec.rb
CHANGED
@@ -1,66 +1,77 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe IdealPostcodes::Postcode do
|
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
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
4
|
+
describe '.lookup' do
|
5
|
+
it 'returns a list of addresses for a postcode' do
|
6
|
+
addresses = IdealPostcodes::Postcode.lookup 'ID1 1QD'
|
7
|
+
expect(addresses.length).to be > 0
|
8
|
+
addresses.each do |address|
|
9
|
+
expect(is_address(address)).to eq(true)
|
10
|
+
expect(address[:postcode]).to eq('ID1 1QD')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
it 'returns an empty array if postcode does not exist' do
|
14
|
+
addresses = IdealPostcodes::Postcode.lookup 'ID1 KFA'
|
15
|
+
expect(addresses.length).to eq(0)
|
16
|
+
end
|
17
|
+
it 'raises an exception if key has run out of balance' do
|
18
|
+
expect { IdealPostcodes::Postcode.lookup 'ID1 CLIP' }.to raise_error(
|
19
|
+
IdealPostcodes::TokenExhaustedError
|
20
|
+
)
|
21
|
+
end
|
22
|
+
it 'raises an exception if limit has been reached' do
|
23
|
+
expect { IdealPostcodes::Postcode.lookup 'ID1 CHOP' }.to raise_error(
|
24
|
+
IdealPostcodes::LimitReachedError
|
25
|
+
)
|
26
|
+
end
|
27
|
+
it 'raises an exception if invalid key' do
|
28
|
+
IdealPostcodes.api_key = 'foo'
|
29
|
+
expect { IdealPostcodes::Postcode.lookup 'ID1 1QD' }.to raise_error(
|
30
|
+
IdealPostcodes::AuthenticationError
|
31
|
+
)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
describe '.find_by_location' do
|
35
|
+
it 'returns an array of postcodes and locations' do
|
36
|
+
lon = 0.6298
|
37
|
+
lat = 51.7923
|
38
|
+
postcodes =
|
39
|
+
IdealPostcodes::Postcode.find_by_location longitude: lon, latitude: lat
|
40
|
+
expect(postcodes.length).to be > 0
|
41
|
+
postcodes.each do |postcode|
|
42
|
+
expect(is_postcode_location(postcode)).to eq(true)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
it 'returns an empty array if no results are found' do
|
46
|
+
lon = 0
|
47
|
+
lat = 0
|
48
|
+
postcodes =
|
49
|
+
IdealPostcodes::Postcode.find_by_location longitude: lon, latitude: lat
|
50
|
+
expect(postcodes).to be_a(Array)
|
51
|
+
expect(postcodes.length).to eq(0)
|
52
|
+
end
|
53
|
+
it 'is sensitive to limit parameter' do
|
54
|
+
lon = 0.6298
|
55
|
+
lat = 51.7923
|
56
|
+
limit = 1
|
57
|
+
postcodes =
|
58
|
+
IdealPostcodes::Postcode.find_by_location longitude: lon,
|
59
|
+
latitude: lat,
|
60
|
+
limit: limit
|
61
|
+
expect(postcodes.length).to eq(limit)
|
62
|
+
end
|
63
|
+
it 'is sensitive to radius parament' do
|
64
|
+
lon = 0.6298
|
65
|
+
lat = 51.7923
|
66
|
+
small_radius =
|
67
|
+
IdealPostcodes::Postcode.find_by_location longitude: lon,
|
68
|
+
latitude: lat,
|
69
|
+
radius: 10
|
70
|
+
large_radius =
|
71
|
+
IdealPostcodes::Postcode.find_by_location longitude: lon,
|
72
|
+
latitude: lat,
|
73
|
+
radius: 100
|
74
|
+
expect(large_radius.length > small_radius.length).to eq(true)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -5,64 +5,85 @@ require 'webmock'
|
|
5
5
|
WebMock.enable!
|
6
6
|
|
7
7
|
VCR.configure do |c|
|
8
|
-
|
9
|
-
|
8
|
+
c.cassette_library_dir = 'spec/vcr_cassettes'
|
9
|
+
c.hook_into :webmock
|
10
10
|
end
|
11
11
|
|
12
12
|
# Configure Ideal Postcodes lib
|
13
13
|
require 'ideal_postcodes'
|
14
14
|
|
15
15
|
RSpec.configure do |c|
|
16
|
-
|
16
|
+
c.before(:each) do
|
17
17
|
IdealPostcodes.base_url = 'https://localhost:1337'
|
18
|
-
|
19
|
-
|
18
|
+
IdealPostcodes.api_key = 'gandhi'
|
19
|
+
IdealPostcodes.apply_secret nil
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
26
|
-
end
|
22
|
+
c.around(:each) do |example|
|
23
|
+
VCR.use_cassette(example.metadata[:full_description]) { example.run }
|
24
|
+
end
|
27
25
|
end
|
28
26
|
|
29
|
-
def contains_attributes
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
end
|
34
|
-
result
|
27
|
+
def contains_attributes(attribute_list, target)
|
28
|
+
result = true
|
29
|
+
attribute_list.each { |attribute| result = false if target[attribute].nil? }
|
30
|
+
result
|
35
31
|
end
|
36
32
|
|
37
33
|
def postcode_location_elements
|
38
|
-
|
34
|
+
%i[postcode longitude latitude northings eastings]
|
39
35
|
end
|
40
36
|
|
41
37
|
def is_postcode_location(postcode)
|
42
|
-
|
38
|
+
contains_attributes postcode_location_elements, postcode
|
43
39
|
end
|
44
40
|
|
45
41
|
def address_elements
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
42
|
+
%i[
|
43
|
+
postcode
|
44
|
+
postcode_inward
|
45
|
+
postcode_outward
|
46
|
+
post_town
|
47
|
+
dependant_locality
|
48
|
+
double_dependant_locality
|
49
|
+
thoroughfare
|
50
|
+
dependant_thoroughfare
|
51
|
+
building_number
|
52
|
+
building_name
|
53
|
+
sub_building_name
|
54
|
+
po_box
|
55
|
+
department_name
|
56
|
+
organisation_name
|
57
|
+
udprn
|
58
|
+
postcode_type
|
59
|
+
su_organisation_indicator
|
60
|
+
delivery_point_suffix
|
61
|
+
line_1
|
62
|
+
line_2
|
63
|
+
line_3
|
64
|
+
premise
|
65
|
+
county
|
66
|
+
district
|
67
|
+
ward
|
68
|
+
longitude
|
69
|
+
latitude
|
70
|
+
eastings
|
71
|
+
northings
|
72
|
+
]
|
52
73
|
end
|
53
74
|
|
54
75
|
def is_address(address)
|
55
|
-
|
76
|
+
contains_attributes address_elements, address
|
56
77
|
end
|
57
78
|
|
58
79
|
def key_elements
|
59
|
-
|
80
|
+
%i[lookups_remaining daily_limit individual_limit allowed_urls notifications]
|
60
81
|
end
|
61
82
|
|
62
83
|
def is_key(key)
|
63
|
-
|
84
|
+
contains_attributes key_elements, key
|
64
85
|
end
|
65
86
|
|
66
87
|
def secret_key
|
67
|
-
|
68
|
-
end
|
88
|
+
'uk_hxp6ouk0rmyXoobVJnehrsQcdvTfb'
|
89
|
+
end
|
data/spec/vcr_cassettes/IdealPostcodes_Address_lookup_raises_an_exception_if_invalid_key.yml
CHANGED
@@ -1,42 +1,42 @@
|
|
1
1
|
---
|
2
2
|
http_interactions:
|
3
|
-
- request:
|
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
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://localhost:1337/v1/addresses/0?api_key=foo
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ""
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- "*/*; q=0.5, application/xml"
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip, deflate
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 401
|
19
|
+
message: Unauthorized
|
20
|
+
headers:
|
21
|
+
Access-Control-Allow-Origin:
|
22
|
+
- "*"
|
23
|
+
Content-Type:
|
24
|
+
- application/json; charset=utf-8
|
25
|
+
Content-Length:
|
26
|
+
- "135"
|
27
|
+
Etag:
|
28
|
+
- '"-632160061"'
|
29
|
+
Date:
|
30
|
+
- Fri, 12 Dec 2014 17:40:26 GMT
|
31
|
+
Connection:
|
32
|
+
- keep-alive
|
33
|
+
body:
|
34
|
+
encoding: UTF-8
|
35
|
+
string: |-
|
36
|
+
{
|
37
|
+
"code": 4010,
|
38
|
+
"message": "Invalid Key. For more information see http://ideal-postcodes.co.uk/documentation/response-codes#4010"
|
39
|
+
}
|
40
|
+
http_version:
|
41
|
+
recorded_at: Fri, 12 Dec 2014 17:40:26 GMT
|
42
42
|
recorded_with: VCR 2.9.3
|
data/spec/vcr_cassettes/IdealPostcodes_Address_lookup_raises_an_exception_if_limit_breached.yml
CHANGED
@@ -1,42 +1,42 @@
|
|
1
1
|
---
|
2
2
|
http_interactions:
|
3
|
-
- request:
|
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
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://localhost:1337/v1/addresses/-3?api_key=gandhi
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ""
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- "*/*; q=0.5, application/xml"
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip, deflate
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 402
|
19
|
+
message: Payment Required
|
20
|
+
headers:
|
21
|
+
Access-Control-Allow-Origin:
|
22
|
+
- "*"
|
23
|
+
Content-Type:
|
24
|
+
- application/json; charset=utf-8
|
25
|
+
Content-Length:
|
26
|
+
- "144"
|
27
|
+
Etag:
|
28
|
+
- '"1445167850"'
|
29
|
+
Date:
|
30
|
+
- Fri, 12 Dec 2014 17:40:26 GMT
|
31
|
+
Connection:
|
32
|
+
- keep-alive
|
33
|
+
body:
|
34
|
+
encoding: UTF-8
|
35
|
+
string: |-
|
36
|
+
{
|
37
|
+
"code": 4021,
|
38
|
+
"message": "Lookup Limit Reached. For more information see http://ideal-postcodes.co.uk/documentation/response-codes#4021"
|
39
|
+
}
|
40
|
+
http_version:
|
41
|
+
recorded_at: Fri, 12 Dec 2014 17:40:26 GMT
|
42
42
|
recorded_with: VCR 2.9.3
|
@@ -1,42 +1,42 @@
|
|
1
1
|
---
|
2
2
|
http_interactions:
|
3
|
-
- request:
|
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
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://localhost:1337/v1/addresses/-2?api_key=gandhi
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ""
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- "*/*; q=0.5, application/xml"
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip, deflate
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 402
|
19
|
+
message: Payment Required
|
20
|
+
headers:
|
21
|
+
Access-Control-Allow-Origin:
|
22
|
+
- "*"
|
23
|
+
Content-Type:
|
24
|
+
- application/json; charset=utf-8
|
25
|
+
Content-Length:
|
26
|
+
- "146"
|
27
|
+
Etag:
|
28
|
+
- '"1304241290"'
|
29
|
+
Date:
|
30
|
+
- Fri, 12 Dec 2014 17:40:26 GMT
|
31
|
+
Connection:
|
32
|
+
- keep-alive
|
33
|
+
body:
|
34
|
+
encoding: UTF-8
|
35
|
+
string: |-
|
36
|
+
{
|
37
|
+
"code": 4020,
|
38
|
+
"message": "Token balance depleted. For more information see http://ideal-postcodes.co.uk/documentation/response-codes#4020"
|
39
|
+
}
|
40
|
+
http_version:
|
41
|
+
recorded_at: Fri, 12 Dec 2014 17:40:26 GMT
|
42
42
|
recorded_with: VCR 2.9.3
|