You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/9-Weather_Project/app.js

63 lines
2.7 KiB

const express = require("express");
const https = require("https"); //this node module is used to fetch data from somebody else server to our
const bodyParser = require("body-parser");
const app = express();
app.use(bodyParser.urlencoded({extended: true}));
app.get("/", function(req, res){
res.sendFile(__dirname+ "/index.html");
});
app.post("/",function(req, res){
const query = req.body.cityName ; //from body-parser concept
const apiKey = "6ba767fccf2e21de369854c8b1dfc998";
const unit = "metric";
//Since we have to put this url as a parameter inside out https.get() method, and its too long, therefore we have decided to make a variable url to contains this
const url = "https://api.openweathermap.org/data/2.5/weather?q=" + query + "&appid=" + apiKey + "&units="+ unit;
//Passing the variable url (previously made) as a parameter to our https.get() method to fetch data from external server
https.get(url, function(response){
//console.log(response); //Fetching data send by that url location to our terminal
console.log(response.statusCode); //Fetching a particular data that we need i.e statusCode (like 200,400,etc..)
response.on("data", function(data){ //fetching data from JSON file
//console.log(data);
const weatherData= JSON.parse(data); //used to convert the hexadecimal data to JSON format
const temp = weatherData.main.temp;
//console.log(temp);
const weatherDescription = weatherData.weather[0].description;
const icon = weatherData.weather[0].icon;
const imageURL = "http://openweathermap.org/img/wn/"+ icon + "@2x.png";
//console.log(weatherDescription);
//console.log(weatherData);
//We cannot write more than one res.send() inside a get method therefore we use res.write() which can be used more than one time
res.write("<p>The weather is currently "+ weatherDescription+"</p>"); //displaying weather description
res.write("<h1>The temperature in " + query +" is "+ temp + " degree Celcious.</h1>"); //displaying weather temperature
res.write("<img src="+ imageURL+">"); //displaying weather image icon
res.send();
/*//Example to convert a JS object to JSON string format through stringify
const object= {
name: "Reetesh",
favouriteFood: "Paneer"
}
console.log(JSON.stringify(object));*/
})
})
});
app.listen(3000, function(){
console.log("Server is running on port 3000");
});