mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 16:11:08 +08:00
FEATURE: Return geoname IDs from MaxMindDb (#16082)
The geoname IDs can be used by plugins to locate the user more precisely.
This commit is contained in:
@ -101,6 +101,13 @@ class DiscourseIpInfo
|
||||
ret[:latitude] = result.location.latitude
|
||||
ret[:longitude] = result.location.longitude
|
||||
ret[:location] = ret.values_at(:city, :region, :country).reject(&:blank?).uniq.join(", ")
|
||||
|
||||
# used by plugins or API to locate users more accurate
|
||||
ret[:geoname_ids] = [
|
||||
result.continent.geoname_id, result.country.geoname_id, result.city.geoname_id,
|
||||
*result.subdivisions.map(&:geoname_id)
|
||||
]
|
||||
ret[:geoname_ids].compact!
|
||||
end
|
||||
rescue => e
|
||||
Discourse.warn_exception(e, message: "IP #{ip} could not be looked up in MaxMind GeoLite2-City database.")
|
||||
|
Reference in New Issue
Block a user