// $curlOptions[CURLOPT_MAXREDIRS] = 5;
if (!empty($opts['accept_content'])) {
- $curlOptions[CURLOPT_HTTPHEADER][] = ['Accept: ' . $opts['accept_content']];
+ if (empty($curlOptions[CURLOPT_HTTPHEADER])) {
+ $curlOptions[CURLOPT_HTTPHEADER] = [];
+ }
+ array_push($curlOptions[CURLOPT_HTTPHEADER], 'Accept: ' . $opts['accept_content']);
}
if (!empty($opts['header'])) {
- $curlOptions[CURLOPT_HTTPHEADER][] = $opts['header'];
+ if (empty($curlOptions[CURLOPT_HTTPHEADER])) {
+ $curlOptions[CURLOPT_HTTPHEADER] = [];
+ }
+ $curlOptions[CURLOPT_HTTPHEADER] = array_merge($opts['header'], $curlOptions[CURLOPT_HTTPHEADER]);
}
$curlOptions[CURLOPT_RETURNTRANSFER] = true;
$curlOptions[CURLOPT_ENCODING] = '';
if (!empty($opts['headers'])) {
- $curlOptions[CURLOPT_HTTPHEADER][] = $opts['headers'];
+ if (empty($curlOptions[CURLOPT_HTTPHEADER])) {
+ $curlOptions[CURLOPT_HTTPHEADER] = [];
+ }
+ $curlOptions[CURLOPT_HTTPHEADER] = array_merge($opts['headers'], $curlOptions[CURLOPT_HTTPHEADER]);
}
if (!empty($opts['nobody'])) {
$curlOptions[CURLOPT_BINARYTRANSFER] = 1;
}
+ $logger = $this->logger;
+
$onRedirect = function(
RequestInterface $request,
ResponseInterface $response,
UriInterface $uri
- ) {
- $this->logger->notice('Curl redirect.', ['url' => $request->getUri(), 'to' => $uri]);
+ ) use ($logger) {
+ $logger->notice('Curl redirect.', ['url' => $request->getUri(), 'to' => $uri]);
};
$onHeaders = function (ResponseInterface $response) use ($opts) {
'allow_redirect' => [
'max' => 8,
'on_redirect' => $onRedirect,
- 'on_headers' => $onHeaders,
'track_redirect' => true,
'strict' => true,
'referer' => true,
],
+ 'on_headers' => $onHeaders,
+ 'sink' => tempnam(get_temppath(), 'guzzle'),
'curl' => $curlOptions
]);
} catch (TransferException $exception) {
if ($exception instanceof RequestException &&
$exception->hasResponse()) {
- return new GuzzleResponse($exception->getResponse(), $url, $exception->getCode(), $exception->getMessage());
+ return new GuzzleResponse($exception->getResponse(), $url, $exception->getCode(), '');
} else {
- return new CurlResult($url, '', ['http_code' => $exception->getCode()], $exception->getCode(), $exception->getMessage());
+ return new CurlResult($url, '', ['http_code' => $exception->getCode()], $exception->getCode(), '');
}
} finally {
$this->profiler->saveTimestamp($stamp1, 'network');