File: geoportail_lu.rb

package info (click to toggle)
ruby-geocoder 1.5.1-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 732 kB
  • sloc: ruby: 6,173; makefile: 3
file content (65 lines) | stat: -rw-r--r-- 1,515 bytes parent folder | download
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
require 'geocoder/lookups/base'
require "geocoder/results/geoportail_lu"

module Geocoder
  module Lookup
    class GeoportailLu < Base

      def name
        "Geoportail.lu"
      end

      private # ---------------------------------------------------------------

      def base_query_url(query)
        if query.reverse_geocode?
          reverse_geocode_url_base_path
        else
          search_url_base_path
        end
      end

      def search_url_base_path
        "#{protocol}://api.geoportail.lu/geocoder/search?"
      end

      def reverse_geocode_url_base_path
        "#{protocol}://api.geoportail.lu/geocoder/reverseGeocode?"
      end

      def query_url_geoportail_lu_params(query)
        query.reverse_geocode? ? reverse_geocode_params(query) : search_params(query)
      end

      def search_params(query)
        {
            queryString: query.sanitized_text
        }
      end

      def reverse_geocode_params(query)
        lat_lon = query.coordinates
        {
            lat: lat_lon.first,
            lon: lat_lon.last
        }
      end

      def query_url_params(query)
        query_url_geoportail_lu_params(query).merge(super)
      end

      def results(query)
        return [] unless doc = fetch_data(query)
        if doc['success'] == true
          result = doc['results']
        else
          result = []
          raise_error(Geocoder::Error) ||
              warn("Geportail.lu Geocoding API error")
        end
        result
      end
    end
  end
end