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 +6 -0
- package/lib/urllib.js +71 -37
- package/package.json +1 -1
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
|
-
|
533
|
-
|
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
|
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
|
|