11const EventEmitter = require ( 'events' ) . EventEmitter ;
22const FeedMe = require ( 'feedme' ) ;
33const NewsEmitter = require ( 'newsemitter' ) ;
4- const http = require ( 'http' ) ;
5- const https = require ( 'https' ) ;
6- const url = require ( 'url' ) ;
4+ const miniget = require ( 'miniget' ) ;
75const zlib = require ( 'zlib' ) ;
86
97
@@ -21,6 +19,7 @@ module.exports = class FeedReader extends EventEmitter {
2119 constructor ( feed , options ) {
2220 options = options || { } ;
2321 super ( ) ;
22+ this . feed = feed ;
2423 this . options = {
2524 interval : 10 ,
2625 forceInterval : false ,
@@ -53,7 +52,6 @@ module.exports = class FeedReader extends EventEmitter {
5352
5453 this . news . addHistory ( 'item' , this . options . history ) ;
5554
56-
5755 this . newitems = [ ] ;
5856 this . first = this . news . history . item . length === 0 ;
5957
@@ -64,9 +62,7 @@ module.exports = class FeedReader extends EventEmitter {
6462 }
6563 } ) ;
6664
67- this . getOpts = url . parse ( feed ) ;
68- this . getOpts . headers = { } ;
69- Object . assign ( this . getOpts , this . options . requestOpts ) ;
65+ this . getOpts = Object . assign ( { headers : { } } , this . options . requestOpts ) ;
7066 if ( this . options . autoStart ) {
7167 this . start ( ) ;
7268 }
@@ -144,24 +140,14 @@ module.exports = class FeedReader extends EventEmitter {
144140 }
145141 } ;
146142
147- const httpLib = {
148- 'http:' : http ,
149- 'https:' : https ,
150- } [ this . getOpts . protocol ] ;
151- const req = httpLib . get ( this . getOpts , ( res ) => {
152- // Check the response is successful.
153- if ( res . statusCode !== 200 ) {
154-
155- // Check if not modified code is sent back
156- // in this case, the body will be empty.
157- if ( res . statusCode === 304 ) {
158- return success ( [ ] ) ;
159- }
160-
161- return error ( true , new Error ( 'Status Code: ' + res . statusCode ) ) ;
143+ const req = miniget ( this . feed , this . getOpts ) ;
144+ req . on ( 'response' , ( res ) => {
145+ // Check if not modified code is sent back
146+ // in this case, the body will be empty.
147+ if ( res . statusCode === 304 ) {
148+ return success ( [ ] ) ;
162149 }
163150
164-
165151 // Check headers for conditional get.
166152 if ( res . headers [ 'last-modified' ] ) {
167153 this . getOpts . headers [ 'If-Modified-Since' ] = res . headers [ 'last-modified' ] ;
@@ -274,20 +260,18 @@ module.exports = class FeedReader extends EventEmitter {
274260 switch ( res . headers [ 'content-encoding' ] ) {
275261 case 'gzip' :
276262 output = zlib . createGunzip ( ) ;
277- res . pipe ( output ) ;
263+ req . pipe ( output ) ;
278264 break ;
279265 case 'deflate' :
280266 output = zlib . createInflate ( ) ;
281- res . pipe ( output ) ;
267+ req . pipe ( output ) ;
282268 break ;
283269 default :
284- output = res ;
270+ output = req ;
285271 }
286272
287273 // Pipe data from gunzipper/inflater to parser.
288- output . on ( 'data' , ( chunk ) => {
289- parser . write ( chunk ) ;
290- } ) ;
274+ output . pipe ( parser ) ;
291275
292276 output . on ( 'end' , ( ) => {
293277 if ( parser . close ) { parser . close ( ) ; }
0 commit comments