Revert "Merge pull request #4552 from tchak/champ-communes"
This reverts commit4cec26f73a
, reversing changes made to0ef25ef36c
.
This commit is contained in:
parent
c9ac7294f5
commit
4373cb22cb
63 changed files with 1119 additions and 260 deletions
57
app/lib/api_geo/api.rb
Normal file
57
app/lib/api_geo/api.rb
Normal file
|
@ -0,0 +1,57 @@
|
|||
class ApiGeo::API
|
||||
TIMEOUT = 15
|
||||
CACHE_DURATION = 1.day
|
||||
|
||||
def self.regions
|
||||
url = [API_GEO_URL, "regions"].join("/")
|
||||
call(url, { fields: :nom })
|
||||
end
|
||||
|
||||
def self.departements
|
||||
url = [API_GEO_URL, "departements"].join("/")
|
||||
call(url, { fields: :nom })
|
||||
end
|
||||
|
||||
def self.pays
|
||||
parse(File.open('app/lib/api_geo/pays.json').read)
|
||||
end
|
||||
|
||||
def self.search_rpg(geojson)
|
||||
url = [API_GEO_SANDBOX_URL, "rpg", "parcelles", "search"].join("/")
|
||||
call(url, geojson, :post)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def self.parse(body)
|
||||
JSON.parse(body, symbolize_names: true)
|
||||
end
|
||||
|
||||
def self.call(url, body, method = :get)
|
||||
# The cache engine is stored, because as of Typhoeus 1.3.1 the cache engine instance
|
||||
# is included in the computed `cache_key`.
|
||||
# (Which means that when the cache instance changes, the cache is invalidated.)
|
||||
@typhoeus_cache ||= Typhoeus::Cache::SuccessfulRequestsRailsCache.new
|
||||
|
||||
response = Typhoeus::Request.new(
|
||||
url,
|
||||
method: method,
|
||||
params: method == :get ? body : nil,
|
||||
body: method == :post ? body : nil,
|
||||
timeout: TIMEOUT,
|
||||
accept_encoding: 'gzip',
|
||||
headers: {
|
||||
'Accept' => 'application/json',
|
||||
'Accept-Encoding' => 'gzip, deflate'
|
||||
}.merge(method == :post ? { 'Content-Type' => 'application/json' } : {}),
|
||||
cache: @typhoeus_cache,
|
||||
cache_ttl: CACHE_DURATION
|
||||
).run
|
||||
|
||||
if response.success?
|
||||
parse(response.body)
|
||||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
end
|
27
app/lib/api_geo/rpg_adapter.rb
Normal file
27
app/lib/api_geo/rpg_adapter.rb
Normal file
|
@ -0,0 +1,27 @@
|
|||
class ApiGeo::RPGAdapter
|
||||
def initialize(coordinates)
|
||||
@coordinates = GeojsonService.to_json_polygon_for_rpg(coordinates)
|
||||
end
|
||||
|
||||
def data_source
|
||||
@data_source ||= ApiGeo::API.search_rpg(@coordinates)
|
||||
end
|
||||
|
||||
def results
|
||||
data_source[:features].map do |feature|
|
||||
feature[:properties]
|
||||
.stringify_keys
|
||||
.transform_keys(&:underscore)
|
||||
.symbolize_keys
|
||||
.slice(
|
||||
:culture,
|
||||
:code_culture,
|
||||
:surface,
|
||||
:bio
|
||||
).merge({
|
||||
geometry: feature[:geometry],
|
||||
geo_reference_id: feature[:properties][:id]
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue