diff options
author | Marcus Lundblad <ml@dfupdate.se> | 2023-05-11 22:43:54 +0200 |
---|---|---|
committer | Marcus Lundblad <ml@dfupdate.se> | 2023-05-11 22:43:54 +0200 |
commit | 98048b41bb66eb60b3edd847045580f1808fe663 (patch) | |
tree | 6ea600b92df5b5749fcf6081eccf68ec6eb6f5b1 | |
parent | d1c24944e5ec81725767874c36ca6b8f0c87fe9a (diff) | |
download | gnome-maps-98048b41bb66eb60b3edd847045580f1808fe663.tar.gz |
overpass: Add callback variant method to populate place
-rw-r--r-- | src/overpass.js | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/overpass.js b/src/overpass.js index 8948b2a4..56e06004 100644 --- a/src/overpass.js +++ b/src/overpass.js @@ -89,6 +89,31 @@ export class Overpass extends GObject.Object { }); } + populatePlace(place, callback) { + let url = this._getQueryUrl(Utils.osmTypeToString(place.osm_type), + place.osm_id); + let request = Soup.Message.new('GET', url); + + this._session.send_and_read_async(request, GLib.PRIORITY_DEFAULT, null, + (source, res) => { + if (request.get_status() !== Soup.Status.OK) { + Utils.debug('Failed to fetch Overpass result: ' + + request.get_status()); + callback(false); + return; + } + try { + let buffer = this._session.send_and_read_finish(res).get_data(); + let jsonObj = JSON.parse(Utils.getBufferText(buffer)); + this._populatePlace(place, jsonObj); + callback(true); + } catch(e) { + Utils.debug('Failed to parse Overpass result'); + callback(false); + } + }); + } + fetchPlace(osmType, osmId, callback) { let url = this._getQueryUrl(osmType, osmId) let request = Soup.Message.new('GET', url); |