-
Notifications
You must be signed in to change notification settings - Fork 1
/
web_app_utility.js
145 lines (122 loc) · 4.02 KB
/
web_app_utility.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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
const path = require('path')
const express = require('express')
//for the partial files like header and fotter which are common other files
const hbs = require('hbs')
const partialsPath = path.join(__dirname,'../templates/partials')
const geocode = require('./utils/geocode')
const forecast = require('./utils/forecast')
// console.log(__dirname)
// console.log(path.join(__dirname, '../public'))
const app = express()
const publicDirectoryPath = path.join(__dirname, '../public')
const port = process.env.PORT || 3000
//hbs default folder name is views but if you want to customise the name of the folder you can do that by
const viewsPath = path.join(__dirname,'../templates/views')
app.set('views', viewsPath)
//For setting up handelbars
hbs.registerPartials(partialsPath)
// app.use(express.static(path.join(__dirname, '../public'))
//setup static directory to server
app.use(express.static(publicDirectoryPath))
//For serving up dynamic page
app.set('view engine', 'hbs')
app.get('', (req,res) => {
res.render('index', {
title: 'Weather',
name: 'Aditya Raj Singhvi',
})
})
app.get('/about', (req,res) => {
res.render('about', {
title: 'About Me!',
name: 'Aditya Raj Singhvi'
})
})
app.get('/help', (req,res) => {
res.render('help', {
title: 'Help',
name: 'Aditya Raj Singhvi',
message: 'I need help!',
})
})
//this get funt is used to send the response to the server when he visit the domain like app.com the empty string as the first argument ssays that it is the main page without / something like app.com/about then we will use about instead of a empty string
// app.get('', (req, res) => {
// // res.send('Hello Express!')
// res.send('<h1>Weather</h1>')
// })
// app.get('/help',(req, res) => {
// // res.send('Help page!')
// // res.send({
// // name: 'Aditya',
// // age: 19
// // })
// res.send([{
// name: 'Aditya'
// }, {
// name: 'Raj'
// }])
// })
// app.get('/about',(req, res) => {
// res.send('About page!')
// })
app.get('/weather',(req,res) => {
if(!req.query.address){
return res.send({
error : 'You must provide an Address'
})
}
else {
geocode(req.query.address, (error, { latitude, longitude, location } = {}) => {
if (error) {
return res.send({error})
}
forecast(latitude, longitude, (error, forecastData) => {
if (error) {
return res.send({error})
}
res.send({
forecast: forecastData,
location,
address: req.query.address,
})
})
})
}
// console.log(req.query.address)
// res.send({
// forecast: 'It is snowing',
// location: 'Philadelphia',
// address: req.query.address,
// })
})
//handling Queries 'someurl?query=value'
// app.get('/products', (req, res) => {
// if(!req.query.search){
// return res.send({
// error : 'You must provide a search term'
// })
// }
// console.log(req.query.search)
// res.send({
// products: []
// })
// })
//for all the other links other than the one declared
app.get('/help/*', (req, res) => {
res.render('error', {
title: 'Error',
name: 'Aditya Raj Singhvi',
message: 'Help article not found',
})
})
app.get('*',(req, res) => {
res.render('error', {
title: 'Error',
name: 'Aditya Raj Singhvi',
message: 'Page Not Found!',
})
})
//to start the server, 3000 is the port number
app.listen(port, () => {
console.log('Server is up on port 3000.')
})