postcodes_io 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/workflows/gem-push.yml +43 -0
- data/.github/workflows/ruby.yml +35 -0
- data/README.md +12 -1
- data/lib/postcodes_io/lookup_terminated.rb +33 -0
- data/lib/postcodes_io/version.rb +1 -1
- data/lib/postcodes_io.rb +7 -5
- data/postcodes_io.gemspec +2 -2
- data/spec/fixtures/lookup_terminated_response.json +10 -0
- data/spec/lookup_terminated_spec.rb +26 -0
- metadata +18 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2c6a93dd223ae7a6cc8c04b1f7079f955eb4d93d0ebab8bd14f6cffa87f57b82
|
4
|
+
data.tar.gz: 28052e4ba75fa32901fc03b8997cbc67575df1e97c7902fbead915086b88f758
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3cb7ab91ceba1f04d2aed32d96a5c4b1c9754c06fef797246311ed340aeaa78cd69157f05f59a9a47d04f6ba3c8d66a537108cd361f00940d30a3189e88b1342
|
7
|
+
data.tar.gz: e91286586e6dd99db43ae487df61d621df6e623877facc54117a132eab964a2f8d506c3c27fb8655d956a771bce39ec0859f3398b3375253b54b2766b678fe2f
|
@@ -0,0 +1,43 @@
|
|
1
|
+
name: Ruby Gem
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
build:
|
9
|
+
name: Build + Publish
|
10
|
+
runs-on: ubuntu-latest
|
11
|
+
permissions:
|
12
|
+
contents: read
|
13
|
+
packages: write
|
14
|
+
|
15
|
+
steps:
|
16
|
+
- uses: actions/checkout@v2
|
17
|
+
- name: Set up Ruby 2.6
|
18
|
+
uses: actions/setup-ruby@v1
|
19
|
+
with:
|
20
|
+
ruby-version: 2.6.x
|
21
|
+
|
22
|
+
- name: Publish to GPR
|
23
|
+
run: |
|
24
|
+
mkdir -p $HOME/.gem
|
25
|
+
touch $HOME/.gem/credentials
|
26
|
+
chmod 0600 $HOME/.gem/credentials
|
27
|
+
printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
28
|
+
gem build *.gemspec
|
29
|
+
gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem
|
30
|
+
env:
|
31
|
+
GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}"
|
32
|
+
OWNER: ${{ github.repository_owner }}
|
33
|
+
|
34
|
+
- name: Publish to RubyGems
|
35
|
+
run: |
|
36
|
+
mkdir -p $HOME/.gem
|
37
|
+
touch $HOME/.gem/credentials
|
38
|
+
chmod 0600 $HOME/.gem/credentials
|
39
|
+
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
40
|
+
gem build *.gemspec
|
41
|
+
gem push *.gem
|
42
|
+
env:
|
43
|
+
GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
2
|
+
# They are provided by a third-party and are governed by
|
3
|
+
# separate terms of service, privacy policy, and support
|
4
|
+
# documentation.
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
+
|
8
|
+
name: Ruby
|
9
|
+
|
10
|
+
on:
|
11
|
+
push:
|
12
|
+
branches: [ master ]
|
13
|
+
pull_request:
|
14
|
+
branches: [ master ]
|
15
|
+
|
16
|
+
jobs:
|
17
|
+
test:
|
18
|
+
|
19
|
+
runs-on: ubuntu-latest
|
20
|
+
strategy:
|
21
|
+
matrix:
|
22
|
+
ruby-version: ['2.6', '2.7', '3.0']
|
23
|
+
|
24
|
+
steps:
|
25
|
+
- uses: actions/checkout@v2
|
26
|
+
- name: Set up Ruby
|
27
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
28
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
29
|
+
# uses: ruby/setup-ruby@v1
|
30
|
+
uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
|
31
|
+
with:
|
32
|
+
ruby-version: ${{ matrix.ruby-version }}
|
33
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
34
|
+
- name: Run tests
|
35
|
+
run: bundle exec rake
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
[![Build Status](https://travis-ci.org/jamesruston/postcodes_io.svg?branch=master)](https://travis-ci.org/jamesruston/postcodes_io)
|
1
|
+
[![Build Status](https://travis-ci.org/jamesruston/postcodes_io.svg?branch=master)](https://travis-ci.org/jamesruston/postcodes_io) [![Gem Version](https://badge.fury.io/rb/postcodes_io.svg)](https://badge.fury.io/rb/postcodes_io)
|
2
2
|
# PostcodesIo
|
3
3
|
|
4
4
|
A simple wrapper around [postcodes.io](http://postcodes.io/)
|
@@ -70,6 +70,17 @@ postcodes = pio.reverse_geocode(longitude: 0.629834, latitude: 51.79232)
|
|
70
70
|
puts postcodes.first.postcode # CM8 1EF
|
71
71
|
```
|
72
72
|
|
73
|
+
### Lookup a terminated postcode
|
74
|
+
```ruby
|
75
|
+
postcode = pio.lookup_terminated('SO23 7SP')
|
76
|
+
```
|
77
|
+
|
78
|
+
Inspect the results!
|
79
|
+
```ruby
|
80
|
+
postcode.longitude # -1.02144562675883
|
81
|
+
postcode.latitude # 52.0776806788868
|
82
|
+
```
|
83
|
+
|
73
84
|
### All available fields
|
74
85
|
|
75
86
|
|name|description|
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'excon'
|
2
|
+
require 'json'
|
3
|
+
require 'postcodes_io/postcode'
|
4
|
+
|
5
|
+
module Postcodes
|
6
|
+
module LookupTerminated
|
7
|
+
def lookup_terminated(postcode)
|
8
|
+
lookup_terminated_postcode postcode
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def lookup_terminated_postcode(postcode)
|
14
|
+
postcode = remove_whitespace postcode
|
15
|
+
response = Excon.get("https://api.postcodes.io/terminated_postcodes/#{postcode}")
|
16
|
+
|
17
|
+
unless response.status == 404
|
18
|
+
parsed_response = JSON.parse(response.body)
|
19
|
+
return Postcodes::Postcode.new(parsed_response['result'])
|
20
|
+
end
|
21
|
+
nil
|
22
|
+
end
|
23
|
+
|
24
|
+
def remove_whitespace(string)
|
25
|
+
string.gsub(/\s+/, '') # remove any whitespace. m1 1ab => m11ab
|
26
|
+
end
|
27
|
+
|
28
|
+
def process_response(response)
|
29
|
+
yield JSON.parse(response.body) unless response.status == 404
|
30
|
+
nil
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/postcodes_io/version.rb
CHANGED
data/lib/postcodes_io.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
1
|
+
require 'postcodes_io/version'
|
2
|
+
require 'postcodes_io/lookup'
|
3
|
+
require 'postcodes_io/autocomplete'
|
4
|
+
require 'postcodes_io/postcode'
|
5
|
+
require 'postcodes_io/reverse_geocode'
|
6
|
+
require 'postcodes_io/lookup_terminated'
|
6
7
|
|
7
8
|
module Postcodes
|
8
9
|
class IO
|
9
10
|
include Lookup
|
10
11
|
include Autocomplete
|
11
12
|
include ReverseGeocode
|
13
|
+
include LookupTerminated
|
12
14
|
end
|
13
15
|
end
|
data/postcodes_io.gemspec
CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler"
|
22
|
-
spec.add_development_dependency "rake"
|
21
|
+
spec.add_development_dependency "bundler"
|
22
|
+
spec.add_development_dependency "rake"
|
23
23
|
spec.add_development_dependency "rspec"
|
24
24
|
spec.add_development_dependency "webmock"
|
25
25
|
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Postcodes::IO do
|
4
|
+
let(:base_url) { 'https://api.postcodes.io' }
|
5
|
+
let(:stub_response) { File.read('spec/fixtures/lookup_terminated_response.json') }
|
6
|
+
|
7
|
+
describe '#lookup_terminated' do
|
8
|
+
before :each do
|
9
|
+
stub_request(:get, "#{base_url}/terminated_postcodes/CM129TR")
|
10
|
+
.to_return(status: 200, body: stub_response)
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:input) { 'CM12 9TR' }
|
14
|
+
let(:output) { subject.lookup_terminated(input) }
|
15
|
+
|
16
|
+
it 'requests a terminated postcode' do
|
17
|
+
output
|
18
|
+
WebMock.should have_requested(:get, "#{base_url}/terminated_postcodes/CM129TR")
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'returns the long and lat' do
|
22
|
+
output.longitude.should == -1.316261
|
23
|
+
output.latitude.should == 51.062297
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: postcodes_io
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Ruston
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,6 +87,8 @@ executables: []
|
|
87
87
|
extensions: []
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
|
+
- ".github/workflows/gem-push.yml"
|
91
|
+
- ".github/workflows/ruby.yml"
|
90
92
|
- ".gitignore"
|
91
93
|
- ".rspec"
|
92
94
|
- ".travis.yml"
|
@@ -99,6 +101,7 @@ files:
|
|
99
101
|
- lib/postcodes_io/autocomplete_list.rb
|
100
102
|
- lib/postcodes_io/base.rb
|
101
103
|
- lib/postcodes_io/lookup.rb
|
104
|
+
- lib/postcodes_io/lookup_terminated.rb
|
102
105
|
- lib/postcodes_io/postcode.rb
|
103
106
|
- lib/postcodes_io/reverse_geocode.rb
|
104
107
|
- lib/postcodes_io/version.rb
|
@@ -107,9 +110,11 @@ files:
|
|
107
110
|
- spec/fixtures/autocomplete_response.json
|
108
111
|
- spec/fixtures/lookup_multi_response.json
|
109
112
|
- spec/fixtures/lookup_response.json
|
113
|
+
- spec/fixtures/lookup_terminated_response.json
|
110
114
|
- spec/fixtures/no_results_response.json
|
111
115
|
- spec/fixtures/reverse_geocode_response.json
|
112
116
|
- spec/lookup_spec.rb
|
117
|
+
- spec/lookup_terminated_spec.rb
|
113
118
|
- spec/postcode_io_spec.rb
|
114
119
|
- spec/reverse_geocode_spec.rb
|
115
120
|
- spec/spec_helper.rb
|
@@ -132,8 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
132
137
|
- !ruby/object:Gem::Version
|
133
138
|
version: '0'
|
134
139
|
requirements: []
|
135
|
-
|
136
|
-
rubygems_version: 2.5.1
|
140
|
+
rubygems_version: 3.0.3.1
|
137
141
|
signing_key:
|
138
142
|
specification_version: 4
|
139
143
|
summary: Lookup postcodes
|
@@ -142,9 +146,11 @@ test_files:
|
|
142
146
|
- spec/fixtures/autocomplete_response.json
|
143
147
|
- spec/fixtures/lookup_multi_response.json
|
144
148
|
- spec/fixtures/lookup_response.json
|
149
|
+
- spec/fixtures/lookup_terminated_response.json
|
145
150
|
- spec/fixtures/no_results_response.json
|
146
151
|
- spec/fixtures/reverse_geocode_response.json
|
147
152
|
- spec/lookup_spec.rb
|
153
|
+
- spec/lookup_terminated_spec.rb
|
148
154
|
- spec/postcode_io_spec.rb
|
149
155
|
- spec/reverse_geocode_spec.rb
|
150
156
|
- spec/spec_helper.rb
|