49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.2 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);
 | 
						|
      });
 | 
						|
    });
 | 
						|
  });
 | 
						|
}
 |