66
77'use strict' ;
88
9- var URL = require ( 'url-parse' ) ;
109var QS = require ( 'querystring' ) ;
1110var Connection = require ( './connection' ) . Connection ;
1211var fmt = require ( 'util' ) . format ;
@@ -43,16 +42,16 @@ var CLIENT_PROPERTIES = {
4342} ;
4443
4544// Construct the main frames used in the opening handshake
46- function openFrames ( vhost , query , credentials , extraClientProperties ) {
45+ function openFrames ( vhost , searchParams , credentials , extraClientProperties ) {
4746 if ( ! vhost )
4847 vhost = '/' ;
4948 else
5049 vhost = QS . unescape ( vhost ) ;
5150
52- var query = query || { } ;
51+ var searchParams = searchParams || new URLSearchParams ( ) ;
5352
5453 function intOrDefault ( val , def ) {
55- return ( val === undefined ) ? def : parseInt ( val ) ;
54+ return ( val === null ) ? def : parseInt ( val ) ;
5655 }
5756
5857 var clientProperties = Object . create ( CLIENT_PROPERTIES ) ;
@@ -62,12 +61,12 @@ function openFrames(vhost, query, credentials, extraClientProperties) {
6261 'clientProperties' : copyInto ( extraClientProperties , clientProperties ) ,
6362 'mechanism' : credentials . mechanism ,
6463 'response' : credentials . response ( ) ,
65- 'locale' : query . locale || 'en_US' ,
64+ 'locale' : searchParams . get ( ' locale' ) || 'en_US' ,
6665
6766 // tune-ok
68- 'channelMax' : intOrDefault ( query . channelMax , 0 ) ,
69- 'frameMax' : intOrDefault ( query . frameMax , 0x1000 ) ,
70- 'heartbeat' : intOrDefault ( query . heartbeat , 0 ) ,
67+ 'channelMax' : intOrDefault ( searchParams . get ( ' channelMax' ) , 0 ) ,
68+ 'frameMax' : intOrDefault ( searchParams . get ( ' frameMax' ) , 0x1000 ) ,
69+ 'heartbeat' : intOrDefault ( searchParams . get ( ' heartbeat' ) , 0 ) ,
7170
7271 // open
7372 'virtualHost' : vhost ,
@@ -104,37 +103,30 @@ function connect(url, socketOptions, openCallback) {
104103
105104 var protocol , fields ;
106105 if ( typeof url === 'object' ) {
107- protocol = ( url . protocol || 'amqp' ) + ' :';
106+ protocol = url . protocol || 'amqp:' ;
108107 sockopts . host = url . hostname ;
109108 sockopts . servername = url . hostname ;
110109 sockopts . port = url . port || ( ( protocol === 'amqp:' ) ? 5672 : 5671 ) ;
111110
112111 var user , pass ;
113112 // Only default if both are missing, to have the same behaviour as
114113 // the stringly URL.
115- if ( url . username == undefined && url . password == undefined ) {
114+ if ( ! url . username && ! url . password ) {
116115 user = 'guest' ; pass = 'guest' ;
117116 } else {
118117 user = url . username || '' ;
119118 pass = url . password || '' ;
120119 }
121120
122- var config = {
123- locale : url . locale ,
124- channelMax : url . channelMax ,
125- frameMax : url . frameMax ,
126- heartbeat : url . heartbeat ,
127- } ;
128-
129- fields = openFrames ( url . vhost , config , sockopts . credentials || credentials . plain ( user , pass ) , extraClientProperties ) ;
121+ fields = openFrames ( url . vhost , url . searchParams , sockopts . credentials || credentials . plain ( user , pass ) , extraClientProperties ) ;
130122 } else {
131- var parts = URL ( url , true ) ; // yes, parse the query string
123+ var parts = new URL ( url ) ;
132124 protocol = parts . protocol ;
133125 sockopts . host = parts . hostname ;
134126 sockopts . servername = parts . hostname ;
135127 sockopts . port = parseInt ( parts . port ) || ( ( protocol === 'amqp:' ) ? 5672 : 5671 ) ;
136128 var vhost = parts . pathname ? parts . pathname . substr ( 1 ) : null ;
137- fields = openFrames ( vhost , parts . query , sockopts . credentials || credentialsFromUrl ( parts ) , extraClientProperties ) ;
129+ fields = openFrames ( vhost , parts . searchParams , sockopts . credentials || credentialsFromUrl ( parts ) , extraClientProperties ) ;
138130 }
139131
140132 var sockok = false ;
0 commit comments