-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathserver.js
More file actions
82 lines (74 loc) · 2.27 KB
/
Copy pathserver.js
File metadata and controls
82 lines (74 loc) · 2.27 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
'use strict'
require('dotenv').config();
// url: /i/{encoded src url}/{WxH}/{name?.format}
// url: /l/{path to file}/{WxH}/{name?.format}
// url: /i/{WxH}/{name?.format}?src={src file url}
// url: /s/{WxH}/{name?.format}?src={s3 path}
const sharp = require('sharp'),
resizer = require('./resizer'),
s3src = require('./s3-src'),
Hapi = require('hapi'),
fs = require('fs'),
mime = require('mime'),
request = require('request');
// create server
const server = new Hapi.Server();
server.connection({
host: 'localhost',
port: process.env.PORT || 8000
});
// read from url
server.route({
method: 'GET',
path:'/i/{src}/{size}/{name}',
handler: function (req, reply) {
return reply(request(req.params.src)
.pipe(resizer(req.params.size, req.params.name)))
.header('Content-Type', mime.lookup(req.params.name));
}
});
// read from url
server.route({
method: 'GET',
path:'/i/{size}/{name}',
handler: function (req, reply) {
if (!req.query.src) {
console.log(req.query);
return reply({ "message": "Source image required" }).code(500);
} else {
return reply(request(req.query.src)
.pipe(resizer(req.params.size, req.params.name)))
.header('Content-Type', mime.lookup(req.params.name));
}
}
});
// read from s3
server.route({
method: 'GET',
path:'/s/{size}/{name}',
handler: function (req, reply) {
if (!req.query.src) {
console.log(req.query);
return reply({ "message": "Source image required" }).code(500);
} else {
return reply(s3src(req.query.src)
.pipe(resizer(req.params.size, req.params.name)))
.header('Content-Type', mime.lookup(req.params.name));
}
}
});
// read from local
server.route({
method: 'GET',
path:'/l/{path}/{size}/{name}',
handler: function (req, reply) {
return reply(fs.createReadStream(`./assets/${req.params.path}`)
.pipe(resizer(req.params.size, req.params.name)))
.header('Content-Type', mime.lookup(req.params.name));
}
});
// start
server.start((err) => {
if (err) { throw err;}
console.log('Server running at:', server.info.uri);
});