File tree 2 files changed +32
-9
lines changed
2 files changed +32
-9
lines changed Original file line number Diff line number Diff line change 1
1
<?php
2
2
namespace Gt \Fetch ;
3
3
4
+ use Gt \Curl \Curl ;
5
+ use Gt \Curl \CurlMulti ;
4
6
use Gt \Http \Uri ;
5
7
use Http \Promise \Promise as HttpPromise ;
6
8
use Http \Client \HttpClient ;
@@ -33,13 +35,19 @@ class Http implements HttpClient, HttpAsyncClient {
33
35
34
36
public function __construct (
35
37
array $ options = [],
36
- float $ interval = 0.01
38
+ float $ interval = 0.01 ,
39
+ string $ curlClass = Curl::class,
40
+ string $ curlMultiClass = CurlMulti::class
37
41
) {
38
42
$ this ->options = $ options + $ this ->options ;
39
43
$ this ->interval = $ interval ;
40
44
41
45
$ this ->loop = LoopFactory::create ();
42
- $ this ->requestResolver = new RequestResolver ($ this ->loop );
46
+ $ this ->requestResolver = new RequestResolver (
47
+ $ this ->loop ,
48
+ $ curlClass ,
49
+ $ curlMultiClass
50
+ );
43
51
$ this ->timer = $ this ->loop ->addPeriodicTimer (
44
52
$ this ->interval ,
45
53
[$ this ->requestResolver , "tick " ]
@@ -114,12 +122,15 @@ public function getOptions():array {
114
122
}
115
123
116
124
/**
117
- * @param string|UriInterface $uri
125
+ * @param string|UriInterface $input
118
126
* @return string
119
127
*/
120
- public function ensureUriInterface ($ uri ):UriInterface {
121
- if (is_string ($ uri )) {
122
- $ uri = new Uri ($ uri );
128
+ public function ensureUriInterface ($ input ):UriInterface {
129
+ if ($ input instanceof RequestInterface) {
130
+ $ uri = $ input ->getUri ();
131
+ }
132
+ else {
133
+ $ uri = new Uri ($ input );
123
134
}
124
135
125
136
return $ uri ;
Original file line number Diff line number Diff line change @@ -26,20 +26,31 @@ class RequestResolver {
26
26
/** @var string[] */
27
27
protected $ headerList ;
28
28
29
- public function __construct (LoopInterface $ loop ) {
29
+ protected $ curlClass ;
30
+ protected $ curlMultiClass ;
31
+
32
+ public function __construct (
33
+ LoopInterface $ loop ,
34
+ string $ curlClass ,
35
+ string $ curlMultiClass
36
+ ) {
30
37
$ this ->loop = $ loop ;
31
38
$ this ->curlList = [];
32
39
$ this ->curlMultiList = [];
33
40
$ this ->deferredList = [];
34
41
$ this ->headerList = [];
42
+
43
+ $ this ->curlClass = $ curlClass ;
44
+ $ this ->curlMultiClass = $ curlMultiClass ;
35
45
}
36
46
37
47
public function add (
38
48
UriInterface $ uri ,
39
49
array $ init ,
40
50
Deferred $ deferred
41
51
):void {
42
- $ curl = new Curl ($ uri );
52
+ /** @var CurlInterface $curl */
53
+ $ curl = new $ this ->curlClass ($ uri );
43
54
44
55
if (!empty ($ init ["curlopt " ])) {
45
56
$ curl ->setOptArray ($ init ["curlopt " ]);
@@ -50,7 +61,8 @@ public function add(
50
61
$ curl ->setOpt (CURLOPT_HEADERFUNCTION , [$ this , "writeHeader " ]);
51
62
$ curl ->setOpt (CURLOPT_WRITEFUNCTION , [$ this , "writeBody " ]);
52
63
53
- $ curlMulti = new CurlMulti ();
64
+ /** @var CurlMultiInterface $curlMulti */
65
+ $ curlMulti = new $ this ->curlMultiClass ();
54
66
$ curlMulti ->add ($ curl );
55
67
56
68
$ this ->curlList []= $ curl ;
You can’t perform that action at this time.
0 commit comments