Skip to content

Commit e12bc96

Browse files
committed
Refactoring to use mongodb and es2017
1 parent c615276 commit e12bc96

31 files changed

+1367
-799
lines changed

.eslintrc.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
{
2+
"parserOptions": {
3+
"ecmaVersion": 2017
4+
},
25
"extends": "crockford",
36
"env": {
47
"node": true,
58
"es6": true
9+
},
10+
"rules": {
11+
"no-underscore-dangle": "off"
612
}
713
}

.jshintrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ "esversion":6 }
1+
{ "esversion":8 }

app.js

Lines changed: 32 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -3,55 +3,27 @@
33

44
require('dotenv').config();
55

6-
var app,
6+
const config = require('./config'),
77
cors = require('cors'),
88
express = require('express'),
9-
expressWs,
109
exphbs = require('express-handlebars'),
11-
hbs,
10+
fs = require('fs'),
1211
moment = require('moment'),
12+
mongodb = require('./services/mongodb'),
1313
morgan = require('morgan'),
14-
nconf = require('nconf'),
15-
packageJson = require('./package.json'),
16-
removeExpiredSubscriptions = require('./services/remove-expired-subscriptions'),
17-
syncStruct = require('./services/sync-struct'),
14+
Promise = require('bluebird'),
15+
removeExpiredSubscriptions = require('./services/remove-expired-subscriptions');
16+
17+
let app,
18+
expressWs,
19+
hbs,
1820
server;
1921

2022
require('console-stamp')(console, 'HH:MM:ss.l');
2123

22-
// Setup nconf to use (in-order):
23-
// 1. Overrides
24-
// 2. Command-line arguments
25-
// 3. Environment variables
26-
// 4. Default values
27-
nconf
28-
.overrides({
29-
'APP_NAME': 'rssCloudServer',
30-
'APP_VERSION': packageJson.version,
31-
})
32-
.argv()
33-
.env()
34-
.defaults({
35-
"DOMAIN": "localhost",
36-
"PORT": 5337
37-
});
24+
console.log(`${config.appName} ${config.appVersion}`);
3825

39-
console.log(nconf.get('APP_NAME') + ' ' + nconf.get('APP_VERSION'));
40-
41-
// Assign where data struct is saved
42-
syncStruct.nameStruct('data/data.json', 'data');
43-
syncStruct.watchStruct('data', function (err, data) {
44-
if (err) {
45-
console.error(err);
46-
return;
47-
}
48-
setInterval(
49-
function () {
50-
removeExpiredSubscriptions(data);
51-
},
52-
1000 * 60 * 24
53-
);
54-
});
26+
// TODO: Every 24 hours run removeExpiredSubscriptions(data);
5527

