42 lines
1 KiB
JavaScript
42 lines
1 KiB
JavaScript
|
const Config = require('../models/Config');
|
||
|
const Weather = require('../models/Weather');
|
||
|
const axios = require('axios');
|
||
|
|
||
|
const getExternalWeather = async () => {
|
||
|
// Get API key from database
|
||
|
let secret = await Config.findOne({
|
||
|
where: { key: 'WEATHER_API_KEY' }
|
||
|
});
|
||
|
|
||
|
if (!secret) {
|
||
|
console.log('API key was not found');
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
secret = secret.value;
|
||
|
|
||
|
// Fetch data from external API
|
||
|
try {
|
||
|
const res = await axios.get(`http://api.weatherapi.com/v1/current.json?key=${secret}&q=52.229676,21.012229`);
|
||
|
|
||
|
// For dev
|
||
|
// console.log(res.data);
|
||
|
|
||
|
// Save weather data
|
||
|
const cursor = res.data.current;
|
||
|
await Weather.create({
|
||
|
externalLastUpdate: cursor.last_updated,
|
||
|
tempC: cursor.temp_c,
|
||
|
tempF: cursor.temp_f,
|
||
|
isDay: cursor.is_day,
|
||
|
conditionText: cursor.condition.text,
|
||
|
conditionCode: cursor.condition.code
|
||
|
});
|
||
|
} catch (err) {
|
||
|
console.log(err);
|
||
|
console.log('External API request failed');
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = getExternalWeather;
|