40 lines
948 B
JavaScript
40 lines
948 B
JavaScript
import Parser from 'rss-parser';
|
|
import _ from 'lodash';
|
|
|
|
const parser = new Parser();
|
|
|
|
const mediumFeed = 'https://medium.freecodecamp.org/feed';
|
|
|
|
function getExtract(str) {
|
|
return str.slice(0, str.indexOf('</p>') + 4);
|
|
}
|
|
|
|
|
|
function addResponsiveClass(str) {
|
|
return str.replace(/\<img/g, '<img class="img-responsive"');
|
|
}
|
|
|
|
export function getMediumFeed() {
|
|
return new Promise((resolve, reject) => {
|
|
parser.parseURL(mediumFeed, (err, feed) => {
|
|
if (err) {
|
|
reject(err);
|
|
}
|
|
|
|
const items = feed.items
|
|
.map(
|
|
item => _.pick(item, ['title', 'link', 'isoDate', 'content:encoded'])
|
|
)
|
|
.map(
|
|
(item) => ({
|
|
...item,
|
|
extract: getExtract(item['content:encoded'])
|
|
})
|
|
)
|
|
.map(item => _.omit(item, ['content:encoded']))
|
|
.map(item => ({ ...item, extract: addResponsiveClass(item.extract)}));
|
|
resolve(items);
|
|
});
|
|
});
|
|
}
|