48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import http from 'http';
 | 
						|
import _ from 'lodash';
 | 
						|
 | 
						|
const lybsynFeed = 'http://freecodecamp.libsyn.com/render-type/json';
 | 
						|
 | 
						|
export function getLybsynFeed() {
 | 
						|
  return new Promise((resolve, reject) => {
 | 
						|
    http.get(lybsynFeed, res => {
 | 
						|
      let raw = '';
 | 
						|
 | 
						|
      res.on('data', chunk => {
 | 
						|
        raw += chunk;
 | 
						|
      });
 | 
						|
 | 
						|
      res.on('error', err => reject(err));
 | 
						|
 | 
						|
      res.on('end', () => {
 | 
						|
        let feed = [];
 | 
						|
 | 
						|
        try {
 | 
						|
          feed = JSON.parse(raw);
 | 
						|
        } catch (err) {
 | 
						|
          return reject(err);
 | 
						|
        }
 | 
						|
        const items = feed.map(
 | 
						|
          item => _.pick(item, [
 | 
						|
            'full_item_url',
 | 
						|
            'item_title',
 | 
						|
            'release_date',
 | 
						|
            'item_body_short'
 | 
						|
          ])
 | 
						|
        )
 | 
						|
        /* eslint-disable camelcase */
 | 
						|
        .map(({ full_item_url, item_title, release_date, item_body_short}) => ({
 | 
						|
          title: item_title,
 | 
						|
          extract: item_body_short,
 | 
						|
          isoDate: new Date(release_date).toISOString(),
 | 
						|
          link: full_item_url
 | 
						|
        }));
 | 
						|
        /* eslint-enable camelcase */
 | 
						|
        return resolve(items);
 | 
						|
      });
 | 
						|
 | 
						|
    });
 | 
						|
 | 
						|
  });
 | 
						|
}
 |