const { shim } = require('lib/shim.js'); const { netUtils } = require('lib/net-utils.js'); class GeolocationNode { static async currentPosition(options = null) { if (!options) options = {}; const ip = await netUtils.ip(); let response = await shim.fetch('http://ip-api.com/json/' + ip); if (!response.ok) throw new Error('Could not get geolocation: ' + await response.text()); response = await response.json(); if (!('lat' in response) || !('lon' in response)) throw new Error('Invalid geolocation response: ' + (response ? JSON.stringify(response) : '')); return { timestamp: (new Date()).getTime(), coords: { longitude: response.lon, altitude: 0, latitude: response.lat } } } } module.exports = { GeolocationNode };