use Friendica\Network\IHTTPClient;
use Friendica\Util\Profiler;
use GuzzleHttp\Client;
+use GuzzleHttp\HandlerStack;
use GuzzleHttp\RequestOptions;
+use mattwright\URLResolver;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\UriInterface;
$this->baseUrl = $baseUrl;
}
- public function createClient(): IHTTPClient
+ /**
+ * Creates a IHTTPClient for communications with HTTP endpoints
+ *
+ * @param HandlerStack|null $handlerStack (optional) A handler replacement (just usefull at test environments)
+ *
+ * @return IHTTPClient
+ */
+ public function createClient(HandlerStack $handlerStack = null): IHTTPClient
{
$proxy = $this->config->get('system', 'proxy');
ResponseInterface $response,
UriInterface $uri
) use ($logger) {
- $logger->notice('Curl redirect.', ['url' => $request->getUri(), 'to' => $uri]);
+ $logger->notice('Curl redirect.', ['url' => $request->getUri(), 'to' => $uri, 'method' => $request->getMethod()]);
};
$userAgent = FRIENDICA_PLATFORM . " '" .
RequestOptions::HEADERS => [
'User-Agent' => $userAgent,
],
+ 'handler' => $handlerStack ?? HandlerStack::create(),
]);
- return new HTTPClient($logger, $this->profiler, $this->config, $userAgent, $guzzle);
+ $resolver = new URLResolver();
+ $resolver->setUserAgent($userAgent);
+ $resolver->setMaxRedirects(10);
+ $resolver->setRequestTimeout(10);
+ // if the file is too large then exit
+ $resolver->setMaxResponseDataSize(1000000);
+
+ return new HTTPClient($logger, $this->profiler, $guzzle, $resolver);
}
}