Merge pull request #14296 from mexon/mat/contact-gone

Remove contact immediately on 410 response code
pull/14372/head
Michael Vogel 2024-07-19 22:12:36 +02:00 zatwierdzone przez GitHub
commit 35e815b949
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
4 zmienionych plików z 44 dodań i 0 usunięć

Wyświetl plik

@ -84,6 +84,13 @@ interface ICanHandleHttpResponses
*/
public function isSuccess(): bool;
/**
* Returns if the URL is permanently gone (return code 410)
*
* @return bool
*/
public function isGone(): bool;
/**
* @return string
*/

Wyświetl plik

@ -56,6 +56,11 @@ class CurlResult implements ICanHandleHttpResponses
*/
private $isSuccess;
/**
* @var boolean true (if HTTP 410 result) or false
*/
private $isGone;
/**
* @var string the URL which was called
*/
@ -148,6 +153,7 @@ class CurlResult implements ICanHandleHttpResponses
$this->parseBodyHeader($result);
$this->checkSuccess();
$this->checkGone();
$this->checkRedirect();
$this->checkInfo();
}
@ -194,6 +200,11 @@ class CurlResult implements ICanHandleHttpResponses
}
}
private function checkGone()
{
$this->isGone = $this->returnCode == 410;
}
private function checkRedirect()
{
if (!array_key_exists('url', $this->info)) {
@ -322,6 +333,12 @@ class CurlResult implements ICanHandleHttpResponses
return $this->isSuccess;
}
/** {@inheritDoc} */
public function isGone(): bool
{
return $this->isSuccess;
}
/** {@inheritDoc} */
public function getUrl(): string
{

Wyświetl plik

@ -38,6 +38,8 @@ class GuzzleResponse extends Response implements ICanHandleHttpResponses, Respon
private $isTimeout;
/** @var boolean */
private $isSuccess;
/** @var boolean */
private $isGone;
/**
* @var int the error number or 0 (zero) if no error
*/
@ -63,6 +65,7 @@ class GuzzleResponse extends Response implements ICanHandleHttpResponses, Respon
$this->errorNumber = $errorNumber;
$this->checkSuccess();
$this->checkGone();
$this->checkRedirect($response);
}
@ -86,6 +89,11 @@ class GuzzleResponse extends Response implements ICanHandleHttpResponses, Respon
}
}
private function checkGone()
{
$this->isGone = $this->getStatusCode() == 410;
}
private function checkRedirect(ResponseInterface $response)
{
$headersRedirect = $response->getHeader(RedirectMiddleware::HISTORY_HEADER) ?? [];
@ -135,6 +143,12 @@ class GuzzleResponse extends Response implements ICanHandleHttpResponses, Respon
return $this->isSuccess;
}
/** {@inheritDoc} */
public function isGone(): bool
{
return $this->isGone;
}
/** {@inheritDoc} */
public function getUrl(): string
{

Wyświetl plik

@ -174,6 +174,12 @@ class OnePoll
return false;
}
if ($curlResult->isGone()) {
Logger::notice('URL is permanently gone', ['id' => $contact['id'], 'url' => $contact['poll']]);
Contact::remove($contact['id']);
return false;
}
if ($curlResult->redirectIsPermanent()) {
Logger::notice('Poll address permanently changed', [
'id' => $contact['id'],