-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
132 lines (127 loc) · 4.46 KB
/
Copy pathserver.js
File metadata and controls
132 lines (127 loc) · 4.46 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
'use strict';
var restify = require('restify');
var passport = require('passport');
var fs = require('fs');
if (fs.existsSync(__dirname + '/src/')) {
var folder = __dirname + "/src/";
} else {
var folder = __dirname + "/";
}
var server = restify.createServer({
name: 'Swarmi',
version: '0.1.0'
});
server.use(function (req, res, next) {
//1mb maxBodySize
if (req.contentLength() >= 1024 * 1024) {
return next(new restify.BadRequestError("Request body size exceeds 1mb"));
}
next();
});
restify.CORS.ALLOW_HEADERS.push('authorization');
server.use(restify.gzipResponse());
server.use(restify.queryParser());
server.use(restify.bodyParser());
server.pre(restify.CORS());
server.pre(restify.fullResponse());
server.use(passport.initialize());
require(folder + 'config/passport')(passport);
//Routes
server.get('/swarm', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/swarm').get);
server.get('/nodes', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/nodes').list);
server.get('/nodes/:nodeId', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/nodes').get);
server.put('/nodes/:nodeId', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/nodes').put);
server.del('/nodes/:nodeId', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/nodes').del);
server.get('/nodes/:nodeId/tasks', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/tasks').list);
server.get('/nodes/:nodeId/tasks/:taskId', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/tasks').get);
server.get('/services', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/services').list);
server.post('/services', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/services').post);
server.get('/services/:serviceId', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/services').get);
server.put('/services/:serviceId', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/services').put);
server.del('/services/:serviceId', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/services').del);
server.get('/services/:serviceId/tasks', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/tasks').list);
server.get('/services/:serviceId/tasks/:taskId', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/tasks').get);
server.get('/networks', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/networks').list);
server.post('/networks', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/networks').post);
server.get('/networks/:networkId', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/networks').get);
server.del('/networks/:networkId', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/networks').del);
server.get('/volumes', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/volumes').list);
server.post('/volumes', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/volumes').post);
server.get('/volumes/:volumeId', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/volumes').get);
server.del('/volumes/:volumeId', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/volumes').del);
server.get('/tasks', passport.authenticate('bearer', {
session: false
}), require(folder + 'api/tasks').list);
////////////////////////////////////////
//OAuth2
////////////////////////////////////////
server.get('/auth/github/me', passport.authenticate('bearer', {
session: false
}), function (req, res, next) {
res.send(req.user);
});
server.get('/auth/github', function (req, res, next) {
passport.authenticate('github', {
session: false
})(req, res, next);
});
server.get('/auth/github/callback', passport.authenticate('github', {
failureRedirect: '/',
session: false
}), function (req, res, next) {
res.header('Location', '/?access_token=' + req.user.token);
res.send(302);
next();
});
////////////////////////////////////////
server.get(/\/?.*/, restify.serveStatic({
directory: folder + 'public',
default: 'index.html'
}));
server.listen(9000, function () {
console.log('v0.1.0');
});