File tree Expand file tree Collapse file tree 4 files changed +148
-1
lines changed
Expand file tree Collapse file tree 4 files changed +148
-1
lines changed Original file line number Diff line number Diff line change @@ -68,7 +68,8 @@ def street_services
6868 :geoapify ,
6969 :photon ,
7070 :twogis ,
71- :pc_miler
71+ :pc_miler ,
72+ :reverse_geocoder
7273 ]
7374 end
7475
Original file line number Diff line number Diff line change @@ -222,6 +222,8 @@ def parse_json(data)
222222 # Parses a raw search result (returns hash or array).
223223 #
224224 def parse_raw_data ( raw_data )
225+ ap "parsing..."
226+ ap raw_data
225227 parse_json ( raw_data )
226228 end
227229
@@ -306,6 +308,10 @@ def make_api_request(query)
306308 configuration . basic_auth [ :password ]
307309 )
308310 end
311+ puts "attemptinmgm client requewst...."
312+ ap configuration . http_headers
313+ ap client
314+ ap req
309315 client . request ( req )
310316 end
311317 rescue Timeout ::Error
Original file line number Diff line number Diff line change 1+ require 'geocoder/lookups/base'
2+ require 'geocoder/results/reverse_geocoder'
3+
4+ ##
5+ # Host endpoint: .../reverse?lat=?&lon=?
6+ # Host result: returns the python reverse_geocoder result in JSON
7+ # See python reverse_geocoder module for more details
8+ module Geocoder ::Lookup
9+ class ReverseGeocoder < Base
10+
11+ def name
12+ "Reverse Geocoder"
13+ end
14+
15+ def supported_protocols
16+ [ :https , :http ]
17+ end
18+
19+ private # ---------------------------------------------------------------
20+
21+ def base_query_url ( query )
22+ if query . reverse_geocode?
23+ "#{ protocol } ://#{ host } /reverse_geocode?"
24+ else
25+ raise "Forward geocode not supported"
26+ end
27+ end
28+
29+ def query_url_params ( query )
30+ params = {
31+ } . merge ( super )
32+
33+ if query . reverse_geocode?
34+ lat , lon = query . coordinates
35+ params [ :lat ] = lat
36+ params [ :lon ] = lon
37+ else
38+ params [ :q ] = query . sanitized_text
39+ end
40+ params
41+ end
42+
43+ ##
44+ # called by fetch_data
45+ def parse_raw_data ( raw_data )
46+ raw_data . match ( /^<html><title>404/ ) ? nil : super ( raw_data )
47+ end
48+
49+ def results ( query )
50+ return [ ] unless doc = fetch_data ( query )
51+ ap doc
52+ doc . is_a? ( Array ) ? doc : [ doc ]
53+ return doc . map { |r | remap_result ( r ) }
54+ end
55+
56+ def remap_result ( r )
57+ {
58+ lat : r [ "lat" ] ,
59+ lon : r [ "lon" ] ,
60+ city : r [ "name" ] ,
61+ state : r [ "admin1" ] ,
62+ county : r [ "admin2" ] ,
63+ country_code : r [ "cc" ]
64+ }
65+ end
66+
67+ def reserved_result ( ip )
68+ {
69+ 'ip' => ip ,
70+ 'city' => '' ,
71+ 'state' => '' ,
72+ 'county' => '' ,
73+ 'latitude' => '0' ,
74+ 'longitude' => '0' ,
75+ 'country_code' => 'RD'
76+ }
77+ end
78+
79+ def host
80+ configuration [ :host ] || raise ( "Reverse Geocoder requires the host configuration." )
81+ end
82+ end
83+ end
Original file line number Diff line number Diff line change 1+ require 'geocoder/results/base'
2+
3+ module Geocoder ::Result
4+ class ReverseGeocoder < Base
5+
6+ def address ( format = :full )
7+ [
8+ city ,
9+ state ,
10+ county ,
11+ [ country . presence , country_code . presence ] . compact . join ( " / " )
12+ ] . compact . join ( ", " )
13+ end
14+
15+ def county
16+ @data [ :county ]
17+ end
18+
19+ def coordinates
20+ [ @data [ :lat ] . to_f , @data [ :lon ] . to_f ]
21+ end
22+
23+ def city
24+ @data [ :city ]
25+ end
26+
27+ def state
28+ @data [ :state ]
29+ end
30+
31+ def state_code
32+ ""
33+ end
34+
35+ def country
36+ @data [ :country_name ]
37+ end
38+
39+ def country_code
40+ @data [ :country_code ]
41+ end
42+
43+ def postal_code
44+ @data [ :zip ]
45+ end
46+
47+ def self . response_attributes
48+ %w[ country_code ip ]
49+ end
50+
51+ response_attributes . each do |a |
52+ define_method a do
53+ @data [ a ]
54+ end
55+ end
56+ end
57+ end
You can’t perform that action at this time.
0 commit comments