Graby\Ring\Client\SafeCurlHandler::_invokeAsArray PHP Method

_invokeAsArray() public method

public _invokeAsArray ( array $request ) : array
$request array
return array
    public function _invokeAsArray(array $request)
    {
        $factory = $this->factory;
        // Ensure headers are by reference. They're updated elsewhere.
        $result = $factory($request, curl_init());
        $h = $result[0];
        $hd =& $result[1];
        $body = $result[2];
        Core::doSleep($request);
        try {
            // override the default body stream with the request response
            $safecurl = new SafeCurl($h);
            $body = $safecurl->execute(Core::url($request));
        } catch (Exception $e) {
            // URL wasn't safe, return empty content
            $body = '';
            $safeCurlError = $e->getMessage();
        }
        $response = ['transfer_stats' => curl_getinfo($h)];
        $response['curl']['error'] = curl_error($h);
        $response['curl']['errno'] = curl_errno($h);
        $response['transfer_stats'] = array_merge($response['transfer_stats'], $response['curl']);
        curl_close($h);
        // override default error message in case of SafeCurl error
        if (isset($safeCurlError)) {
            $response['err_message'] = $safeCurlError;
        }
        return CurlFactory::createResponse([$this, '_invokeAsArray'], $request, $response, $hd, Stream::factory($body));
    }