const { shim } = require('lib/shim.js');

class GeolocationNode {
	static async currentPosition(options = null) {
		if (!options) options = {};

		let response = await shim.fetch('https://freegeoip.app/json/');
		if (!response.ok) throw new Error(`Could not get geolocation: ${await response.text()}`);

		response = await response.json();

		if (!('latitude' in response) || !('longitude' in response)) throw new Error(`Invalid geolocation response: ${response ? JSON.stringify(response) : '<null>'}`);

		return {
			timestamp: new Date().getTime(),
			coords: {
				longitude: response.longitude,
				altitude: 0,
				latitude: response.latitude,
			},
		};
	}
}

module.exports = { GeolocationNode };