-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
102 lines (94 loc) · 2.33 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
const express=require('express');
const hbs=require('hbs');
const geocode=require('./geocode/geocode');
const weatherData=require('./weatherData/weatherdata');
const iplocation=require('./iplocation/iplocation');
var requestIp = require('request-ip');
const port=process.env.PORT || 3000;
process.env.PWD = process.cwd();
var app=express();
var longitude,latitude,city;
var getCurrentDate=()=>{
var date=new Date();
var data={
day: weatherData.makeday(date.getDay()),
date: date.getDay()+'/'+date.getMonth()+'/'+date.getFullYear()
}
return data;
}
hbs.registerHelper('day',()=>{
return getCurrentDate().day;
});
hbs.registerHelper('date',()=>{
return getCurrentDate().date;
});
hbs.registerHelper('year',()=>{
return (new Date()).getFullYear();
});
hbs.registerHelper('city',()=>{
return city;
});
hbs.registerHelper('latitude',()=>{
return latitude;
});
hbs.registerHelper('longitude',()=>{
return longitude;
});
app.set('view engine','hbs');
app.use(express.static(process.env.PWD + '/public'));
hbs.registerPartials(process.env.PWD+'/views/partials');
app.get('/',(req,res)=>{
var ip=requestIp.getClientIp(req);
if(req._parsedOriginalUrl.query){
geocode.fetchAddress(req._parsedOriginalUrl.query,(errorMessage,result)=>{
if(errorMessage){
console.log(errorMessage);
res.render('index.hbs',{
Message: errorMessage
});
}
else{
fetchWeather(result,(page,data)=>{
if(page === 1)
res.render('index.hbs',{
Message: "Unable to fetch weather.Try Again"
});
else
res.render('report.hbs',data);
});
}
}); }
else{
iplocation.findLocation(ip,(error,result)=>{
if(error){
res.render('index.hbs',{Message:"Welcome"});
}
else
{
fetchWeather(result,(page,data)=>{
console.log(`IP RESULT ${result}`);
if(page === 1)
res.render('index.hbs');
else
res.render('report.hbs',data);
});
}
});
}
});
fetchWeather=(result,callback)=>{
city=result.address;
longitude=result.longitude;
latitude=result.latitude;
weatherData.getWeather(result.latitude,result.longitude,(error,data)=>{
if(error){
console.log(error);
callback(1,undefined);
}
else{
var current = weatherData.currentData(data,1);
callback(2,current);
}
});
}
app.listen(port,()=>console.log(`Server listining on port ${port}`));