-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathserver.js
More file actions
119 lines (98 loc) · 3.18 KB
/
server.js
File metadata and controls
119 lines (98 loc) · 3.18 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
'use strict'
// Image Hnadling
const multer = require('multer')
const fileType = require('file-type')
const fs = require('fs')
// Database
const db = require('./database.model')
// Routing
const express = require('express')
const app = express()
const router = express.Router()
const path = require('path');
const port = process.env.PORT || 3000;
const upload = multer({
dest:'images/',
limits: {fileSize: 10000000, files: 1},
fileFilter: (req, file, callback) => {
if (!file.originalname.match(/\.(jpg|jpeg|png)$/)) {
return callback(new Error('Only Images are allowed !'), false)
}
callback(null, true);
}
}).single('image')
/* Save user supplied image on server under /images */
router.post('/images/upload', (req, res) => {
console.log("/images/upload")
upload(req, res, function (err) {
if (err) {
res.status(400).json({message: err.message, path: ""})
} else {
let path = `/images/${req.file.filename}`
res.status(200).json({message: 'Image Uploaded Successfully !', path: path})
}
})
})
/* Send Image Binary to Client for viewing */
router.get('/images/:imagename', async (req, res) => {
console.log("/images/:imagename")
let imagename = req.params.imagename
let imagepath = __dirname + "/images/" + imagename
let image = fs.readFileSync(imagepath)
let mime = await fileType.fromFile(imagepath)
console.log(mime)
res.writeHead(200, {'Content-Type': mime })
res.end(image, 'binary')
})
router.post('/housing', (req, res) => {
console.log("/housing")
let post = req.body
let sql = "INSERT INTO housingTable (email, type, bed, bath, price, covidTested, moveIn, location, desc, date, image) VALUES (?,?,?,?,?,?,?,?,?,?,?) ";
db.run(sql, post.email, post.type, post.bed, post.bath, post.price, post.covidTested, post.moveIn, post.location, post.desc, post.date, post.image, (err) => {
if (err) {
console.log("DB insert error", err.message);
throw err;
} else {
res.send({message: "Upload Successful!"});
}
})
})
router.get('/housing/all', (req, res) => {
console.log("/housing/all")
let sql = "SELECT * FROM housingTable";
db.all(sql, (err, val) => {
if (err) {
console.log("DB insert error", err.message);
throw err;
} else {
res.send(val || {});
}
})
})
router.get('/housing/:id', (req, res) => {
console.log("/housing/:id")
let postId = req.params.id
let sql = "SELECT * FROM housingTable WHERE id = ?";
db.get(sql, postId, (err, val) => {
if (err) {
console.log("DB insert error", err.message);
throw err;
} else {
res.send(val || {});
}
})
})
router.get('/', (req, res) => {
res.sendFile(path.join(__dirname, 'index.html'))
})
app.use(express.json());
app.use('/', router)
app.use((err, req, res, next) => {
if (err.code == 'ENOENT') {
res.status(404).json({message: 'Image Not Found !'})
} else {
res.status(500).json({message:err.message})
}
})
app.listen(port)
console.log(`App Runs on ${port}`)