Created
August 1, 2021 03:10
-
-
Save CleverFox137/a898ab36166c670e892931fc6461d87b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const express = require('express'); | |
const https = require('https'); | |
const ejs = require('ejs'); | |
const { resourceLimits } = require('worker_threads'); | |
const port = 3000; | |
const days = []; | |
const dayTemps = []; | |
let city; | |
let forecastOption; | |
let currentTemp; | |
let longitude; | |
let latitude; | |
const app = express(); | |
app.set('view engine', 'ejs'); | |
app.use(express.static(__dirname + '/public')); | |
app.use(express.urlencoded({extended: true})); | |
app.use(express.json()); | |
app.get('/', (req, res) => { | |
res.sendFile(__dirname + '/index.html'); | |
}); | |
app.get('/forecast', (req, res) => { | |
console.log(city); | |
console.log(currentTemp); | |
res.render('forecast.ejs', {city: city, currentTemp: currentTemp, days: days, dayTemps: dayTemps}); | |
}); | |
app.post('/', (req, res) => { | |
city = req.body.cityName; | |
const apiKey = 'e595dbde89bdb2a4713be967467df95a'; | |
const url = `https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}`; | |
let promise = new Promise((resolve, reject) => { | |
const request = https.get(url, (response) => { | |
response.on('data', (data) => { | |
let weatherData = JSON.parse(data); | |
currentTemp = weatherData.main.temp; | |
longitude = weatherData.coord.lon; | |
latitude = weatherData.coord.lat; | |
resolve('success'); | |
}); | |
}); | |
request.end(); | |
}); | |
promise.then( | |
(result) => { | |
const part = 'hourly,current,minutely,alerts'; | |
const url2 = `https://api.openweathermap.org/data/2.5/onecall?lat=${latitude}&exclude=${part}&lon=${longitude}&appid=${apiKey}`; | |
const request2 = https.get(url2, (response2) => { | |
const chunks = []; | |
response2.on('data', (data) => { | |
chunks.push(data); | |
}); | |
response2.on('end', () => { | |
const someData = Buffer.concat(chunks); | |
let weatherData = JSON.parse(someData); | |
for(let index = 0; index < 7; index++) | |
{ | |
let unixTimestamp = weatherData.daily[index].dt; | |
let milliseconds = unixTimestamp * 1000; | |
let dateObject = new Date(milliseconds); | |
let options = {weekday: 'long'}; | |
let currentDay = dateObject.toLocaleDateString('en-US', options); | |
days.push(currentDay); | |
let temp = weatherData.daily[index].temp.day; | |
dayTemps.push(temp); | |
} | |
res.redirect('/forecast'); | |
}); | |
}); | |
request2.end(); | |
}, | |
(error) => { | |
console.log(error); | |
} | |
); | |
}); | |
app.listen(port, (err) => { | |
if(err) console.log(err); | |
else console.log('listening on port ' + port); | |
}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment