Read the statement by Michael Teeuw here.
Need help for rewrite node_helper.js from 'request' to 'got'
-
Oké, made a start.
Changed my node_helper.js to:/* //------------------------------------------- MMM-MyPrayerTimes Copyright (C) 2019 - H. Tilburgs MIT License //------------------------------------------- */ const NodeHelper = require('node_helper'); module.exports = NodeHelper.create({ start: function() { console.log("Starting node_helper for: " + this.name); }, getMPT: function(url) { // Make a GET request using the Fetch API fetch(url) .then(response => { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); }) .then(result => { // Process the retrieved user data console.log(result); this.sendSocketNotification('MPT_RESULT', result); }) .catch(error => { console.error('Error:', error); }); }, socketNotificationReceived: function(notification, payload) { if (notification === 'GET_MPT') { this.getMPT(payload); } } });
In the console I see the data:
[2024-06-24 21:39:44.867] [LOG] { code: 200, status: 'OK', data: { timings: { Fajr: '03:08', Sunrise: '05:21', Dhuhr: '13:40', Asr: '18:03', Sunset: '21:59', Maghrib: '21:59', Isha: '00:04', Imsak: '02:58', Midnight: '01:40', Firstthird: '00:26', Lastthird: '02:54' }, date: { readable: '24 Jun 2024', timestamp: '1719257984', hijri: [Object], gregorian: [Object] }, meta: { latitude: 51.48167, longitude: 5.66111, timezone: 'Europe/Amsterdam', method: [Object], latitudeAdjustmentMethod: 'ANGLE_BASED', midnightMode: 'STANDARD', school: 'STANDARD', offset: [Object] } } }
Only 1 problem, times are not displayed in de module
I know it has something to do with
var result = JSON.parse(body).data.timings; //
but I’m having troubles with this.
When I replace body with result, I get an error.
I’ve been looking for a solution for a few days now, but no result.Some help is appreciated ;-)
-
I kept on searching and think I’ve found it.
I didn’t use JSON.parse(), but simply put it in the resultthis.sendSocketNotification('MPT_RESULT', result.data.timings);
It works, but I hope this is the right way.
-
@htilpburgs I was going to say the result of json() is passed already
-
@sdetweil
As far as I can see this works the correct way.
Do you agree? -
@htilburgs depends on what you mean by correct.
it returns the parsed text as an object
not text. -
@sdetweil
That I don’t understand.
Is this a problem? What would be better? -
@htilburgs the response.json() function returns a js object already parsed.
thst is what yiy were going to fo w JSON.parse(). but don’t need to.
I don’t know if the CONTENT of the object is correct, but it should be for the same request
-
@sdetweil
In the previous version with ‘request’ I used JSON.parse() and got the same results.
The module works, but I didn’t know for sure if I used the correct approach. -
@htilburgs if you push the repo I’ll look at it… you can do it on a separate branch to not disturb the existing
-
@sdetweil published it. Didn’t know how than on Master.