ideal_postcodes 0.1.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +6 -0
  3. data/README.md +295 -42
  4. data/Rakefile +13 -6
  5. data/ideal-postcodes-ruby.gemspec +9 -10
  6. data/lib/idealpostcodes.rb +30 -9
  7. data/lib/idealpostcodes/address.rb +31 -0
  8. data/lib/idealpostcodes/key.rb +13 -0
  9. data/lib/idealpostcodes/postcode.rb +11 -24
  10. data/lib/idealpostcodes/util.rb +2 -2
  11. data/lib/idealpostcodes/version.rb +1 -1
  12. data/spec/addresses_spec.rb +68 -0
  13. data/spec/idealpostcodes_spec.rb +56 -0
  14. data/spec/keys_spec.rb +25 -0
  15. data/spec/postcodes_spec.rb +66 -0
  16. data/spec/spec_helper.rb +65 -0
  17. data/spec/vcr_cassettes/IdealPostcodes_Address_lookup_raises_an_exception_if_invalid_key.yml +42 -0
  18. data/spec/vcr_cassettes/IdealPostcodes_Address_lookup_raises_an_exception_if_limit_breached.yml +42 -0
  19. data/spec/vcr_cassettes/IdealPostcodes_Address_lookup_raises_an_exception_if_no_lookups_remaining.yml +42 -0
  20. data/spec/vcr_cassettes/IdealPostcodes_Address_lookup_returns_an_address_for_a_valid_UDPRN.yml +74 -0
  21. data/spec/vcr_cassettes/IdealPostcodes_Address_lookup_returns_nil_for_an_invalid_UDPRN.yml +42 -0
  22. data/spec/vcr_cassettes/IdealPostcodes_Address_search_is_sensitive_to_limit.yml +81 -0
  23. data/spec/vcr_cassettes/IdealPostcodes_Address_search_is_sensitive_to_page.yml +369 -0
  24. data/spec/vcr_cassettes/IdealPostcodes_Address_search_raises_an_exception_if_invalid_key.yml +42 -0
  25. data/spec/vcr_cassettes/IdealPostcodes_Address_search_raises_an_exception_if_limit_breached.yml +42 -0
  26. data/spec/vcr_cassettes/IdealPostcodes_Address_search_raises_an_exception_if_no_lookups_remaining.yml +42 -0
  27. data/spec/vcr_cassettes/IdealPostcodes_Address_search_returns_results_in_a_SearchResult_object.yml +273 -0
  28. data/spec/vcr_cassettes/IdealPostcodes_Key_lookup_details_returns_key_details.yml +62 -0
  29. data/spec/vcr_cassettes/IdealPostcodes_Key_lookup_returns_the_availability_status_of_a_key_false_key_.yml +45 -0
  30. data/spec/vcr_cassettes/IdealPostcodes_Key_lookup_returns_the_availability_status_of_a_key_true_key_.yml +45 -0
  31. data/spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_is_sensitive_to_limit_parameter.yml +52 -0
  32. data/spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_is_sensitive_to_radius_parament.yml +133 -0
  33. data/spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_returns_an_array_of_postcodes_and_locations.yml +84 -0
  34. data/spec/vcr_cassettes/IdealPostcodes_Postcode_find_by_location_returns_an_empty_array_if_no_results_are_found.yml +43 -0
  35. data/spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_raises_an_exception_if_invalid_key.yml +42 -0
  36. data/spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_raises_an_exception_if_key_has_run_out_of_balance.yml +42 -0
  37. data/spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_raises_an_exception_if_limit_has_been_reached.yml +42 -0
  38. data/spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_returns_a_list_of_addresses_for_a_postcode.yml +268 -0
  39. data/spec/vcr_cassettes/IdealPostcodes_Postcode_lookup_returns_an_empty_array_if_postcode_does_not_exist.yml +42 -0
  40. data/spec/vcr_cassettes/IdealPostcodes_key_available_returns_false_if_key_is_unavailable.yml +45 -0
  41. data/spec/vcr_cassettes/IdealPostcodes_key_available_returns_true_if_key_is_available.yml +45 -0
  42. data/spec/vcr_cassettes/IdealPostcodes_key_details_raises_an_exception_if_no_secret_is_provided.yml +45 -0
  43. data/spec/vcr_cassettes/IdealPostcodes_key_details_returns_key_information.yml +62 -0
  44. data/spec/vcr_cassettes/IdealPostcodes_request_generates_a_HTTP_request.yml +268 -0
  45. data/spec/vcr_cassettes/IdealPostcodes_request_raises_authentication_error_if_invalid_key_is_provided.yml +42 -0
  46. data/spec/vcr_cassettes/IdealPostcodes_request_raises_limit_reached_error_if_a_limit_has_been_breached.yml +42 -0
  47. data/spec/vcr_cassettes/IdealPostcodes_request_raises_token_exhausted_error_if_key_balance_is_depleted.yml +42 -0
  48. metadata +96 -39
  49. data/test/test_helper.rb +0 -77
  50. data/test/test_ideal_postcodes.rb +0 -78
