ea-area_lookup 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 489adaa9dec03f4ed5d04c3fb0513d5a30e5c43c
4
- data.tar.gz: 95b150f658536a2c3c35ae0667106f4cdf6bd5ab
3
+ metadata.gz: be99b0c83704e166b6c0d61131c11695e35c1771
4
+ data.tar.gz: 18d26c91a81a300752ea23403784222ce167aa48
5
5
  SHA512:
6
- metadata.gz: dae7204cdc60f6a3d455af74e7cf1633b75f36f76fec7546600095e949f4eb9c93da8e2a038c38acd3a32805307f1008e0d6d44b4be624673837b05a83c820f1
7
- data.tar.gz: ec8c54133e198420a11653d45980a62455ab9d8f87b16c24ca18e857bf79fcc8acb8d8a07b4041ed330ce3d0a4639f9863a4cc1ad284d4365b8cafc09bd182ae
6
+ metadata.gz: 0ef9beda87b4414e3439a36afb5cc052dabb0b067435ddbbc5731cbc5f7a9283677e06da30c9d06150de0511a0bd0fc3a2f8483626f24626f124fa4a13c6d8b6
7
+ data.tar.gz: 039e95846368aba23844d98038022de068f88ba481f19976dee60d57ebd330054c3f9cc1dca8e4fe8fc830978a4623252c0d3adf88248dec8c9de002bcfdfc8c
data/README.md CHANGED
@@ -31,7 +31,7 @@ Create an intializer e.g. `config/initializers/area_lookup.rb`
31
31
 
32
32
  ```ruby
33
33
  EA::AreaLookup.configure do |config|
34
- config.administrative_area_api_url = "http://admin-area-api-base-url"
34
+ config.area_api_url = "http://admin-area-api-base-url"
35
35
  end
36
36
  ```
37
37
 
@@ -40,7 +40,8 @@ Now you can do the following
40
40
  ```ruby
41
41
  coords = EA::AreaLookup::Coordinates.new(easting: 123, northing: 456)
42
42
  (or EA::AreaLookup::Coordinates.new(x: 123, y: 456))
43
- result = EA::AreaLookup.find_by_coordinates(coords)
43
+ result = EA::AreaLookup.find_admin_area_by_coordinates(coords)
44
+ # or result = EA::AreaLookup.find_water_management_area_by_coordinates(coords)
44
45
  p result
45
46
  => {:area_id=>"XX", :code=>"WESSEX", :area_name=>"Wessex", :short_name=>"Wessex", :long_name=>"Wessex"}
46
47
  ```
@@ -1,10 +1,10 @@
1
1
  module EA
2
2
  module AreaLookup
3
3
  class Configuration
4
- attr_accessor :administrative_area_api_url
4
+ attr_accessor :area_api_url
5
5
 
6
6
  def initialize
7
- @administrative_area_api_url ||= "http://environment.data.gov.uk/ds/wfs"
7
+ @area_api_url ||= "http://environment.data.gov.uk/ds/wfs"
8
8
  end
9
9
  end
10
10
 
@@ -4,11 +4,21 @@ require "open-uri"
4
4
  module EA
5
5
  module AreaLookup
6
6
  module Finders
7
- def find_by_coordinates(coords)
7
+
8
+ def find_admin_area_by_coordinates(coords)
8
9
  validate_config!
9
10
  return nil unless coords && coords.valid?
10
- xml = fetch_admin_area_from_api(coords)
11
- parse_xml(xml)
11
+ typename = "ea-wfs-area_public_face_inspire"
12
+ xml = fetch_area_from_api(coords, typename)
13
+ parse_xml(xml, typename)
14
+ end
15
+
16
+ def find_water_management_area_by_coordinates(coords)
17
+ validate_config!
18
+ return nil unless coords && coords.valid?
19
+ typename = "ea-wfs-area_water_management_inspire"
20
+ xml = fetch_area_from_api(coords, typename)
21
+ parse_xml(xml, typename)
12
22
  end
13
23
 
14
24
  private
@@ -20,22 +30,25 @@ module EA
20
30
  REQUEST: "GetFeature",
21
31
  MSVER: 6,
22
32
  SRS: "EPSG:27700",
23
- TYPENAME: "ea-wfs-area_public_face_inspire",
33
+
24
34
  propertyName: "long_name,short_name,code,area_id,area_name",
25
35
  Filter: ""
26
36
  }.freeze
27
37
 
28
38
  def api_url
29
- EA::AreaLookup.config.administrative_area_api_url
39
+ EA::AreaLookup.config.area_api_url
30
40
  end
31
41
 
32
42
  def validate_config!
33
43
  return if api_url
34
- raise EA::AreaLookup::InvalidConfigError, "Missing administrative_area_api_url"
44
+ raise EA::AreaLookup::InvalidConfigError, "Missing area_api_url"
35
45
  end
36
46
 
37
- def fetch_admin_area_from_api(coords)
38
- params = DEFAULT_API_PARAMS.merge(Filter: "(#{filter_xml(coords)})")
47
+ def fetch_area_from_api(coords, typename)
48
+ params = DEFAULT_API_PARAMS
49
+ .merge(Filter: "(#{filter_xml(coords)})")
50
+ .merge(TYPENAME: typename)
51
+
39
52
  full_url = %(#{api_url}?#{params.map { |k, v| "#{k}=#{v}" }.join('&')})
40
53
  open full_url, proxy: ENV["http_proxy"]
41
54
  rescue => e
@@ -50,12 +63,12 @@ module EA
50
63
  "</Intersects></Filter>"
51
64
  end
52
65
 
53
- def parse_xml(response)
66
+ def parse_xml(response, typename)
54
67
  xml = Nokogiri::XML response
55
68
  validate_xml(xml)
56
69
 
57
70
  result = %i(area_id code area_name short_name long_name).each_with_object({}) do |path, hash|
58
- hash[path] = xml.xpath("//gml:featureMember/ms:ea-wfs-area_public_face_inspire/ms:#{path}").text
71
+ hash[path] = xml.xpath("//gml:featureMember/ms:#{typename}/ms:#{path}").text
59
72
  end
60
73
  result.tap { |h| EA::AreaLookup.logger.debug(h) }
61
74
  end
@@ -1,5 +1,5 @@
1
1
  module EA
2
2
  module AreaLookup
3
- VERSION = "0.1.2".freeze
3
+ VERSION = "0.2.0".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ea-area_lookup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Digital Services Team, EnvironmentAgency
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-12 00:00:00.000000000 Z
11
+ date: 2016-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri