-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathserver.js
More file actions
100 lines (84 loc) · 3.07 KB
/
server.js
File metadata and controls
100 lines (84 loc) · 3.07 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
var express = require('express')
var port = process.env.PORT || 3000
var app = express()
var pg = require('pg')
var bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({extended: true}))
var connectionString = process.env.DATABASE_URL || 'postgres://localhost:5432'
app.get('/carriersDB', function(req, res) {
const client = new pg.Client(connectionString);
client.connect(function(err) {
if(err) {
console.error('Trouble connecting to postgres', err)
}
client.query(
'SELECT * FROM carrier_data',
function(err, result) {
if(err) {
console.error('Query failed', err)
}
res.json(result);
client.end();
}
)
})
})
app.post('/carriersDB', bodyParser.json(), function(req, res){
const client = new pg.Client(connectionString);
client.connect(function(err){
if(err) console.error('Trouble connecting to postgres', err)
client.query(
'INSERT INTO carrier_data (name, number, address, city, state, zip, email) VALUES($1, $2, $3, $4, $5, $6, $7)',
[req.body.name, req.body.number, req.body.address, req.body.city, req.body.state, req.body.zip, req.body.email],
function(err) {
if(err) console.error('Error running query', err);
client.end();
})
})
res.send('Post complete')
})
app.post('/email', bodyParser.json(), function(req, res){
req.body.emails.forEach(function(ele) {
var helper = require('sendgrid').mail;
var from_email = new helper.Email('app61618793@heroku.com');
var to_email = new helper.Email(ele);
var subject = 'Narcan Alert: Overdose in progress';
var content = new helper.Content('text/plain', 'There is an overdose occurring in your city. Please open the Narcan Alert website.');
var mail = new helper.Mail(from_email, subject, to_email, content);
var sg = require('sendgrid')(process.env.SENDGRID_API_KEY);
var request = sg.emptyRequest({
method: 'POST',
path: '/v3/mail/send',
body: mail.toJSON(),
});
sg.API(request, function(error, response) {
console.log(response.statusCode);
console.log(response.body);
console.log(response.headers);
});
});
//sends us home after triggering an api request
res.redirect('/')
})
app.get('/', function(req, res) {
const client = new pg.Client(connectionString)
client.connect(function(err) {
if(err) console.error('Trouble connecting to postgres: ', err)
client.query(
'CREATE TABLE IF NOT EXISTS carrier_data (id SERIAL PRIMARY KEY, name VARCHAR(64) NOT NULL, number BIGINT NOT NULL, address VARCHAR(144) NOT NULL, city VARCHAR(49) NOT NULL, state VARCHAR(4) NOT NULL, zip INT NOT NULL, email VARCHAR(81) NOT NULL)',
err => {
if(err) console.error('Could not create the table', err)
client.end()
}
)
})
res.sendFile('index.html', {root: '.'})
})
app.use(express.static('./'))
app.get('*', function(request, response) {
console.log(`New request ${request.url}`)
response.sendFile('index', {root: '.'})
})
app.listen(port, function() {
console.log(`Listening on port ${port}`)
})