-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathhandler.js
More file actions
52 lines (47 loc) · 1.28 KB
/
Copy pathhandler.js
File metadata and controls
52 lines (47 loc) · 1.28 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
'use strict';
const app = require('./app');
const PORT = 3000;
const ngrok = require('ngrok');
const EventEmitter = require('events').EventEmitter;
const ev = new EventEmitter();
const slack_url = process.env.SLACK_URL;
const https = require('https');
const url = require('url');
const postSlack = (msg) => {
const opts = url.parse(slack_url);
opts.method = 'POST';
opts.headers = {'Content-Type': 'application/json'};
const req = https.request(opts, (res) => {
console.log("Send a slack message: " + res.statusCode);
});
req.on('error', (err) => {console.log(err)});
req.write(JSON.stringify({text: msg}));
req.end();
}
module.exports.server = (event, context, callback) => {
let URL;
const server = app.start(PORT, context, (req, res) => {
ngrok.kill();
console.log('Receive Bye request');
postSlack('Closed ' + URL);
ev.emit('kill');
})
ngrok.connect(PORT, (err, url) => {
if (err) {
callback(err, null);
return;
}
URL = url;
ev.once('kill', () => {
const response = {
statusCode: 200,
body: JSON.stringify({ message: 'Good bye' }),
};
server.close();
console.log('App closed.');
callback(null, response);
})
postSlack('Go ' + URL);
console.log('Connect to %s', URL);
})
};