| 
									
										
										
										
											2018-05-15 06:12:05 +01:00
										 |  |  | 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); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2019-02-16 00:31:05 +00:00
										 |  |  |         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 | 
					
						
							|  |  |  |             }) | 
					
						
							|  |  |  |           ); | 
					
						
							| 
									
										
										
										
											2018-05-15 06:12:05 +01:00
										 |  |  |         /* eslint-enable camelcase */ | 
					
						
							|  |  |  |         return resolve(items); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | } |