-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathserver.js
More file actions
149 lines (115 loc) · 3.81 KB
/
server.js
File metadata and controls
149 lines (115 loc) · 3.81 KB
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
146
147
148
149
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const request = require('request');
const key = require('./config');
const civKey = key.key;
//CORS middleware
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
// Body-Parser parses incoming urlencoded form data
// and populate the req.body object
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
/************
*URL*
*************/
// const representative_endpoint = `https://www.googleapis.com/civicinfo/v2/representatives?address=${}&key=${}`;
/************
*DATABASE*
*************/
const db = require('./models');
/************
*Routes* --> All Routes/Endpoints
*************/
// Serve static files from public/ and /vendors
app.use(express.static(__dirname + '/public'));
app.use(express.static(__dirname + '/vendors'));
// HTML ENDPOINTS
app.get('/', (req, res) => {
res.sendFile(__dirname + '/views/index.html');
});
app.get('/profile', (req, res) => {
res.sendFile(__dirname + '/views/profile.html');
});
app.get('/rep_detail', (req, res) => {
res.sendFile(__dirname + '/views/rep_detail.html');
});
app.get('/results', (req, res) => {
res.sendFile(__dirname + '/views/results.html');
});
// JSON Routes
app.get('/api/rep-info', (req, res) => {
console.log('Man dang');
// res.json();
})
// INDEX route to display all rep info
app.get('/api/rep-details', (req, res) => {
db.Rep.find( (err, reps) => {
if (err) {console.log(`Error at displaying all reps is: ${err}`)}
res.json(reps);
});
});
// INDEX route to display saved messages
app.get('/api/saved-messages', (req, res) => {
db.SavedMessages.find( (err, messages) => {
if (err) {console.log(`Error at displaying saved messages: ${err}`)}
res.json(messages);
});
});
// Post route that queries the API and sends info back to the front end
app.post('/api/rep-info', (req, res) => {
const zip = req.body.zip;
request(`https://www.googleapis.com/civicinfo/v2/representatives?address=${zip}&key=${civKey}`, (err, res, body) => {
if (err) { console.log(`Error in server request to Civic API is: ${err}`) }
const data = JSON.parse(body);
}).pipe(res);
});
// POST route from post-fetch ajax call to create save Reps in database for use on Search Results page
app.post('/api/rep-details', (req, res) => {
let repList = req.body.data;
console.log(repList);
db.Rep.deleteMany({}, (err, reps) => {
if (err) {console.log(`Error at rep deletion is: ${err}`)}
console.log('Deleted all reps!');
db.Rep.create(repList, (err, newRep) => {
if (err) {console.log(`Error at create new rep is: ${err}`)}
console.log('New rep created!');
// process.exit();
});
});
});
// Message Create Then Post
app.post('/api/saved-messages', (req, res) => {
let message = req.body;
db.SavedMessages.create(message, (err, newMessage) => {
if (err) throw err;
res.json(newMessage);
});
});
// UPDATE message
app.put('/api/saved-messages/:id', (req, res) => {
let messageId = req.params.id;
let newMessage = req.body.message;
console.log(req.body);
db.SavedMessages.findOneAndUpdate({_id: messageId}, {$set: req.body}, { new: true }, (err, updatedMessage) => {
if (err) {console.log(`Backend error at updateBook is: ${err}`)}
res.json(updatedMessage);
});
});
// DELETE message
app.delete('/api/saved-messages/:id', (req, res) => {
let messageId = req.params.id;
console.log(messageId);
db.SavedMessages.findByIdAndDelete(messageId, (err, deletedMessage) => {
if (err) {console.log(`Error at server delete route is: ${err}`)}
res.json(deletedMessage);
});
});
// Express server set up
app.listen(process.env.PORT || 3000, () => {
console.log('Express server is up and running on port 3000');
});