6
6
7
7
'use strict' ;
8
8
9
- var URL = require ( 'url-parse' ) ;
10
9
var QS = require ( 'querystring' ) ;
11
10
var Connection = require ( './connection' ) . Connection ;
12
11
var fmt = require ( 'util' ) . format ;
@@ -43,16 +42,16 @@ var CLIENT_PROPERTIES = {
43
42
} ;
44
43
45
44
// Construct the main frames used in the opening handshake
46
- function openFrames ( vhost , query , credentials , extraClientProperties ) {
45
+ function openFrames ( vhost , searchParams , credentials , extraClientProperties ) {
47
46
if ( ! vhost )
48
47
vhost = '/' ;
49
48
else
50
49
vhost = QS . unescape ( vhost ) ;
51
50
52
- var query = query || { } ;
51
+ var searchParams = searchParams || new URLSearchParams ( ) ;
53
52
54
53
function intOrDefault ( val , def ) {
55
- return ( val === undefined ) ? def : parseInt ( val ) ;
54
+ return ( val === null ) ? def : parseInt ( val ) ;
56
55
}
57
56
58
57
var clientProperties = Object . create ( CLIENT_PROPERTIES ) ;
@@ -62,12 +61,12 @@ function openFrames(vhost, query, credentials, extraClientProperties) {
62
61
'clientProperties' : copyInto ( extraClientProperties , clientProperties ) ,
63
62
'mechanism' : credentials . mechanism ,
64
63
'response' : credentials . response ( ) ,
65
- 'locale' : query . locale || 'en_US' ,
64
+ 'locale' : searchParams . get ( ' locale' ) || 'en_US' ,
66
65
67
66
// 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 ) ,
71
70
72
71
// open
73
72
'virtualHost' : vhost ,
@@ -104,37 +103,30 @@ function connect(url, socketOptions, openCallback) {
104
103
105
104
var protocol , fields ;
106
105
if ( typeof url === 'object' ) {
107
- protocol = ( url . protocol || 'amqp' ) + ' :';
106
+ protocol = url . protocol || 'amqp:' ;
108
107
sockopts . host = url . hostname ;
109
108
sockopts . servername = url . hostname ;
110
109
sockopts . port = url . port || ( ( protocol === 'amqp:' ) ? 5672 : 5671 ) ;
111
110
112
111
var user , pass ;
113
112
// Only default if both are missing, to have the same behaviour as
114
113
// the stringly URL.
115
- if ( url . username == undefined && url . password == undefined ) {
114
+ if ( ! url . username && ! url . password ) {
116
115
user = 'guest' ; pass = 'guest' ;
117
116
} else {
118
117
user = url . username || '' ;
119
118
pass = url . password || '' ;
120
119
}
121
120
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 ) ;
130
122
} else {
131
- var parts = URL ( url , true ) ; // yes, parse the query string
123
+ var parts = new URL ( url ) ;
132
124
protocol = parts . protocol ;
133
125
sockopts . host = parts . hostname ;
134
126
sockopts . servername = parts . hostname ;
135
127
sockopts . port = parseInt ( parts . port ) || ( ( protocol === 'amqp:' ) ? 5672 : 5671 ) ;
136
128
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 ) ;
138
130
}
139
131
140
132
var sockok = false ;
0 commit comments