57 lines
1.5 KiB
JavaScript
57 lines
1.5 KiB
JavaScript
const Client = require('request-json');
|
|
const logger = require('log4js').getLogger('Weather');
|
|
const weather = require('openweather-apis');
|
|
|
|
logger.level = 'debug';
|
|
|
|
const openWeatherApiKey = process.env.openweatherAPI || '936a0ed9eb23b95cf08fc9f693c24264';
|
|
|
|
const darkskyApiKey = process.env.darkskyApiKey || '9ad2a41d420f3cf4960571bb886f710c';
|
|
const DSclient = Client.createClient(`https://api.darksky.net/forecast/${ darkskyApiKey }/`);
|
|
|
|
weather.setAPPID(openWeatherApiKey);
|
|
weather.setLang('en');
|
|
// weather.setCity('Glasgow City');
|
|
|
|
function doGetOpenWeather(ll) {
|
|
const [lat, long ] = ll.split(',');
|
|
|
|
return new Promise((resolve, reject) => {
|
|
weather.setCoordinate(lat, long);
|
|
weather.getWeatherForecast( function(err, wData) {
|
|
if (err)
|
|
return reject(err);
|
|
else
|
|
return resolve(wData);
|
|
});
|
|
});
|
|
}
|
|
|
|
function doGetOpenWeatherForecast(ll) {
|
|
const [lat, long ] = ll.split(',');
|
|
|
|
return new Promise((resolve, reject) => {
|
|
weather.setCoordinate(lat, long);
|
|
weather.getWeatherForecastForDays(5, function(err, wData) {
|
|
if (err)
|
|
return reject(err);
|
|
else
|
|
return resolve(wData);
|
|
});
|
|
});
|
|
}
|
|
|
|
function doGetDarkSkyWeather(ll) {
|
|
const query = `${ll}?units=uk2&exclude=daily,flags,minutely,hourly`;
|
|
return new Promise((resolve, reject) => {
|
|
DSclient.get(query, function(err, res, body) {
|
|
if (err || !body || !body.currently)
|
|
return reject(err);
|
|
|
|
return resolve(body);
|
|
});
|
|
});
|
|
}
|
|
|
|
module.exports = { doGetOpenWeather, doGetOpenWeatherForecast, doGetDarkSkyWeather };
|