flame/utils/getExternalWeather.js

42 lines
No EOL
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;