@@ -46,8 +46,19 @@ class Client
4646
4747 protected $ auth = null ;
4848
49- public function __construct (LoopInterface $ loop , $ socksHost , $ socksPort , ConnectorInterface $ connector = null , Resolver $ resolver = null )
49+ public function __construct ($ socksUrl , LoopInterface $ loop , ConnectorInterface $ connector = null , Resolver $ resolver = null )
5050 {
51+ // assume default scheme if none is given
52+ if (strpos ($ socksUrl , ':// ' ) === false ) {
53+ $ socksUrl = 'socks:// ' . $ socksUrl ;
54+ }
55+
56+ // parse URL into individual parts
57+ $ parts = parse_url ($ socksUrl );
58+ if (!$ parts || !isset ($ parts ['scheme ' ], $ parts ['host ' ], $ parts ['port ' ])) {
59+ throw new \InvalidArgumentException ('Invalid SOCKS URL ' );
60+ }
61+
5162 if ($ resolver === null ) {
5263 // default to using Google's public DNS server
5364 $ dnsResolverFactory = new DnsFactory ();
@@ -58,8 +69,8 @@ public function __construct(LoopInterface $loop, $socksHost, $socksPort, Connect
5869 }
5970
6071 $ this ->loop = $ loop ;
61- $ this ->socksHost = $ socksHost ;
62- $ this ->socksPort = $ socksPort ;
72+ $ this ->socksHost = $ parts [ ' host ' ] ;
73+ $ this ->socksPort = $ parts [ ' port ' ] ;
6374 $ this ->connector = $ connector ;
6475 $ this ->resolver = $ resolver ;
6576
0 commit comments