5628
morgan.format('mydate', function() {
5729
var df = require('dateformat');
@@ -88,23 +60,26 @@
8860
app.use(require('./controllers'));
8961

9062
// Start server
91-
server = app.listen(nconf.get('PORT'), function () {
92-
app.locals.host = nconf.get('DOMAIN');
93-
app.locals.port = server.address().port;
94-
95-
if (app.locals.host.indexOf(':') > -1) {
96-
app.locals.host = '[' + app.locals.host + ']';
97-
}
98-
99-
console.log('Listening at http://%s:%s', app.locals.host, app.locals.port);
100-
})
101-
.on('error', function (error) {
102-
switch (error.code) {
103-
case 'EADDRINUSE':
104-
console.log('Error: Port ' + nconf.get('PORT') + ' is already in use.');
105-
break;
106-
default:
107-
console.log(error.code);
108-
}
63+
mongodb.connect(config.mongodbUri)
64+
.then(() => {
65+
server = app.listen(config.port, function () {
66+
app.locals.host = config.domain;
67+
app.locals.port = server.address().port;
68+
69+
if (app.locals.host.indexOf(':') > -1) {
70+
app.locals.host = '[' + app.locals.host + ']';
71+
}
72+
73+
console.log('Listening at http://%s:%s', app.locals.host, app.locals.port);
74+
})
75+
.on('error', function (error) {
76+
switch (error.code) {
77+
case 'EADDRINUSE':
78+
console.log(`Error: Port ${config.port} is already in use.`);
79+
break;
80+
default:
81+
console.log(error.code);
82+
}
83+
});
10984
});
11085
}());

client.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ nconf
2525
.argv()
2626
.env()
2727
.defaults({
28+
"DOMAIN": "localhost",
2829
"PORT": 9000
2930
});
3031

@@ -49,18 +50,18 @@ app.use(express.static('public', {
4950
app.get('/*', function (req, res) {
5051
var challenge = req.query.challenge || "";
5152
console.log('get');
52-
console.log(req.query);
53+
console.dir(req.query);
5354
res.send(challenge);
5455
});
5556

5657
app.post('/*', function (req, res) {
5758
console.log('post');
58-
console.log(req.body);
59+
console.dir(req.body);
5960
res.send('');
6061
});
6162

6263
server = app.listen(nconf.get('PORT'), function () {
63-
var host = server.address().address,
64+
var host = nconf.get('DOMAIN'),
6465
port = server.address().port;
6566

6667
console.log('Listening at http://%s:%s', host, port);

config.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
const nconf = require('nconf'),
2+
packageJson = require('./package.json');
3+
4+
// Setup nconf to use (in-order):
5+
// 1. Overrides
6+
// 2. Command-line arguments
7+
// 3. Environment variables
8+
// 4. Default values
9+
nconf
10+
.overrides({
11+
'APP_NAME': 'rssCloudServer',
12+
'APP_VERSION': packageJson.version,
13+
})
14+
.argv()
15+
.env()
16+
.defaults({
17+
"DOMAIN": "localhost",
18+
"PORT": 5337,
19+
"MONGODB_URI": "mongodb://localhost:27017/rsscloud",
20+
"MAX_CONSECUTIVE_ERRORS": 3,
21+
"MAX_RESOURCE_SIZE": 256000,
22+
"CT_SECS_RESOURCE_EXPIRE": 90000,
23+
"MIN_SECS_BETWEEN_PINGS": 0
24+
});
25+
26+
module.exports = {
27+
appName: nconf.get('APP_NAME'),
28+
appVersion: nconf.get('APP_VERSION'),
29+
domain: nconf.get('DOMAIN'),
30+
port: nconf.get('PORT'),
31+
mongodbUri: nconf.get('MONGODB_URI'),
32+
maxConsecutiveErrors: nconf.get('MAX_CONSECUTIVE_ERRORS'),
33+
maxResourceSize: nconf.get('MAX_RESOURCE_SIZE'),
34+
ctSecsResourceExpire: nconf.get('CT_SECS_RESOURCE_EXPIRE'),
35+
minSecsBetweenPings: nconf.get('MIN_SECS_BETWEEN_PINGS')
36+
};

controllers/home.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
(function () {
22
"use strict";
33

4-
var express = require('express'),
4+
const express = require('express'),
55
router = new express.Router();
66

77
router.get('/', function (req, res) {

controllers/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
(function () {
22
"use strict";
33

4-
var express = require('express'),
4+
const express = require('express'),
55
router = new express.Router();
66

77
router.use('/', require('./home'));
88
router.use('/pleaseNotify', require('./please-notify'));
99
router.use('/ping', require('./ping'));
1010
router.use('/pingForm', require('./ping-form'));
11-
router.use('/viewLog', require('./view-log'));
11+
// router.use('/viewLog', require('./view-log'));
1212

1313
module.exports = router;
1414
}());

controllers/ping-form.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
(function () {
22
"use strict";
33

4-
var express = require('express'),
4+
const express = require('express'),
55
router = new express.Router();
66

77
router.get('/', function (req, res) {

controllers/ping.js

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
ping = require('../services/ping'),
1010
restReturnSuccess = require('../services/rest-return-success'),
1111
router = new express.Router(),
12-
syncStruct = require('../services/sync-struct'),
1312
urlencodedParser = bodyParser.urlencoded({ extended: false });
1413

1514
function processResponse(req, res, result) {
@@ -31,36 +30,16 @@
3130
}
3231
}
3332

34-
function handleError(req, res, errorMessage) {
35-
processResponse(req, res, errorResult(errorMessage));
33+
function handleError(req, res, err) {
34+
console.error(err);
35+
processResponse(req, res, errorResult(err.message));
3636
}
3737

3838
router.post('/', urlencodedParser, function (req, res) {
39-
var url;
40-
async.waterfall([
41-
function (callback) {
42-
parsePingParams(req, callback);
43-
},
44-
function (params, callback) {
45-
url = params.url;
46-
callback(null);
47-
},
48-
function (callback) {
49-
syncStruct.watchStruct('data', callback);
50-
},
51-
function (data, callback) {
52-
ping(
53-
data,
54-
url,
55-
callback
56-
);
57-
},
58-
function (result) {
59-
processResponse(req, res, result);
60-
}
61-
], function (errorMessage) {
62-
handleError(req, res, errorMessage);
63-
});
39+
const params = parsePingParams(req);
40+
const result = ping(params.url)
41+
.then(result => processResponse(req, res, result))
42+
.catch(err => handleError(req, res, err));
6443
});
6544

6645
module.exports = router;

controllers/please-notify.js

Lines changed: 11 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
(function () {
22
"use strict";
33

4-
var async = require('async'),
5-
bodyParser = require('body-parser'),
4+
var bodyParser = require('body-parser'),
65
errorResult = require('../services/error-result'),
76
express = require('express'),
87
parseNotifyParams = require('../services/parse-notify-params'),
98
pleaseNotify = require('../services/please-notify'),
109
restReturnSuccess = require('../services/rest-return-success'),
1110
router = new express.Router(),
12-
syncStruct = require('../services/sync-struct'),
1311
urlencodedParser = bodyParser.urlencoded({ extended: false });
1412

1513
function processResponse(req, res, result) {
@@ -31,41 +29,19 @@
3129
}
3230
}
3331

34-
function handleError(req, res, errorMessage) {
35-
processResponse(req, res, errorResult(errorMessage));
32+
function handleError(req, res, err) {
33+
processResponse(req, res, errorResult(err.message));
3634
}
3735

3836
router.post('/', urlencodedParser, function (req, res) {
39-
var apiurl, diffDomain, urlList;
40-
async.waterfall([
41-
function (callback) {
42-
parseNotifyParams(req, callback);
43-
},
44-
function (params, callback) {
45-
apiurl = params.apiurl;
46-
diffDomain = params.diffDomain;
47-
urlList = params.urlList;
48-
callback(null);
49-
},
50-
function (callback) {
51-
syncStruct.watchStruct('data', callback);
52-
},
53-
function (data, callback) {
54-
pleaseNotify(
55-
data,
56-
apiurl,
57-
urlList,
58-
diffDomain,
59-
req,
60-
callback
61-
);
62-
},
63-
function (result) {
64-
processResponse(req, res, result);
65-
}
66-
], function (errorMessage) {
67-
handleError(req, res, errorMessage);
68-
});
37+
const params = parseNotifyParams(req);
38+
const result = pleaseNotify(
39+
params.apiurl,
40+
params.urlList,
41+
params.diffDomain
42+
)
43+
.then(result => processResponse(req, res, result))
44+
.catch(err => handleError(req, res, err));
6945
});
7046

7147
module.exports = router;

0 commit comments

Comments
 (0)