Kelunik\Acme\AcmeClient::requestNonce PHP Method

requestNonce() private method

Requests a new request nonce from the server.
private requestNonce ( string $uri ) : Amp\Promise
$uri string URI to issue the HEAD request against
return Amp\Promise resolves to the retrieved nonce
    private function requestNonce($uri)
    {
        if (!is_string($uri)) {
            throw new InvalidArgumentException(sprintf("\$uri must be of type string, %s given.", gettype($uri)));
        }
        $deferred = new Deferred();
        $request = (new Request())->setMethod("HEAD")->setUri($uri);
        $this->http->request($request)->when(function ($error = null, Response $response = null) use($deferred, $uri) {
            if ($error) {
                /** @var Throwable|Exception $error */
                $deferred->fail(new AcmeException("HEAD request to {$uri} failed, could not obtain a replay nonce: " . $error->getMessage(), null, $error));
            } else {
                if (!$response->hasHeader("replay-nonce")) {
                    $deferred->fail(new AcmeException("HTTP response didn't carry replay-nonce header."));
                } else {
                    list($nonce) = $response->getHeader("replay-nonce");
                    $deferred->succeed($nonce);
                }
            }
        });
        return $deferred->promise();
    }