Skip to content

Commit d2641ab

Browse files
committed
Test temp
1 parent 4b5fa4a commit d2641ab

15 files changed

+330
-88
lines changed

client.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ var app,
77
nconf = require('nconf'),
88
packageJson = require('./package.json'),
99
server,
10+
textParser = bodyParser.text({ type: '*/xml'}),
1011
urlencodedParser = bodyParser.urlencoded({ extended: false });
1112

1213
require('console-stamp')(console, 'HH:MM:ss.l');
@@ -47,6 +48,12 @@ app.use(express.static('public', {
4748
maxAge: '1d'
4849
}));
4950

51+
app.post('/RPC2', textParser, function (req, res) {
52+
console.log('post');
53+
console.dir(req.body);
54+
res.send('');
55+
})
56+
5057
app.get('/*', function (req, res) {
5158
var challenge = req.query.challenge || "";
5259
console.log('get');

controllers/ping.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@
3535
}
3636

3737
router.post('/', urlencodedParser, function (req, res) {
38-
const params = parsePingParams(req),
39-
result = ping(params.url)
40-
.then(result => processResponse(req, res, result))
41-
.catch(err => handleError(req, res, err));
38+
const params = parsePingParams(req);
39+
ping(params.url)
40+
.then(result => processResponse(req, res, result))
41+
.catch(err => handleError(req, res, err));
4242
});
4343

4444
module.exports = router;

controllers/please-notify.js

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,16 @@
3535
}
3636

3737
router.post('/', urlencodedParser, function (req, res) {
38-
const params = parseNotifyParams(req),
39-
result = pleaseNotify(
40-
params.apiurl,
41-
params.urlList,
42-
params.diffDomain
43-
)
44-
.then(result => processResponse(req, res, result))
45-
.catch(err => handleError(req, res, err));
38+
const params = parseNotifyParams.rest(req);
39+
pleaseNotify(
40+
params.notifyProcedure,
41+
params.apiurl,
42+
params.protocol,
43+
params.urlList,
44+
params.diffDomain
45+
)
46+
.then(result => processResponse(req, res, result))
47+
.catch(err => handleError(req, res, err));
4648
});
4749

4850
module.exports = router;

controllers/rpc2.js

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

4-
const express = require('express'),
5-
parseRpcParams = require('../services/parse-rpc-params'),
4+
const bodyParser = require('body-parser'),
5+
express = require('express'),
6+
parseRpcRequest = require('../services/parse-rpc-request'),
7+
parseNotifyParams = require('../services/parse-notify-params'),
8+
pleaseNotify = require('../services/please-notify'),
9+
ping = require('../services/ping'),
610
router = new express.Router(),
7-
rpcReturnSuccess = require('../services/rpc-return-success');
11+
rpcReturnSuccess = require('../services/rpc-return-success'),
12+
rpcReturnFault = require('../services/rpc-return-fault'),
13+
textParser = bodyParser.text({ type: '*/xml'});
814

9-
function processResponse(req, res, result) {
15+
function processResponse(req, res, xmlString) {
1016
switch (req.accepts('xml')) {
1117
case 'xml':
1218
res.set('Content-Type', 'text/xml');
13-
res.send(rpcReturnSuccess());
19+
res.send(xmlString);
1420
break;
1521
default:
1622
res.status(406).send('Not Acceptable');
1723
break;
1824
}
1925
}
2026

21-
router.post('/', function (req, res) {
22-
const params = parseRpcParams(req);
23-
console.dir(params);
24-
processResponse(req, res, params);
27+
function handleError(req, res, err) {
28+
console.error(err);
29+
processResponse(req, res, rpcReturnFault(1, err.message));
30+
}
31+
32+
router.post('/', textParser, function (req, res) {
33+
parseRpcRequest(req)
34+
.then(request => {
35+
switch (request.methodName) {
36+
case 'rssCloud.pleaseNotify':
37+
const params = parseNotifyParams.rpc(req, request.params);
38+
pleaseNotify(
39+
params.notifyProcedure,
40+
params.apiurl,
41+
params.protocol,
42+
params.urlList,
43+
params.diffDomain
44+
)
45+
.then(result => processResponse(req, res, rpcReturnSuccess(result.success, result.msg)))
46+
.catch(err => handleError(req, res, err));
47+
break;
48+
case 'rssCloud.ping':
49+
ping(request.params[0])
50+
.then(result => processResponse(req, res, rpcReturnSuccess(result.success, result.msg)))
51+
.catch(err => handleError(req, res, err));
52+
break;
53+
default:
54+
handleError(
55+
req,
56+
res,
57+
new Error(`Can't make the call because "${request.methodName}" is not defined.`)
58+
)
59+
}
60+
})
61+
.catch(err => handleError(req, res, err));
2562
});
2663

2764
module.exports = router;

package-lock.json

Lines changed: 42 additions & 29 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"request": "^2.88.0",
3535
"request-promise-native": "1.0.8",
3636
"sprintf-js": "^1.1.2",
37+
"xml2js": "^0.4.23",
3738
"xmlbuilder": "^13.0.2"
3839
},
3940
"repository": {

services/notify-one.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
if (res.statusCode < 200 || res.statusCode > 299) {
1717
throw new Error('Notification Failed');
1818
}
19+
20+
return true;
1921
}
2022

2123
module.exports = notifyOne;

services/notify-subscribers.js

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,29 +31,32 @@
3131

3232
async function notifySubscribers(resourceUrl) {
3333
const subscriptions = await fetchSubscriptions(resourceUrl);
34-
let apiurl;
3534

36-
for (subscription of subscriptions.pleaseNotify) {
35+
for (let subscription of subscriptions.pleaseNotify) {
3736
const apiurl = subscription.url,
3837
startticks = moment().format('x'),
3938
parts = url.parse(apiurl);
4039

40+
console.log(apiurl);
41+
4142
try {
4243
await notifyOne(resourceUrl, apiurl);
4344

44-
subscriptions[apiurl].ctUpdates += 1;
45-
subscriptions[apiurl].ctConsecutiveErrors = 0;
46-
subscriptions[apiurl].whenLastUpdate = moment().utc().format();
45+
subscription.ctUpdates += 1;
46+
subscription.ctConsecutiveErrors = 0;
47+
subscription.whenLastUpdate = moment().utc().format();
4748

4849
await logEvent(
4950
'Notify',
5051
sprintf(appMessages.log.notify, apiurl, parts.host, resourceUrl, parts.protocol),
5152
startticks
5253
);
5354
} catch (err) {
54-
subscriptions[apiurl].ctErrors += 1;
55-
subscriptions[apiurl].ctConsecutiveErrors += 1;
56-
subscriptions[apiurl].whenLastError = moment().utc().format();
55+
console.error(err.message);
56+
57+
subscription.ctErrors += 1;
58+
subscription.ctConsecutiveErrors += 1;
59+
subscription.whenLastError = moment().utc().format();
5760

5861
await logEvent(
5962
'NotifyFailed',
@@ -63,7 +66,11 @@
6366
}
6467
}
6568

66-
upsertSubscriptions(subscriptions);
69+
console.log('upserting subscriptions');
70+
71+
await upsertSubscriptions(subscriptions);
72+
73+
console.log('upserted subscriptions');
6774
}
6875

6976
module.exports = notifySubscribers;

0 commit comments

Comments
 (0)