urllib 2.37.1 → 2.37.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/History.md CHANGED
@@ -1,4 +1,10 @@
1
1
 
2
+ 2.37.2 / 2021-06-07
3
+ ==================
4
+
5
+ **fixes**
6
+ * [[`04734a1`](http://github.com/node-modules/urllib/commit/04734a13e146da501f4e38333d5de9f9bbb259d1)] - fix: 🐛 should trigger response event when follow redirect (#361) (Hongcai Deng <<admin@dhchouse.com>>)
7
+
2
8
  2.37.1 / 2021-04-15
3
9
  ==================
4
10
 
package/lib/urllib.js CHANGED
@@ -520,6 +520,7 @@ function requestWithCallback(url, args, callback) {
520
520
  }
521
521
  return;
522
522
  }
523
+
523
524
  var cb = callback;
524
525
  callback = null;
525
526
  var headers = {};
@@ -529,49 +530,16 @@ function requestWithCallback(url, args, callback) {
529
530
  headers = res.headers;
530
531
  }
531
532
 
532
- // handle digest auth
533
- if (statusCode === 401 && headers['www-authenticate']
534
- && !options.headers.authorization && args.digestAuth) {
535
- var authenticate = headers['www-authenticate'];
536
- if (authenticate.indexOf('Digest ') >= 0) {
537
- debug('Request#%d %s: got digest auth header WWW-Authenticate: %s', reqId, url, authenticate);
538
- options.headers.authorization = digestAuthHeader(options.method, options.path, authenticate, args.digestAuth);
539
- debug('Request#%d %s: auth with digest header: %s', reqId, url, options.headers.authorization);
540
- if (res.headers['set-cookie']) {
541
- options.headers.cookie = res.headers['set-cookie'].join(';');
542
- }
543
- args.headers = options.headers;
544
- return exports.requestWithCallback(url, args, cb);
545
- }
533
+ if (handleDigestAuth(res, cb)) {
534
+ return;
546
535
  }
547
536
 
548
- var requestUseTime = Date.now() - requestStartTime;
549
- if (timing) {
550
- timing.contentDownload = requestUseTime;
551
- }
537
+ var response = createCallbackResponse(data, res);
552
538
 
553
539
  debug('[%sms] done, %s bytes HTTP %s %s %s %s, keepAliveSocket: %s, timing: %j, socketHandledRequests: %s, socketHandledResponses: %s',
554
- requestUseTime, responseSize, statusCode, options.method, options.host, options.path,
540
+ response.requestUseTime, responseSize, statusCode, options.method, options.host, options.path,
555
541
  keepAliveSocket, timing, socketHandledRequests, socketHandledResponses);
556
542
 
557
- var response = {
558
- status: statusCode,
559
- statusCode: statusCode,
560
- statusMessage: statusMessage,
561
- headers: headers,
562
- size: responseSize,
563
- aborted: responseAborted,
564
- rt: requestUseTime,
565
- keepAliveSocket: keepAliveSocket,
566
- data: data,
567
- requestUrls: args.requestUrls,
568
- timing: timing,
569
- remoteAddress: remoteAddress,
570
- remotePort: remotePort,
571
- socketHandledRequests: socketHandledRequests,
572
- socketHandledResponses: socketHandledResponses,
573
- };
574
-
575
543
  if (err) {
576
544
  var agentStatus = '';
577
545
  if (agent && typeof agent.getCurrentStatus === 'function') {
@@ -620,6 +588,45 @@ function requestWithCallback(url, args, callback) {
620
588
 
621
589
  cb(err, data, args.streaming ? res : response);
622
590
 
591
+ emitResponseEvent(err, response);
592
+ }
593
+
594
+ function createAndEmitResponseEvent(data, res) {
595
+ var response = createCallbackResponse(data, res);
596
+ emitResponseEvent(null, response);
597
+ }
598
+
599
+ function createCallbackResponse(data, res) {
600
+ var requestUseTime = Date.now() - requestStartTime;
601
+ if (timing) {
602
+ timing.contentDownload = requestUseTime;
603
+ }
604
+
605
+ var headers = {};
606
+ if (res && res.headers) {
607
+ headers = res.headers;
608
+ }
609
+
610
+ return {
611
+ status: statusCode,
612
+ statusCode: statusCode,
613
+ statusMessage: statusMessage,
614
+ headers: headers,
615
+ size: responseSize,
616
+ aborted: responseAborted,
617
+ rt: requestUseTime,
618
+ keepAliveSocket: keepAliveSocket,
619
+ data: data,
620
+ requestUrls: args.requestUrls,
621
+ timing: timing,
622
+ remoteAddress: remoteAddress,
623
+ remotePort: remotePort,
624
+ socketHandledRequests: socketHandledRequests,
625
+ socketHandledResponses: socketHandledResponses,
626
+ };
627
+ }
628
+
629
+ function emitResponseEvent(err, response) {
623
630
  if (args.emitter) {
624
631
  // keep to use the same reqMeta object on request event before
625
632
  reqMeta.url = parsedUrl.href;
@@ -637,6 +644,30 @@ function requestWithCallback(url, args, callback) {
637
644
  }
638
645
  }
639
646
 
647
+ function handleDigestAuth(res, cb) {
648
+ var headers = {};
649
+ if (res && res.headers) {
650
+ headers = res.headers;
651
+ }
652
+ // handle digest auth
653
+ if (statusCode === 401 && headers['www-authenticate']
654
+ && !options.headers.authorization && args.digestAuth) {
655
+ var authenticate = headers['www-authenticate'];
656
+ if (authenticate.indexOf('Digest ') >= 0) {
657
+ debug('Request#%d %s: got digest auth header WWW-Authenticate: %s', reqId, url, authenticate);
658
+ options.headers.authorization = digestAuthHeader(options.method, options.path, authenticate, args.digestAuth);
659
+ debug('Request#%d %s: auth with digest header: %s', reqId, url, options.headers.authorization);
660
+ if (res.headers['set-cookie']) {
661
+ options.headers.cookie = res.headers['set-cookie'].join(';');
662
+ }
663
+ args.headers = options.headers;
664
+ exports.requestWithCallback(url, args, cb);
665
+ return true;
666
+ }
667
+ }
668
+ return false;
669
+ }
670
+
640
671
  function handleRedirect(res) {
641
672
  var err = null;
642
673
  if (args.followRedirect && statuses.redirect[res.statusCode]) { // handle redirect
@@ -740,6 +771,7 @@ function requestWithCallback(url, args, callback) {
740
771
  var result = handleRedirect(res);
741
772
  if (result.redirect) {
742
773
  res.resume();
774
+ createAndEmitResponseEvent(null, res);
743
775
  return;
744
776
  }
745
777
  if (result.error) {
@@ -781,6 +813,7 @@ function requestWithCallback(url, args, callback) {
781
813
  var result = handleRedirect(res);
782
814
  if (result.redirect) {
783
815
  res.resume();
816
+ createAndEmitResponseEvent(null, res);
784
817
  return;
785
818
  }
786
819
  if (result.error) {
@@ -874,6 +907,7 @@ function requestWithCallback(url, args, callback) {
874
907
  return done(result.error, body, res);
875
908
  }
876
909
  if (result.redirect) {
910
+ createAndEmitResponseEvent(null, res);
877
911
  return;
878
912
  }
879
913
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "urllib",
3
- "version": "2.37.1",
3
+ "version": "2.37.2",
4
4
  "description": "Help in opening URLs (mostly HTTP) in a complex world — basic and digest authentication, redirections, cookies and more.",
5
5
  "keywords": [
6
6
  "urllib",