Skip to content

Commit 53cebe1

Browse files
committed
Update feed, config, etc.
1 parent 2f65f3b commit 53cebe1

File tree

6 files changed

+62
-10
lines changed

6 files changed

+62
-10
lines changed

app.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ app.use('/blog', require('./routes/blog'));
115115
app.use('/user', require('./routes/user').router);
116116
app.use('/', require('./routes/index'));
117117

118+
app.use('/feed', require('./routes/feed'));
119+
118120
app.use('/static', express.static('static'));
119121

120122
var errorHandler = require('./error_handler');

exusconfig.js

Lines changed: 0 additions & 9 deletions
This file was deleted.

exusconfig.js.example

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
var config = {
3+
'db': {
4+
'host': 'localhost',
5+
'port': 5432,
6+
'username': 'example',
7+
'passwd': '44GC44Gu6aCDfuOCt+OCmeODs+OCt+OCmeODs+ODj+OCmeOCquODgeOCmeODpeOCquODi+ODvH4=',
8+
'name': 'example'
9+
},
10+
'rss': {
11+
'numItem': (new Date()).getFullYear() - 1996,
12+
'urlfmt': 'https\:\/\/www.example.com/blog/article/%(id)d',
13+
'meta': {
14+
'title': 'example.com',
15+
'description': '',
16+
'feed_url': 'https://example.com/feed',
17+
'site_url': 'https://example.com/blog',
18+
'language': 'zh-cn',
19+
'generator': 'expressus, RSS for Node',
20+
'copyright': '1996 olive <example@example.com>'
21+
}
22+
}
23+
};
24+
25+
module.exports = config;

exusdb.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ monitor.attach(options);
1010
var pgp = pgplib(options);
1111

1212
var pg_cnstr = process.env.DATABASE_URL ||
13-
sprintf("postgres://%(db_username)s:%(db_passwd)s@%(db_host)s:%(db_port)s/tooyoung", config);
13+
sprintf("postgres://%(username)s:%(passwd)s@%(host)s:%(port)s/%(name)s", config['db']);
1414

1515
var connection = undefined;
1616

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
"pg": "^4.3.0",
3333
"pg-monitor": "^0.2.0",
3434
"pg-promise": "^2.3.1",
35+
"rss": "^1.2.1",
3536
"sprintf-js": "^1.0.2",
3637
"validator": "^4.4.0",
3738
"xss-filters": "^1.2.6"

routes/feed.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
2+
'use strict';
3+
4+
var router = require('express').Router();
5+
var RSS = require('rss');
6+
var exusdb = require('../exusdb');
7+
var config = require('../exusconfig');
8+
var _ = require('lodash');
9+
var sprintf = require('sprintf-js').sprintf;
10+
11+
router.get('/', function (req, res, next) {
12+
var feed = new RSS(config['rss']['meta']);
13+
exusdb.db().manyOrNone('SELECT * FROM "article_detail" \
14+
WHERE NOT trashed AND NOT indraft \
15+
ORDER BY post_date DESC LIMIT $1',
16+
[ config['rss']['numItem'] ])
17+
.then((data) => _.forEach(data, function (item) {
18+
var url = sprintf(config['rss']['urlfmt'], { 'id': item['id'] });
19+
feed.item({
20+
'title': item['title'],
21+
'description': item['summary'],
22+
'url': url, 'guid': url,
23+
'author': item['username'],
24+
'date': item['post_date']
25+
});
26+
})
27+
).then(() =>
28+
// application/xml or text/xml?
29+
res.contentType('application/xml').send(feed.xml())
30+
);
31+
});
32+
33+
module.exports = router;

0 commit comments

Comments
 (0)