summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Lundblad <ml@dfupdate.se>2023-05-11 22:43:54 +0200
committerMarcus Lundblad <ml@dfupdate.se>2023-05-11 22:43:54 +0200
commit98048b41bb66eb60b3edd847045580f1808fe663 (patch)
tree6ea600b92df5b5749fcf6081eccf68ec6eb6f5b1
parentd1c24944e5ec81725767874c36ca6b8f0c87fe9a (diff)
downloadgnome-maps-98048b41bb66eb60b3edd847045580f1808fe663.tar.gz
overpass: Add callback variant method to populate place
-rw-r--r--src/overpass.js25
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);