if(!filter_var($host, FILTER_VALIDATE_IP) && !@dns_get_record($host . '.', DNS_A + DNS_AAAA) && !gethostbyname($host)) {
$this->logger->debug('URL cannot be resolved.', ['url' => $url, 'callstack' => System::callstack(20)]);
$this->profiler->stopRecording();
- return CurlResult::createErrorCurl($url);
+ return CurlResult::createErrorCurl($this->logger, $url);
}
if (Network::isLocalLink($url)) {
if (strlen($url) > 1000) {
$this->logger->debug('URL is longer than 1000 characters.', ['url' => $url, 'callstack' => System::callstack(20)]);
$this->profiler->stopRecording();
- return CurlResult::createErrorCurl(substr($url, 0, 200));
+ return CurlResult::createErrorCurl($this->logger, substr($url, 0, 200));
}
$parts2 = [];
if (Network::isUrlBlocked($url)) {
$this->logger->info('Domain is blocked.', ['url' => $url]);
$this->profiler->stopRecording();
- return CurlResult::createErrorCurl($url);
+ return CurlResult::createErrorCurl($this->logger, $url);
}
$conf = [];
$exception->hasResponse()) {
return new GuzzleResponse($exception->getResponse(), $url, $exception->getCode(), '');
} else {
- return new CurlResult($url, '', ['http_code' => 500], $exception->getCode(), '');
+ return new CurlResult($this->logger, $url, '', ['http_code' => 500], $exception->getCode(), '');
}
} catch (InvalidArgumentException | \InvalidArgumentException $argumentException) {
$this->logger->info('Invalid Argument for HTTP call.', ['url' => $url, 'method' => $method, 'exception' => $argumentException]);
- return new CurlResult($url, '', ['http_code' => 500], $argumentException->getCode(), $argumentException->getMessage());
+ return new CurlResult($this->logger, $url, '', ['http_code' => 500], $argumentException->getCode(), $argumentException->getMessage());
} finally {
unlink($conf['sink']);
$this->logger->debug('Request stop.', ['url' => $url, 'method' => $method]);
use Friendica\Network\HTTPClient\Capability\ICanHandleHttpResponses;
use Friendica\Network\HTTPException\UnprocessableEntityException;
use Friendica\Util\Network;
+use Psr\Log\LoggerInterface;
/**
* A content class for Curl call results
*/
private $error;
+ /**
+ * @var LoggerInterface
+ */
+ protected $logger;
+
/**
* Creates an errored CURL response
*
* @return ICanHandleHttpResponses a CURL with error response
* @throws UnprocessableEntityException
*/
- public static function createErrorCurl(string $url = '')
+ public static function createErrorCurl(LoggerInterface $logger, string $url = '')
{
- return new CurlResult($url, '', ['http_code' => 0]);
+ return new CurlResult($logger, $url, '', ['http_code' => 0]);
}
/**
*
* @throws UnprocessableEntityException when HTTP code of the CURL response is missing
*/
- public function __construct(string $url, string $result, array $info, int $errorNumber = 0, string $error = '')
+ public function __construct(LoggerInterface $logger, string $url, string $result, array $info, int $errorNumber = 0, string $error = '')
{
+ $this->logger = $logger;
+
if (!array_key_exists('http_code', $info)) {
throw new UnprocessableEntityException('CURL response doesn\'t contains a response HTTP code');
}
$this->errorNumber = $errorNumber;
$this->error = $error;
- Logger::debug('construct', ['url' => $url, 'returncode' => $this->returnCode, 'result' => $result]);
+ $this->logger->debug('construct', ['url' => $url, 'returncode' => $this->returnCode, 'result' => $result]);
$this->parseBodyHeader($result);
$this->checkSuccess();
}
if (!$this->isSuccess) {
- Logger::debug('debug', ['info' => $this->info]);
+ $this->logger->debug('debug', ['info' => $this->info]);
}
if (!$this->isSuccess && $this->errorNumber == CURLE_OPERATION_TIMEDOUT) {
namespace Friendica\Test\src\Network\HTTPClient\Response;
-use Dice\Dice;
-use Friendica\DI;
use Friendica\Network\HTTPClient\Response\CurlResult;
-use Mockery\MockInterface;
use PHPUnit\Framework\TestCase;
-use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;
class CurlResultTest extends TestCase
{
- protected function setUp(): void
- {
- parent::setUp();
-
- /** @var Dice|MockInterface $dice */
- $dice = \Mockery::mock(Dice::class)->makePartial();
- $dice = $dice->addRules(include __DIR__ . '/../../../../../static/dependencies.config.php');
-
- $logger = new NullLogger();
- $dice->shouldReceive('create')
- ->with(LoggerInterface::class)
- ->andReturn($logger);
-
- DI::init($dice);
- }
-
/**
* @small
*/
$body = file_get_contents(__DIR__ . '/../../../../datasets/curl/about.body');
- $curlResult = new \Friendica\Network\HTTPClient\Response\CurlResult('https://test.local', $header . $body, [
+ $curlResult = new \Friendica\Network\HTTPClient\Response\CurlResult(new NullLogger(),'https://test.local', $header . $body, [
'http_code' => 200,
'content_type' => 'text/html; charset=utf-8',
'url' => 'https://test.local'
$body = file_get_contents(__DIR__ . '/../../../../datasets/curl/about.body');
- $curlResult = new \Friendica\Network\HTTPClient\Response\CurlResult('https://test.local/test/it', $header . $body, [
+ $curlResult = new \Friendica\Network\HTTPClient\Response\CurlResult(new NullLogger(),'https://test.local/test/it', $header . $body, [
'http_code' => 301,
'content_type' => 'text/html; charset=utf-8',
'url' => 'https://test.local/test/it',
$body = file_get_contents(__DIR__ . '/../../../../datasets/curl/about.body');
- $curlResult = new \Friendica\Network\HTTPClient\Response\CurlResult('https://test.local/test/it', $header . $body, [
+ $curlResult = new \Friendica\Network\HTTPClient\Response\CurlResult(new NullLogger(),'https://test.local/test/it', $header . $body, [
'http_code' => 500,
'content_type' => 'text/html; charset=utf-8',
'url' => 'https://test.local/test/it',
$body = file_get_contents(__DIR__ . '/../../../../datasets/curl/about.body');
- $curlResult = new CurlResult('https://test.local/test/it?key=value', $header . $body, [
+ $curlResult = new CurlResult(new NullLogger(),'https://test.local/test/it?key=value', $header . $body, [
'http_code' => 301,
'content_type' => 'text/html; charset=utf-8',
'url' => 'https://test.local/test/it?key=value',
$header = file_get_contents(__DIR__ . '/../../../../datasets/curl/about.head');
$body = file_get_contents(__DIR__ . '/../../../../datasets/curl/about.body');
- $curlResult = new \Friendica\Network\HTTPClient\Response\CurlResult('https://test.local', $header . $body, [
+ $curlResult = new \Friendica\Network\HTTPClient\Response\CurlResult(new NullLogger(),'https://test.local', $header . $body, [
'http_code' => 200,
'content_type' => 'text/html; charset=utf-8',
'url' => 'https://test.local'
$header = file_get_contents(__DIR__ . '/../../../../datasets/curl/about.head');
$body = file_get_contents(__DIR__ . '/../../../../datasets/curl/about.body');
- $curlResult = new \Friendica\Network\HTTPClient\Response\CurlResult('https://test.local', $header . $body, [
+ $curlResult = new \Friendica\Network\HTTPClient\Response\CurlResult(new NullLogger(), 'https://test.local', $header . $body, [
'http_code' => 200,
'content_type' => 'text/html; charset=utf-8',
'url' => 'https://test.local'
$header = file_get_contents(__DIR__ . '/../../../../datasets/curl/about.head');
$body = file_get_contents(__DIR__ . '/../../../../datasets/curl/about.body');
- $curlResult = new CurlResult('https://test.local', $header . $body, [
+ $curlResult = new CurlResult(new NullLogger(),'https://test.local', $header . $body, [
'http_code' => 200,
'content_type' => 'text/html; charset=utf-8',
'url' => 'https://test.local'