postcodeapi 0.0.1 → 0.0.2
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.
- data/.travis.yml +8 -0
- data/CHANGELOG.txt +7 -0
- data/examples/postcode-lookup.rb +7 -0
- data/lib/postcodeapi/api.rb +12 -7
- data/lib/postcodeapi/version.rb +1 -1
- data/lib/postcodeapi.rb +1 -1
- data/postcodeapi.gemspec +0 -1
- data/spec/postcodeapi/api_spec.rb +37 -16
- metadata +6 -20
data/.travis.yml
CHANGED
data/CHANGELOG.txt
ADDED
data/lib/postcodeapi/api.rb
CHANGED
@@ -1,18 +1,23 @@
|
|
1
1
|
module Postcode
|
2
2
|
# You're required to sign up for an api key at http://postcodeapi.nu
|
3
3
|
class API
|
4
|
-
|
5
|
-
|
6
|
-
base_uri "http://api.postcodeapi.nu"
|
4
|
+
BASE_URI = "http://api.postcodeapi.nu"
|
7
5
|
|
8
6
|
def initialize(api_key)
|
9
7
|
@api_key = api_key
|
10
8
|
end
|
11
9
|
|
12
|
-
def postcode(postcode, options = {})
|
13
|
-
|
14
|
-
|
15
|
-
|
10
|
+
def postcode(postcode, house_number = nil, options = {})
|
11
|
+
uri = URI.parse([BASE_URI, postcode, house_number].compact.join('/'))
|
12
|
+
|
13
|
+
req = Net::HTTP::Get.new(uri.path)
|
14
|
+
req.add_field('Api-Key', @api_key)
|
15
|
+
|
16
|
+
res = Net::HTTP.new(uri.host, uri.port).start do |http|
|
17
|
+
http.request(req)
|
18
|
+
end
|
19
|
+
|
20
|
+
Hashie::Mash.new(JSON.parse(res.body))
|
16
21
|
end
|
17
22
|
end
|
18
23
|
end
|
data/lib/postcodeapi/version.rb
CHANGED
data/lib/postcodeapi.rb
CHANGED
data/postcodeapi.gemspec
CHANGED
@@ -17,7 +17,6 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ["lib"]
|
19
19
|
|
20
|
-
gem.add_dependency 'httparty', '~> 0.10.2'
|
21
20
|
gem.add_dependency 'hashie', '~> 1.2.0'
|
22
21
|
|
23
22
|
gem.add_development_dependency 'rake', '~> 10.0.3'
|
@@ -1,9 +1,7 @@
|
|
1
1
|
require File.expand_path('../../spec_helper', __FILE__)
|
2
2
|
|
3
3
|
describe Postcode::API do
|
4
|
-
|
5
4
|
context "without a valid API key" do
|
6
|
-
|
7
5
|
before do
|
8
6
|
body = '{"success":false,"error":{"code":401,"message":"A valid \'Api-Key\' needs to be provided in the \'Headers\' in order to use this API."}}'
|
9
7
|
stub_request(:get, "http://api.postcodeapi.nu/5041EB").
|
@@ -22,25 +20,48 @@ describe Postcode::API do
|
|
22
20
|
end
|
23
21
|
|
24
22
|
context "with a valid API key" do
|
23
|
+
context "with postcode only" do
|
24
|
+
before do
|
25
|
+
body = '{"success":true,"resource":{"street":"Wilhelminapark","postcode":"5041EB","town":"Tilburg","latitude":51.9401,"longitude":5.61531}}'
|
26
|
+
stub_request(:get, "http://api.postcodeapi.nu/5041EB").
|
27
|
+
with(:headers => {'Api-Key'=>'valid'}).
|
28
|
+
to_return(:status => 401, :body => body, :headers => {"Content-Type" => "application/json"})
|
29
|
+
end
|
25
30
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
+
subject(:api) { Postcode::API.new("valid") }
|
32
|
+
|
33
|
+
it 'returns an error response' do
|
34
|
+
result = api.postcode('5041EB')
|
35
|
+
|
36
|
+
result.success.should be_true
|
37
|
+
result.resource.street.should eq("Wilhelminapark")
|
38
|
+
result.resource.postcode.should eq("5041EB")
|
39
|
+
result.resource.town.should eq("Tilburg")
|
40
|
+
result.resource.latitude.should eq(51.9401)
|
41
|
+
result.resource.longitude.should eq(5.61531)
|
42
|
+
end
|
31
43
|
end
|
32
44
|
|
33
|
-
|
45
|
+
context "with postcode and house number" do
|
46
|
+
before do
|
47
|
+
body = '{"success":true,"resource":{"street":"Wilhelminapark","postcode":"5041EB","town":"Tilburg","latitude":51.9401,"longitude":5.61531}}'
|
48
|
+
stub_request(:get, "http://api.postcodeapi.nu/5041EB/21").
|
49
|
+
with(:headers => {'Api-Key'=>'valid'}).
|
50
|
+
to_return(:status => 401, :body => body, :headers => {"Content-Type" => "application/json"})
|
51
|
+
end
|
34
52
|
|
35
|
-
|
36
|
-
|
53
|
+
subject(:api) { Postcode::API.new("valid") }
|
54
|
+
|
55
|
+
it 'returns an error response' do
|
56
|
+
result = api.postcode('5041EB', 21)
|
37
57
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
58
|
+
result.success.should be_true
|
59
|
+
result.resource.street.should eq("Wilhelminapark")
|
60
|
+
result.resource.postcode.should eq("5041EB")
|
61
|
+
result.resource.town.should eq("Tilburg")
|
62
|
+
result.resource.latitude.should eq(51.9401)
|
63
|
+
result.resource.longitude.should eq(5.61531)
|
64
|
+
end
|
44
65
|
end
|
45
66
|
end
|
46
67
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: postcodeapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,24 +9,8 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-03-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: httparty
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: 0.10.2
|
22
|
-
type: :runtime
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: 0.10.2
|
30
14
|
- !ruby/object:Gem::Dependency
|
31
15
|
name: hashie
|
32
16
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,10 +85,12 @@ files:
|
|
101
85
|
- .gitignore
|
102
86
|
- .rspec
|
103
87
|
- .travis.yml
|
88
|
+
- CHANGELOG.txt
|
104
89
|
- Gemfile
|
105
90
|
- LICENSE.txt
|
106
91
|
- README.md
|
107
92
|
- Rakefile
|
93
|
+
- examples/postcode-lookup.rb
|
108
94
|
- lib/postcodeapi.rb
|
109
95
|
- lib/postcodeapi/api.rb
|
110
96
|
- lib/postcodeapi/version.rb
|
@@ -125,7 +111,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
125
111
|
version: '0'
|
126
112
|
segments:
|
127
113
|
- 0
|
128
|
-
hash: -
|
114
|
+
hash: -3892934662629252101
|
129
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
116
|
none: false
|
131
117
|
requirements:
|
@@ -134,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
134
120
|
version: '0'
|
135
121
|
segments:
|
136
122
|
- 0
|
137
|
-
hash: -
|
123
|
+
hash: -3892934662629252101
|
138
124
|
requirements: []
|
139
125
|
rubyforge_project:
|
140
126
|
rubygems_version: 1.8.25
|