locations_ng 0.0.1 → 0.0.3
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 +4 -4
- data/lib/locations_ng/city.rb +28 -0
- data/lib/locations_ng/lga.rb +20 -0
- data/lib/locations_ng/locations/cities.yml +131 -80
- data/lib/locations_ng/locations/states.yml +37 -0
- data/lib/locations_ng/state.rb +30 -7
- data/lib/locations_ng/version.rb +1 -1
- data/lib/locations_ng.rb +3 -0
- data/spec/locations_ng/city_spec.rb +29 -0
- data/spec/locations_ng/lga_spec.rb +26 -0
- data/spec/locations_ng/state_spec.rb +48 -13
- data/spec/responses/cities.json +142 -0
- metadata +9 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13638137e9d4048e7fed3d8dbdb1deb1882831fd
|
4
|
+
data.tar.gz: b0bc09942b1cc6a91ecde3f3b7c5fc328427fec2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe47a5238748be0c1d4fe7a0ee056ec212e06dc7aff2a84923fe6be1cc22330e2af004e415b67571d71c213e2d5e78a462ae8ded37a817ea5d74397c26a5c3ba
|
7
|
+
data.tar.gz: 336ea084da2989c54854988be9462a9e62e798f7d15f789682ef00d620c717ad6000768e64098c73510b2f6a54ea45cf6624a2ca7887c1f0c304ef78537ebc75
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module LocationsNg
|
2
|
+
class City
|
3
|
+
def all
|
4
|
+
load_cities
|
5
|
+
end
|
6
|
+
|
7
|
+
def cities(state)
|
8
|
+
state = state.downcase.gsub(' ', '_')
|
9
|
+
city_index = load_cities.index{|c| c['alias'] == state}
|
10
|
+
|
11
|
+
if city_index.nil?
|
12
|
+
{message: "No cities found for '#{state}'", status: 404}
|
13
|
+
else
|
14
|
+
load_cities[city_index]['cities']
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def load_cities
|
21
|
+
YAML.load(File.read(files_location 'cities'))
|
22
|
+
end
|
23
|
+
|
24
|
+
def files_location(file)
|
25
|
+
File.expand_path("../locations/#{file}.yml", __FILE__)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module LocationsNg
|
2
|
+
class Lga
|
3
|
+
def lgas(state)
|
4
|
+
state = state.downcase.gsub(' ', '_')
|
5
|
+
|
6
|
+
res = load_lgas.map{|l| l[0] if l[1] == state.capitalize}.compact
|
7
|
+
res.empty? ? {message: "No lgas found for '#{state}'", :status=>404} : res
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def load_lgas
|
13
|
+
YAML.load(File.read(files_location 'lgas'))
|
14
|
+
end
|
15
|
+
|
16
|
+
def files_location(file)
|
17
|
+
File.expand_path("../locations/#{file}.yml", __FILE__)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -1,81 +1,132 @@
|
|
1
1
|
---
|
2
|
-
-
|
3
|
-
|
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
|
-
|
67
|
-
|
68
|
-
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
-
|
73
|
-
|
74
|
-
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
-
|
79
|
-
|
80
|
-
|
81
|
-
|
2
|
+
- state: Akwa Ibom
|
3
|
+
alias: akwa_ibom
|
4
|
+
cities:
|
5
|
+
- Eket
|
6
|
+
- Ikot Ekpene
|
7
|
+
- Oron
|
8
|
+
- Uyo
|
9
|
+
- state: Bauchi
|
10
|
+
alias: bauchi
|
11
|
+
cities:
|
12
|
+
- Bauchi
|
13
|
+
- state: Benue
|
14
|
+
alias: benue
|
15
|
+
cities:
|
16
|
+
- Makurdi
|
17
|
+
- state: Borno
|
18
|
+
alias: borno
|
19
|
+
cities:
|
20
|
+
- Bama
|
21
|
+
- Maiduguri
|
22
|
+
- state: Bayelsa
|
23
|
+
alias: bayelsa
|
24
|
+
cities:
|
25
|
+
- Yenagoa
|
26
|
+
- state: Delta
|
27
|
+
alias: delta
|
28
|
+
cities:
|
29
|
+
- Sapele
|
30
|
+
- state: Ebonyi
|
31
|
+
alias: ebonyi
|
32
|
+
cities:
|
33
|
+
- Abakaliki
|
34
|
+
- state: Ekiti
|
35
|
+
alias: ekiti
|
36
|
+
cities:
|
37
|
+
- Ado Ekiti
|
38
|
+
- state: Enugu
|
39
|
+
alias: enugu
|
40
|
+
cities:
|
41
|
+
- Enugu
|
42
|
+
- Nsukka
|
43
|
+
- Agbani
|
44
|
+
- Awgu
|
45
|
+
- Udi
|
46
|
+
- Oji-River
|
47
|
+
- state: Gombe
|
48
|
+
alias: gombe
|
49
|
+
cities:
|
50
|
+
- Gombe
|
51
|
+
- state: Jigawa
|
52
|
+
alias: jigawa
|
53
|
+
cities:
|
54
|
+
- Dutse
|
55
|
+
- state: Imo
|
56
|
+
alias: imo
|
57
|
+
cities:
|
58
|
+
- Okigwe
|
59
|
+
- Orlu
|
60
|
+
- state: Kaduna
|
61
|
+
alias: kaduna
|
62
|
+
cities:
|
63
|
+
- Kaduna
|
64
|
+
- Zaria
|
65
|
+
- state: Kebbi
|
66
|
+
alias: kebbi
|
67
|
+
cities:
|
68
|
+
- Birnin Kebbi
|
69
|
+
- state: Kogi
|
70
|
+
alias: kogi
|
71
|
+
cities:
|
72
|
+
- Lokoja
|
73
|
+
- Okene
|
74
|
+
- state: Lagos
|
75
|
+
alias: lagos
|
76
|
+
cities:
|
77
|
+
- Agege
|
78
|
+
- Ikeja
|
79
|
+
- state: Katsina
|
80
|
+
alias: katsina
|
81
|
+
cities:
|
82
|
+
- Funtua
|
83
|
+
- Katsina
|
84
|
+
- state: Kwara
|
85
|
+
alias: kwara
|
86
|
+
cities:
|
87
|
+
- Offa
|
88
|
+
- Ilorin
|
89
|
+
- state: Nasarawa
|
90
|
+
alias: nasarawa
|
91
|
+
cities:
|
92
|
+
- Lafia
|
93
|
+
- state: Niger
|
94
|
+
alias: niger
|
95
|
+
cities:
|
96
|
+
- Bida
|
97
|
+
- Suleja
|
98
|
+
- state: Ogun
|
99
|
+
alias: ogun
|
100
|
+
cities:
|
101
|
+
- Ijebu Ode
|
102
|
+
- Shagamu
|
103
|
+
- state: Ondo
|
104
|
+
alias: ondo
|
105
|
+
cities:
|
106
|
+
- Owo
|
107
|
+
- state: Rivers
|
108
|
+
alias: rivers
|
109
|
+
cities:
|
110
|
+
- Port Harcourt
|
111
|
+
- state: Oyo
|
112
|
+
alias: oyo
|
113
|
+
cities:
|
114
|
+
- Oyo
|
115
|
+
- state: Osun
|
116
|
+
alias: osun
|
117
|
+
cities:
|
118
|
+
- Iwo
|
119
|
+
- Osogbo
|
120
|
+
- state: Taraba
|
121
|
+
alias: taraba
|
122
|
+
cities:
|
123
|
+
- Wukari
|
124
|
+
- state: Yobe
|
125
|
+
alias: yobe
|
126
|
+
cities:
|
127
|
+
- Nguru
|
128
|
+
- Potiskum
|
129
|
+
- state: Zamfara
|
130
|
+
alias: zamfara
|
131
|
+
cities:
|
132
|
+
- Gusau
|
@@ -7,6 +7,7 @@
|
|
7
7
|
maxLat: 6.0191921
|
8
8
|
longitude: 7.524724300000001
|
9
9
|
maxLong: 7.9630091
|
10
|
+
alias: abia
|
10
11
|
- minLat: 7.452592
|
11
12
|
name: Adamawa
|
12
13
|
capital: Yola
|
@@ -15,6 +16,7 @@
|
|
15
16
|
maxLat: 10.943588
|
16
17
|
longitude: 12.4380581
|
17
18
|
maxLong: 13.6924919
|
19
|
+
alias: adamawa
|
18
20
|
- minLat: 4.4780049
|
19
21
|
name: Akwa Ibom
|
20
22
|
capital: Uyo
|
@@ -23,6 +25,7 @@
|
|
23
25
|
maxLat: 5.530245
|
24
26
|
longitude: 7.872159999999999
|
25
27
|
maxLong: 8.340371
|
28
|
+
alias: akwa_ibom
|
26
29
|
- minLat: 5.692615000000001
|
27
30
|
name: Anambra
|
28
31
|
capital: Awka
|
@@ -31,6 +34,7 @@
|
|
31
34
|
maxLat: 6.7795999
|
32
35
|
longitude: 7.0068393
|
33
36
|
maxLong: 7.355934
|
37
|
+
alias: anambra
|
34
38
|
- minLat: 10.255381
|
35
39
|
name: Bauchi
|
36
40
|
capital: Bauchi
|
@@ -39,6 +43,7 @@
|
|
39
43
|
maxLat: 10.3398292
|
40
44
|
longitude: 9.844166999999999
|
41
45
|
maxLong: 9.864006
|
46
|
+
alias: bauchi
|
42
47
|
- minLat: 6.4427789
|
43
48
|
name: Benue
|
44
49
|
capital: Makurdi
|
@@ -47,6 +52,7 @@
|
|
47
52
|
maxLat: 8.149299
|
48
53
|
longitude: 8.8362755
|
49
54
|
maxLong: 9.918301
|
55
|
+
alias: benue
|
50
56
|
- minLat: 10.0291549
|
51
57
|
name: Borno
|
52
58
|
capital: Maiduguri
|
@@ -55,6 +61,7 @@
|
|
55
61
|
maxLat: 13.7144441
|
56
62
|
longitude: 12.9789121
|
57
63
|
maxLong: 14.680073
|
64
|
+
alias: borno
|
58
65
|
- minLat: 4.2771439
|
59
66
|
name: Bayelsa
|
60
67
|
capital: Yenagoa
|
@@ -63,6 +70,7 @@
|
|
63
70
|
maxLat: 5.3933139
|
64
71
|
longitude: 5.898713900000001
|
65
72
|
maxLong: 6.724865899999999
|
73
|
+
alias: bayelsa
|
66
74
|
- minLat: 4.690596000000001
|
67
75
|
name: Cross River
|
68
76
|
capital: Calabar
|
@@ -71,6 +79,7 @@
|
|
71
79
|
maxLat: 6.899680999999999
|
72
80
|
longitude: 8.6600586
|
73
81
|
maxLong: 9.472486
|
82
|
+
alias: cross_river
|
74
83
|
- minLat: 5.024351999999999
|
75
84
|
name: Delta
|
76
85
|
capital: Asaba
|
@@ -79,6 +88,7 @@
|
|
79
88
|
maxLat: 6.5248195
|
80
89
|
longitude: 5.898713900000001
|
81
90
|
maxLong: 6.7653911
|
91
|
+
alias: delta
|
82
92
|
- minLat: 5.6873539
|
83
93
|
name: Ebonyi
|
84
94
|
capital: Abakaliki
|
@@ -87,6 +97,7 @@
|
|
87
97
|
maxLat: 6.807093
|
88
98
|
longitude: 7.959286299999999
|
89
99
|
maxLong: 8.4470269
|
100
|
+
alias: ebonyi
|
90
101
|
- minLat: 5.7386799
|
91
102
|
name: Edo
|
92
103
|
capital: Benin
|
@@ -95,6 +106,7 @@
|
|
95
106
|
maxLat: 7.5721479
|
96
107
|
longitude: 5.898713900000001
|
97
108
|
maxLong: 6.707891000000001
|
109
|
+
alias: edo
|
98
110
|
- minLat: 7.272215999999999
|
99
111
|
name: Ekiti
|
100
112
|
capital: Ado-Ekiti
|
@@ -103,6 +115,7 @@
|
|
103
115
|
maxLat: 8.0674911
|
104
116
|
longitude: 5.3102505
|
105
117
|
maxLong: 5.8048959
|
118
|
+
alias: ekiti
|
106
119
|
- minLat: 6.360852
|
107
120
|
name: Enugu
|
108
121
|
capital: Enugu
|
@@ -111,6 +124,7 @@
|
|
111
124
|
maxLat: 6.5155669
|
112
125
|
longitude: 7.510332999999998
|
113
126
|
maxLong: 7.618160199999999
|
127
|
+
alias: enugu
|
114
128
|
- minLat: 8.396675
|
115
129
|
name: Federal Capital Territory
|
116
130
|
capital: Abuja
|
@@ -119,6 +133,7 @@
|
|
119
133
|
maxLat: 9.3574219
|
120
134
|
longitude: 7.179025999999999
|
121
135
|
maxLong: 7.617400000000001
|
136
|
+
alias: abuja
|
122
137
|
- minLat: 10.264117
|
123
138
|
name: Gombe
|
124
139
|
capital: Gombe
|
@@ -127,6 +142,7 @@
|
|
127
142
|
maxLat: 10.3128497
|
128
143
|
longitude: 11.166667
|
129
144
|
maxLong: 11.2147019
|
145
|
+
alias: gombe
|
130
146
|
- minLat: 12.5688205
|
131
147
|
name: Jigawa
|
132
148
|
capital: Dutse
|
@@ -135,6 +151,7 @@
|
|
135
151
|
maxLat: 12.5708993
|
136
152
|
longitude: 8.9400589
|
137
153
|
maxLong: 8.9410364
|
154
|
+
alias: jigawa
|
138
155
|
- minLat: 5.179824000000001
|
139
156
|
name: Imo
|
140
157
|
capital: Owerri
|
@@ -143,6 +160,7 @@
|
|
143
160
|
maxLat: 5.928465
|
144
161
|
longitude: 6.920913499999999
|
145
162
|
maxLong: 7.404109
|
163
|
+
alias: imo
|
146
164
|
- minLat: 10.3971566
|
147
165
|
name: Kaduna
|
148
166
|
capital: Kaduna
|
@@ -151,6 +169,7 @@
|
|
151
169
|
maxLat: 10.6169963
|
152
170
|
longitude: 7.433332999999999
|
153
171
|
maxLong: 7.508812000000001
|
172
|
+
alias: kaduna
|
154
173
|
- minLat: 10.0931591
|
155
174
|
name: Kebbi
|
156
175
|
capital: Birnin Kebbi
|
@@ -159,6 +178,7 @@
|
|
159
178
|
maxLat: 13.232542
|
160
179
|
longitude: 4.0695454
|
161
180
|
maxLong: 6.027123
|
181
|
+
alias: kebbi
|
162
182
|
- minLat: 11.912873
|
163
183
|
name: Kano
|
164
184
|
capital: Kano
|
@@ -167,6 +187,7 @@
|
|
167
187
|
maxLat: 12.0829016
|
168
188
|
longitude: 8.591956099999999
|
169
189
|
maxLong: 8.6704765
|
190
|
+
alias: kano
|
170
191
|
- minLat: 6.528274199999999
|
171
192
|
name: Kogi
|
172
193
|
capital: Lokoja
|
@@ -175,6 +196,7 @@
|
|
175
196
|
maxLat: 8.7320238
|
176
197
|
longitude: 6.5783387
|
177
198
|
maxLong: 7.8822179
|
199
|
+
alias: kogi
|
178
200
|
- minLat: 6.3936419
|
179
201
|
name: Lagos
|
180
202
|
capital: Ikeja
|
@@ -183,6 +205,7 @@
|
|
183
205
|
maxLat: 6.7027984
|
184
206
|
longitude: 3.3792057
|
185
207
|
maxLong: 3.696727799999999
|
208
|
+
alias: lagos
|
186
209
|
- minLat: 12.934095
|
187
210
|
name: Katsina
|
188
211
|
capital: Katsina
|
@@ -191,6 +214,7 @@
|
|
191
214
|
maxLat: 13.0357094
|
192
215
|
longitude: 7.6
|
193
216
|
maxLong: 7.676266000000001
|
217
|
+
alias: katsina
|
194
218
|
- minLat: 7.966079000000001
|
195
219
|
name: Kwara
|
196
220
|
capital: Ilorin
|
@@ -199,6 +223,7 @@
|
|
199
223
|
maxLat: 10.152084
|
200
224
|
longitude: 4.5624426
|
201
225
|
maxLong: 6.2142591
|
226
|
+
alias: kwara
|
202
227
|
- minLat: 7.769181
|
203
228
|
name: Nasarawa
|
204
229
|
capital: Lafia
|
@@ -207,6 +232,7 @@
|
|
207
232
|
maxLat: 9.365964000000002
|
208
233
|
longitude: 8.3088441
|
209
234
|
maxLong: 9.605724
|
235
|
+
alias: nasarawa
|
210
236
|
- minLat: 4.269857099999999
|
211
237
|
name: Niger
|
212
238
|
capital: Minna
|
@@ -215,6 +241,7 @@
|
|
215
241
|
maxLat: 13.885645
|
216
242
|
longitude: 8.675277
|
217
243
|
maxLong: 14.677982
|
244
|
+
alias: niger
|
218
245
|
- minLat: 6.315346099999999
|
219
246
|
name: Ogun
|
220
247
|
capital: Abeokuta
|
@@ -223,6 +250,7 @@
|
|
223
250
|
maxLat: 7.974634999999999
|
224
251
|
longitude: 3.2583626
|
225
252
|
maxLong: 4.5990951
|
253
|
+
alias: ogun
|
226
254
|
- minLat: 7.0529381
|
227
255
|
name: Ondo
|
228
256
|
capital: Akure
|
@@ -231,6 +259,7 @@
|
|
231
259
|
maxLat: 7.1249106
|
232
260
|
longitude: 4.833333
|
233
261
|
maxLong: 4.871921599999999
|
262
|
+
alias: ondo
|
234
263
|
- minLat: 4.347035099999999
|
235
264
|
name: Rivers
|
236
265
|
capital: Port Harcourt
|
@@ -239,6 +268,7 @@
|
|
239
268
|
maxLat: 5.694652899999999
|
240
269
|
longitude: 6.920913499999999
|
241
270
|
maxLong: 7.591592899999998
|
271
|
+
alias: rivers
|
242
272
|
- minLat: 7.790425099999999
|
243
273
|
name: Oyo
|
244
274
|
capital: Ibadan
|
@@ -247,6 +277,7 @@
|
|
247
277
|
maxLat: 7.8899933
|
248
278
|
longitude: 3.933
|
249
279
|
maxLong: 3.9751624
|
280
|
+
alias: oyo
|
250
281
|
- minLat: 6.969976
|
251
282
|
name: Osun
|
252
283
|
capital: Osogbo
|
@@ -255,6 +286,7 @@
|
|
255
286
|
maxLat: 8.088640999999999
|
256
287
|
longitude: 4.5624426
|
257
288
|
maxLong: 5.0647019
|
289
|
+
alias: osun
|
258
290
|
- minLat: 12.9764148
|
259
291
|
name: Sokoto
|
260
292
|
capital: Sokoto
|
@@ -263,6 +295,7 @@
|
|
263
295
|
maxLat: 13.0880893
|
264
296
|
longitude: 5.233333
|
265
297
|
maxLong: 5.2881144
|
298
|
+
alias: sokoto
|
266
299
|
- minLat: 8.350639
|
267
300
|
name: Plateau
|
268
301
|
capital: Jos
|
@@ -271,6 +304,7 @@
|
|
271
304
|
maxLat: 10.3447241
|
272
305
|
longitude: 9.7232673
|
273
306
|
maxLong: 10.6606639
|
307
|
+
alias: plateau
|
274
308
|
- minLat: 6.502453999999999
|
275
309
|
name: Taraba
|
276
310
|
capital: Jalingo
|
@@ -279,6 +313,7 @@
|
|
279
313
|
maxLat: 9.604444899999999
|
280
314
|
longitude: 10.9807003
|
281
315
|
maxLong: 11.981274
|
316
|
+
alias: taraba
|
282
317
|
- minLat: 10.5932052
|
283
318
|
name: Yobe
|
284
319
|
capital: Damaturu
|
@@ -287,6 +322,7 @@
|
|
287
322
|
maxLat: 13.376133
|
288
323
|
longitude: 11.7068294
|
289
324
|
maxLong: 12.494047
|
325
|
+
alias: yobe
|
290
326
|
- minLat: 10.854616
|
291
327
|
name: Zamfara
|
292
328
|
capital: Gusau
|
@@ -295,3 +331,4 @@
|
|
295
331
|
maxLat: 13.207291
|
296
332
|
longitude: 6.2375947
|
297
333
|
maxLong: 7.245729999999999
|
334
|
+
alias: zamfara
|
data/lib/locations_ng/state.rb
CHANGED
@@ -1,19 +1,42 @@
|
|
1
1
|
module LocationsNg
|
2
2
|
class State
|
3
|
-
|
3
|
+
def all
|
4
|
+
load_states.map{ |s| {name: s['name'], capital: s['capital']} }
|
5
|
+
end
|
6
|
+
|
7
|
+
def details(state)
|
8
|
+
state = state.downcase.gsub(' ', '_')
|
9
|
+
all_states = load_states
|
10
|
+
|
11
|
+
state_index = all_states.index{|s| s['alias'] == state}
|
4
12
|
|
5
|
-
|
6
|
-
|
13
|
+
if state_index.nil?
|
14
|
+
{message: "No state found for '#{state}'", status: 404}
|
15
|
+
else
|
16
|
+
res = all_states[state_index].with_indifferent_access
|
17
|
+
res['cities'] = LocationsNg::City.new.cities(state)
|
18
|
+
res['lgas'] = LocationsNg::Lga.new.lgas(state)
|
19
|
+
res
|
20
|
+
end
|
7
21
|
end
|
8
22
|
|
9
|
-
def
|
10
|
-
|
23
|
+
def capital(state)
|
24
|
+
state = state.downcase.gsub(' ', '_')
|
25
|
+
all_states = load_states
|
26
|
+
|
27
|
+
state_index = all_states.index{|s| s['alias'] == state}
|
28
|
+
|
29
|
+
if state_index.nil?
|
30
|
+
{message: "No state found for '#{state}'", status: 404}
|
31
|
+
else
|
32
|
+
all_states[state_index]['capital']
|
33
|
+
end
|
11
34
|
end
|
12
35
|
|
13
36
|
private
|
14
37
|
|
15
|
-
def
|
16
|
-
YAML.load(File.read(files_location
|
38
|
+
def load_states
|
39
|
+
YAML.load(File.read(files_location 'states'))
|
17
40
|
end
|
18
41
|
|
19
42
|
def files_location(file)
|
data/lib/locations_ng/version.rb
CHANGED
data/lib/locations_ng.rb
CHANGED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module LocationsNg
|
4
|
+
describe City do
|
5
|
+
let(:city) { LocationsNg::City.new }
|
6
|
+
|
7
|
+
describe '.all' do
|
8
|
+
let(:cities_response) { File.read('spec/responses/cities.json') }
|
9
|
+
|
10
|
+
it 'returns all cities' do
|
11
|
+
expect(city.all).to eq(JSON.parse(cities_response))
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '.cities' do
|
16
|
+
context 'when state is not found' do
|
17
|
+
it 'returns error message' do
|
18
|
+
expect(city.cities('Invalid State')).to eq({message: "No cities found for 'invalid_state'", status: 404})
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'when state is found' do
|
23
|
+
it 'returns the cities of a specific state' do
|
24
|
+
expect(city.cities('Akwa Ibom')).to eq(['Eket', 'Ikot Ekpene', 'Oron', 'Uyo'])
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module LocationsNg
|
4
|
+
describe Lga do
|
5
|
+
let(:lga) { LocationsNg::Lga.new }
|
6
|
+
|
7
|
+
describe '.lgas' do
|
8
|
+
context 'when lgas for a state is not found' do
|
9
|
+
it 'returns an error message' do
|
10
|
+
expect(lga.lgas('Unknown State')).to eq({message: "No lgas found for 'unknown_state'", status: 404})
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'when state is found' do
|
15
|
+
it 'returns the lgas for state' do
|
16
|
+
expect(lga.lgas('Lagos')).to eq(['Agege', 'Ajeromi-Ifelodun', 'Alimosho',
|
17
|
+
'Amuwo-Odofin', 'Badagry', 'Apapa', 'Epe',
|
18
|
+
'Eti Osa', 'Ibeju-Lekki', 'Ifako-Ijaiye',
|
19
|
+
'Ikeja', 'Ikorodu', 'Kosofe', 'Lagos Island',
|
20
|
+
'Mushin', 'Lagos Mainland', 'Ojo', 'Oshodi-Isolo',
|
21
|
+
'Shomolu', 'Surulere Lagos State'])
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -2,26 +2,61 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module LocationsNg
|
4
4
|
describe State do
|
5
|
-
|
6
|
-
context 'when no argument is passed' do
|
7
|
-
let(:state) { LocationsNg::State.new }
|
5
|
+
let(:state) { LocationsNg::State.new }
|
8
6
|
|
9
|
-
|
10
|
-
expect(state.state).to eq('all')
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '.states' do
|
16
|
-
let(:state) { LocationsNg::State.new }
|
7
|
+
describe '.all' do
|
17
8
|
let(:state_response) { File.read('spec/responses/canonical_states.json') }
|
18
9
|
|
19
10
|
it 'returns 37 states' do
|
20
|
-
expect(state.
|
11
|
+
expect(state.all.count).to eq(37)
|
21
12
|
end
|
22
13
|
|
23
14
|
it 'returns all canonical states, with name and capital' do
|
24
|
-
expect(state.
|
15
|
+
expect(state.all).to eq(JSON.parse(state_response, symbolize_names: true))
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '.details' do
|
20
|
+
context 'when state is not found' do
|
21
|
+
it 'returns status with message' do
|
22
|
+
expect(state.details('AbIja')).to eq({message: "No state found for 'abija'", status: 404})
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'when state is found' do
|
27
|
+
it 'returns detailed data for the state' do
|
28
|
+
expect(state.details('Lagos')).to eq({'minLat'=>6.3936419,
|
29
|
+
'name'=>'Lagos',
|
30
|
+
'capital'=>'Ikeja',
|
31
|
+
'latitude'=>6.5243793,
|
32
|
+
'minLong'=>3.0982732,
|
33
|
+
'maxLat'=>6.7027984,
|
34
|
+
'longitude'=>3.3792057,
|
35
|
+
'maxLong'=>3.696727799999999,
|
36
|
+
'alias'=>'lagos',
|
37
|
+
'cities'=>%w(Agege Ikeja),
|
38
|
+
'lgas'=>['Agege', 'Ajeromi-Ifelodun', 'Alimosho',
|
39
|
+
'Amuwo-Odofin', 'Badagry', 'Apapa', 'Epe',
|
40
|
+
'Eti Osa', 'Ibeju-Lekki', 'Ifako-Ijaiye',
|
41
|
+
'Ikeja', 'Ikorodu', 'Kosofe', 'Lagos Island',
|
42
|
+
'Mushin', 'Lagos Mainland', 'Ojo', 'Oshodi-Isolo',
|
43
|
+
'Shomolu', 'Surulere Lagos State']
|
44
|
+
})
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe '.capital' do
|
50
|
+
context 'when state is not found' do
|
51
|
+
it 'returns status with message' do
|
52
|
+
expect(state.details('AbIja')).to eq({message: "No state found for 'abija'", status: 404})
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'when state is found' do
|
57
|
+
it 'returns the capital of a state' do
|
58
|
+
expect(state.capital('Plateau')).to eq('Jos')
|
59
|
+
end
|
25
60
|
end
|
26
61
|
end
|
27
62
|
end
|
@@ -0,0 +1,142 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"state":"Akwa Ibom",
|
4
|
+
"alias":"akwa_ibom",
|
5
|
+
"cities":["Eket", "Ikot Ekpene", "Oron", "Uyo"]
|
6
|
+
},
|
7
|
+
{
|
8
|
+
"state":"Bauchi",
|
9
|
+
"alias":"bauchi",
|
10
|
+
"cities":["Bauchi"]
|
11
|
+
},
|
12
|
+
{
|
13
|
+
"state":"Benue",
|
14
|
+
"alias":"benue",
|
15
|
+
"cities":["Makurdi"]
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"state":"Borno",
|
19
|
+
"alias":"borno",
|
20
|
+
"cities":["Bama", "Maiduguri"]
|
21
|
+
},
|
22
|
+
{
|
23
|
+
"state":"Bayelsa",
|
24
|
+
"alias":"bayelsa",
|
25
|
+
"cities":["Yenagoa"]
|
26
|
+
},
|
27
|
+
{
|
28
|
+
"state":"Delta",
|
29
|
+
"alias":"delta",
|
30
|
+
"cities":["Sapele"]
|
31
|
+
},
|
32
|
+
{
|
33
|
+
"state":"Ebonyi",
|
34
|
+
"alias":"ebonyi",
|
35
|
+
"cities":["Abakaliki"]
|
36
|
+
},
|
37
|
+
{
|
38
|
+
"state":"Ekiti",
|
39
|
+
"alias":"ekiti",
|
40
|
+
"cities":["Ado Ekiti"]
|
41
|
+
},
|
42
|
+
{
|
43
|
+
"state":"Enugu",
|
44
|
+
"alias":"enugu",
|
45
|
+
"cities":["Enugu", "Nsukka", "Agbani", "Awgu", "Udi", "Oji-River"]
|
46
|
+
},
|
47
|
+
{
|
48
|
+
"state":"Gombe",
|
49
|
+
"alias":"gombe",
|
50
|
+
"cities":["Gombe"]
|
51
|
+
},
|
52
|
+
{
|
53
|
+
"state":"Jigawa",
|
54
|
+
"alias":"jigawa",
|
55
|
+
"cities":["Dutse"]
|
56
|
+
},
|
57
|
+
{
|
58
|
+
"state":"Imo",
|
59
|
+
"alias":"imo",
|
60
|
+
"cities":["Okigwe", "Orlu"]
|
61
|
+
},
|
62
|
+
{
|
63
|
+
"state":"Kaduna",
|
64
|
+
"alias":"kaduna",
|
65
|
+
"cities":["Kaduna", "Zaria"]
|
66
|
+
},
|
67
|
+
{
|
68
|
+
"state":"Kebbi",
|
69
|
+
"alias":"kebbi",
|
70
|
+
"cities":["Birnin Kebbi"]
|
71
|
+
},
|
72
|
+
{
|
73
|
+
"state":"Kogi",
|
74
|
+
"alias":"kogi",
|
75
|
+
"cities":["Lokoja", "Okene"]
|
76
|
+
},
|
77
|
+
{
|
78
|
+
"state":"Lagos",
|
79
|
+
"alias":"lagos",
|
80
|
+
"cities":["Agege", "Ikeja"]
|
81
|
+
},
|
82
|
+
{
|
83
|
+
"state":"Katsina",
|
84
|
+
"alias":"katsina",
|
85
|
+
"cities":["Funtua", "Katsina"]
|
86
|
+
},
|
87
|
+
{
|
88
|
+
"state":"Kwara",
|
89
|
+
"alias":"kwara",
|
90
|
+
"cities":["Offa", "Ilorin"]
|
91
|
+
},
|
92
|
+
{
|
93
|
+
"state":"Nasarawa",
|
94
|
+
"alias":"nasarawa",
|
95
|
+
"cities":["Lafia"]
|
96
|
+
},
|
97
|
+
{
|
98
|
+
"state":"Niger",
|
99
|
+
"alias":"niger",
|
100
|
+
"cities":["Bida", "Suleja"]
|
101
|
+
},
|
102
|
+
{
|
103
|
+
"state":"Ogun",
|
104
|
+
"alias":"ogun",
|
105
|
+
"cities":["Ijebu Ode", "Shagamu"]
|
106
|
+
},
|
107
|
+
{
|
108
|
+
"state":"Ondo",
|
109
|
+
"alias":"ondo",
|
110
|
+
"cities":["Owo"]
|
111
|
+
},
|
112
|
+
{
|
113
|
+
"state":"Rivers",
|
114
|
+
"alias":"rivers",
|
115
|
+
"cities":["Port Harcourt"]
|
116
|
+
},
|
117
|
+
{
|
118
|
+
"state":"Oyo",
|
119
|
+
"alias":"oyo",
|
120
|
+
"cities":["Oyo"]
|
121
|
+
},
|
122
|
+
{
|
123
|
+
"state":"Osun",
|
124
|
+
"alias":"osun",
|
125
|
+
"cities":["Iwo", "Osogbo"]
|
126
|
+
},
|
127
|
+
{
|
128
|
+
"state":"Taraba",
|
129
|
+
"alias":"taraba",
|
130
|
+
"cities":["Wukari"]
|
131
|
+
},
|
132
|
+
{
|
133
|
+
"state":"Yobe",
|
134
|
+
"alias":"yobe",
|
135
|
+
"cities":["Nguru", "Potiskum"]
|
136
|
+
},
|
137
|
+
{
|
138
|
+
"state":"Zamfara",
|
139
|
+
"alias":"zamfara",
|
140
|
+
"cities":["Gusau"]
|
141
|
+
}
|
142
|
+
]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: locations_ng
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fiyin Adebayo
|
@@ -45,13 +45,18 @@ extensions: []
|
|
45
45
|
extra_rdoc_files: []
|
46
46
|
files:
|
47
47
|
- lib/locations_ng.rb
|
48
|
+
- lib/locations_ng/city.rb
|
49
|
+
- lib/locations_ng/lga.rb
|
48
50
|
- lib/locations_ng/locations/cities.yml
|
49
51
|
- lib/locations_ng/locations/lgas.yml
|
50
52
|
- lib/locations_ng/locations/states.yml
|
51
53
|
- lib/locations_ng/state.rb
|
52
54
|
- lib/locations_ng/version.rb
|
55
|
+
- spec/locations_ng/city_spec.rb
|
56
|
+
- spec/locations_ng/lga_spec.rb
|
53
57
|
- spec/locations_ng/state_spec.rb
|
54
58
|
- spec/responses/canonical_states.json
|
59
|
+
- spec/responses/cities.json
|
55
60
|
- spec/spec_helper.rb
|
56
61
|
homepage: https://github.com/ceemion/locations_ng
|
57
62
|
licenses:
|
@@ -78,6 +83,9 @@ signing_key:
|
|
78
83
|
specification_version: 4
|
79
84
|
summary: States, Cities and LGAs in Nigeria.
|
80
85
|
test_files:
|
86
|
+
- spec/locations_ng/city_spec.rb
|
87
|
+
- spec/locations_ng/lga_spec.rb
|
81
88
|
- spec/locations_ng/state_spec.rb
|
82
89
|
- spec/responses/canonical_states.json
|
90
|
+
- spec/responses/cities.json
|
83
91
|
- spec/spec_helper.rb
|