@@ -0,0 +1,45 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://localhost:1337/v1/keys/idkfa?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: 200
19
+ message: OK
20
+ headers:
21
+ Access-Control-Allow-Origin:
22
+ - '*'
23
+ Content-Type:
24
+ - application/json; charset=utf-8
25
+ Content-Length:
26
+ - '84'
27
+ Etag:
28
+ - '"2073554680"'
29
+ Date:
30
+ - Fri, 12 Dec 2014 17:40:27 GMT
31
+ Connection:
32
+ - keep-alive
33
+ body:
34
+ encoding: UTF-8
35
+ string: |-
36
+ {
37
+ "result": {
38
+ "available": false
39
+ },
40
+ "code": 2000,
41
+ "message": "Success"
42
+ }
43
+ http_version:
44
+ recorded_at: Fri, 12 Dec 2014 17:40:27 GMT
45
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,45 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://localhost:1337/v1/keys/iddqd?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: 200
19
+ message: OK
20
+ headers:
21
+ Access-Control-Allow-Origin:
22
+ - '*'
23
+ Content-Type:
24
+ - application/json; charset=utf-8
25
+ Content-Length:
26
+ - '83'
27
+ Etag:
28
+ - '"2124296415"'
29
+ Date:
30
+ - Fri, 12 Dec 2014 17:40:27 GMT
31
+ Connection:
32
+ - keep-alive
33
+ body:
34
+ encoding: UTF-8
35
+ string: |-
36
+ {
37
+ "result": {
38
+ "available": true
39
+ },
40
+ "code": 2000,
41
+ "message": "Success"
42
+ }
43
+ http_version:
44
+ recorded_at: Fri, 12 Dec 2014 17:40:27 GMT
45
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,52 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://localhost:1337/v1/postcodes?api_key=gandhi&limit=1&lonlat=0.6298,51.7923
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: 200
19
+ message: OK
20
+ headers:
21
+ Access-Control-Allow-Origin:
22
+ - '*'
23
+ Content-Type:
24
+ - application/json; charset=utf-8
25
+ Content-Length:
26
+ - '258'
27
+ Etag:
28
+ - '"-583643089"'
29
+ Date:
30
+ - Fri, 12 Dec 2014 17:40:28 GMT
31
+ Connection:
32
+ - keep-alive
33
+ body:
34
+ encoding: UTF-8
35
+ string: |-
36
+ {
37
+ "result": [
38
+ {
39
+ "postcode": "CM8 1EF",
40
+ "northings": 213679,
41
+ "eastings": 581461,
42
+ "longitude": 0.629834723775309,
43
+ "latitude": 51.7923246977375,
44
+ "distance": 3.64568457
45
+ }
46
+ ],
47
+ "code": 2000,
48
+ "message": "Success"
49
+ }
50
+ http_version:
51
+ recorded_at: Fri, 12 Dec 2014 17:40:28 GMT
52
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,133 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://localhost:1337/v1/postcodes?api_key=gandhi&lonlat=0.6298,51.7923&radius=10
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: 200
19
+ message: OK
20
+ headers:
21
+ Access-Control-Allow-Origin:
22
+ - '*'
23
+ Content-Type:
24
+ - application/json; charset=utf-8
25
+ Content-Length:
26
+ - '258'
27
+ Etag:
28
+ - '"-583643089"'
29
+ Date:
30
+ - Fri, 12 Dec 2014 17:40:28 GMT
31
+ Connection:
32
+ - keep-alive
33
+ body:
34
+ encoding: UTF-8
35
+ string: |-
36
+ {
37
+ "result": [
38
+ {
39
+ "postcode": "CM8 1EF",
40
+ "northings": 213679,
41
+ "eastings": 581461,
42
+ "longitude": 0.629834723775309,
43
+ "latitude": 51.7923246977375,
44
+ "distance": 3.64568457
45
+ }
46
+ ],
47
+ "code": 2000,
48
+ "message": "Success"
49
+ }
50
+ http_version:
51
+ recorded_at: Fri, 12 Dec 2014 17:40:28 GMT
52
+ - request:
53
+ method: get
54
+ uri: https://localhost:1337/v1/postcodes?api_key=gandhi&lonlat=0.6298,51.7923&radius=100
55
+ body:
56
+ encoding: US-ASCII
57
+ string: ''
58
+ headers:
59
+ Accept:
60
+ - '*/*; q=0.5, application/xml'
61
+ Accept-Encoding:
62
+ - gzip, deflate
63
+ User-Agent:
64
+ - Ruby
65
+ response:
66
+ status:
67
+ code: 200
68
+ message: OK
69
+ headers:
70
+ Access-Control-Allow-Origin:
71
+ - '*'
72
+ Content-Type:
73
+ - application/json; charset=utf-8
74
+ Content-Length:
75
+ - '1058'
76
+ Etag:
77
+ - '"707345369"'
78
+ Date:
79
+ - Fri, 12 Dec 2014 17:40:28 GMT
80
+ Connection:
81
+ - keep-alive
82
+ body:
83
+ encoding: UTF-8
84
+ string: |-
85
+ {
86
+ "result": [
87
+ {
88
+ "postcode": "CM8 1EF",
89
+ "northings": 213679,
90
+ "eastings": 581461,
91
+ "longitude": 0.629834723775309,
92
+ "latitude": 51.7923246977375,
93
+ "distance": 3.64568457
94
+ },
95
+ {
96
+ "postcode": "CM8 1EU",
97
+ "northings": 213650,
98
+ "eastings": 581507,
99
+ "longitude": 0.630485817275861,
100
+ "latitude": 51.7920493205979,
101
+ "distance": 54.926867768
102
+ },
103
+ {
104
+ "postcode": "CM8 1PH",
105
+ "northings": 213741,
106
+ "eastings": 581420,
107
+ "longitude": 0.629273287180607,
108
+ "latitude": 51.7928948417687,
109
+ "distance": 75.504780435
110
+ },
111
+ {
112
+ "postcode": "CM8 1EN",
113
+ "northings": 213664,
114
+ "eastings": 581366,
115
+ "longitude": 0.628450923709479,
116
+ "latitude": 51.7922207606932,
117
+ "distance": 93.496753053
118
+ },
119
+ {
120
+ "postcode": "CM8 1PQ",
121
+ "northings": 213752,
122
+ "eastings": 581403,
123
+ "longitude": 0.629032807022633,
124
+ "latitude": 51.7929991478552,
125
+ "distance": 94.090672986
126
+ }
127
+ ],
128
+ "code": 2000,
129
+ "message": "Success"
130
+ }
131
+ http_version:
132
+ recorded_at: Fri, 12 Dec 2014 17:40:28 GMT
133
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,84 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://localhost:1337/v1/postcodes?api_key=gandhi&lonlat=0.6298,51.7923
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: 200
19
+ message: OK
20
+ headers:
21
+ Access-Control-Allow-Origin:
22
+ - '*'
23
+ Content-Type:
24
+ - application/json; charset=utf-8
25
+ Content-Length:
26
+ - '1058'
27
+ Etag:
28
+ - '"707345369"'
29
+ Date:
30
+ - Fri, 12 Dec 2014 17:40:28 GMT
31
+ Connection:
32
+ - keep-alive
33
+ body:
34
+ encoding: UTF-8
35
+ string: |-
36
+ {
37
+ "result": [
38
+ {
39
+ "postcode": "CM8 1EF",
40
+ "northings": 213679,
41
+ "eastings": 581461,
42
+ "longitude": 0.629834723775309,
43
+ "latitude": 51.7923246977375,
44
+ "distance": 3.64568457
45
+ },
46
+ {
47
+ "postcode": "CM8 1EU",
48
+ "northings": 213650,
49
+ "eastings": 581507,
50
+ "longitude": 0.630485817275861,
51
+ "latitude": 51.7920493205979,
52
+ "distance": 54.926867768
53
+ },
54
+ {
55
+ "postcode": "CM8 1PH",
56
+ "northings": 213741,
57
+ "eastings": 581420,
58
+ "longitude": 0.629273287180607,
59
+ "latitude": 51.7928948417687,
60
+ "distance": 75.504780435
61
+ },
62
+ {
63
+ "postcode": "CM8 1EN",
64
+ "northings": 213664,
65
+ "eastings": 581366,
66
+ "longitude": 0.628450923709479,
67
+ "latitude": 51.7922207606932,
68
+ "distance": 93.496753053
69
+ },
70
+ {
71
+ "postcode": "CM8 1PQ",
72
+ "northings": 213752,
73
+ "eastings": 581403,
74
+ "longitude": 0.629032807022633,
75
+ "latitude": 51.7929991478552,
76
+ "distance": 94.090672986
77
+ }
78
+ ],
79
+ "code": 2000,
80
+ "message": "Success"
81
+ }
82
+ http_version:
83
+ recorded_at: Fri, 12 Dec 2014 17:40:28 GMT
84
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,43 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://localhost:1337/v1/postcodes?api_key=gandhi&lonlat=0,0
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: 200
19
+ message: OK
20
+ headers:
21
+ Access-Control-Allow-Origin:
22
+ - '*'
23
+ Content-Type:
24
+ - application/json; charset=utf-8
25
+ Content-Length:
26
+ - '58'
27
+ Etag:
28
+ - '"-963557841"'
29
+ Date:
30
+ - Fri, 12 Dec 2014 17:40:28 GMT
31
+ Connection:
32
+ - keep-alive
33
+ body:
34
+ encoding: UTF-8
35
+ string: |-
36
+ {
37
+ "result": [],
38
+ "code": 2000,
39
+ "message": "Success"
40
+ }
41
+ http_version:
42
+ recorded_at: Fri, 12 Dec 2014 17:40:28 GMT
43
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,42 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://localhost:1337/v1/postcodes/ID1%201QD?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:28 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:28 GMT
42
+ recorded_with: VCR 2.9.3