private $url;
/**
- * Logger
- * @var LoggerInterface
+ * Default headers to send out to the API endpoint
+ * @var array
*/
- private $logger;
+ private $headers;
/**
- * Cache
- * @var Call\Cache\Service
+ * Current endpoints links
+ * @var Links
*/
- private $cache;
+ private $links;
/**
- * Promisor
- * @var Future
+ * Current endpoint data's Content-Type
+ * @var API\ContentType
*/
- private $future;
+ private $type;
/**
- * The HTTP client
- * @var Client
+ * Current endpoint's data
+ * @var array|object
*/
- private $client;
+ private $data;
/**
- * Default headers to send out to the API endpoint
- * @var array
+ * Logger
+ * @var LoggerInterface
*/
- private $headers;
+ private $logger;
/**
- * Current endpoint data's Content-Type
- * @var API\ContentType
+ * Cache
+ * @var Call\Cache\Service
*/
- private $type;
+ private $cache;
/**
- * Current endpoint's data
- * @var array|object
+ * Promisor
+ * @var Future
*/
- private $data;
+ private $future;
/**
- * Current endpoints links
- * @var Links
+ * The HTTP client
+ * @var Client
*/
- private $links;
+ private $client;
/**
* Create a new API endpoint root
function __invoke($cbg) : Promise {
$this->logger->debug(__FUNCTION__);
- $consumer = new Consumer($this->client);
+ $consumer = new Consumer($this->getFuture(), function() {
+ $this->client->send();
+ });
invoke:
if ($cbg instanceof Generator) {
function export() : array {
$data = $this->data;
$url = clone $this->url;
- $type = clone $this->type;
+ $type = $this->type ? clone $this->type : null;
$links = $this->links ? clone $this->links : null;
$headers = $this->headers;
return compact("url", "data", "type", "links", "headers");
return $that;
}
+ /**
+ * Perform a HEAD request against the endpoint's underlying URL
+ *
+ * @param mixed $args The HTTP query string parameters
+ * @param array $headers The request's additional HTTP headers
+ * @return Promise
+ */
+ function head($args = null, array $headers = null, $cache = null) : Promise {
+ return $this->request("HEAD", $args, null, $headers, $cache);
+ }
+
/**
* Perform a GET request against the endpoint's underlying URL
*