compatibility with 2.6.0 and 3.1.0
[m6w6/seekat] / lib / API / Call.php
index 56e15dcab4a759d9b5e86d4d9fd1972039df93d0..26a52ee0995fbff2807d3e4ab850ca97f157eea9 100644 (file)
@@ -3,9 +3,11 @@
 namespace seekat\API;
 
 use Exception;
-use http\Client;
-use http\Client\Request;
-use http\Client\Response;
+use http\ {
+       Client,
+       Client\Request,
+       Client\Response
+};
 use React\Promise\Deferred;
 use seekat\API;
 use SplObserver;
@@ -15,7 +17,7 @@ class Call extends Deferred implements SplObserver
 {
        /**
         * The endpoint
-        * @var \seekat\API
+        * @var API
         */
        private $api;
 
@@ -40,9 +42,9 @@ class Call extends Deferred implements SplObserver
        /**
         * Create a deferred promise for the response of $request
         *
-        * @var \seekat\API $api The endpoint of the request
-        * @var Client $client The HTTP client to send the request
-        * @var Request The request to execute
+        * @param API $api The endpoint of the request
+        * @param Client $client The HTTP client to send the request
+        * @param Request $request The request to execute
         */
        function __construct(API $api, Client $client, Request $request) {
                $this->api = $api;
@@ -52,9 +54,16 @@ class Call extends Deferred implements SplObserver
                parent::__construct(function($resolve, $reject) {
                        return $this->cancel($resolve, $reject);
                });
-               
+
                $client->attach($this);
-               $client->enqueue($request);
+               $client->enqueue($request, function(Response $response) {
+                       $this->response = $response;
+                       $this->complete(
+                               [$this, "resolve"],
+                               [$this, "reject"]
+                       );
+                       return true;
+               });
                /* start off */
                $client->once();
        }
@@ -64,9 +73,9 @@ class Call extends Deferred implements SplObserver
         *
         * Import the response's data on success and resolve the promise.
         *
-        * @var SplSubject $client The observed HTTP client
-        * @var Request The request which generated the update
-        * @var object $progress The progress information
+        * @param SplSubject $client The observed HTTP client
+        * @param Request $request The request which generated the update
+        * @param object $progress The progress information
         */
        function update(SplSubject $client, Request $request = null, $progress = null) {
                if ($request !== $this->request) {
@@ -74,14 +83,6 @@ class Call extends Deferred implements SplObserver
                }
 
                $this->notify((object) compact("client", "request", "progress"));
-
-               if ($progress->info === "finished") {
-                       $this->response = $this->client->getResponse();
-                       $this->complete(
-                               [$this, "resolve"],
-                               [$this, "reject"]
-                       );
-               }
        }
 
        /**
@@ -99,10 +100,8 @@ class Call extends Deferred implements SplObserver
                                $reject($e);
                        }
                } else {
-                       $reject($this->client->getTransferInfo($this->request)["error"]);
+                       $reject($this->client->getTransferInfo($this->request)->error);
                }
-
-               $this->client->dequeue($this->request);
        }
 
        /**