diff options
| author | 2021-03-26 19:13:23 +0100 | |
|---|---|---|
| committer | 2021-03-26 19:13:23 +0100 | |
| commit | eeff1a17b0ae13c32560e9d1b59c6e82965f3e6d (patch) | |
| tree | 8224f828f2d9ea094f2a8f608c0eb1eef07793b1 /app | |
| parent | 49f920e19dff22e8026707d98cf93b556a2703a9 (diff) | |
Suport standard HTTP 410 Gone (#3561)
When a feed returns an HTTP 410 Gone, mute the corresponding feed, i.e. stop refreshing it.
Example of such feed, Les Décodeurs (Libération) https://rss.liberation.fr/rss/100893/
Diffstat (limited to 'app')
| -rwxr-xr-x | app/Controllers/feedController.php | 5 | ||||
| -rw-r--r-- | app/Models/Feed.php | 3 | ||||
| -rw-r--r-- | app/Models/FeedDAO.php | 5 |
3 files changed, 12 insertions, 1 deletions
diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php index 7daba4822..463aa25ed 100755 --- a/app/Controllers/feedController.php +++ b/app/Controllers/feedController.php @@ -349,6 +349,11 @@ class FreshRSS_feed_Controller extends Minz_ActionController { } catch (FreshRSS_Feed_Exception $e) { Minz_Log::warning($e->getMessage()); $feedDAO->updateLastUpdate($feed->id(), true); + if ($e->getCode() === 410) { + // HTTP 410 Gone + Minz_Log::warning('Muting gone feed: ' . $feed->url(false)); + $feedDAO->mute($feed->id(), true); + } $feed->unlock(); continue; } diff --git a/app/Models/Feed.php b/app/Models/Feed.php index af9c54719..51d63ef42 100644 --- a/app/Models/Feed.php +++ b/app/Models/Feed.php @@ -287,7 +287,8 @@ class FreshRSS_Feed extends Minz_Model { if ((!$mtime) || $simplePie->error()) { $errorMessage = $simplePie->error(); throw new FreshRSS_Feed_Exception( - ($errorMessage == '' ? 'Unknown error for feed' : $errorMessage) . ' [' . $this->url . ']' + ($errorMessage == '' ? 'Unknown error for feed' : $errorMessage) . ' [' . $this->url . ']', + $simplePie->status_code() ); } diff --git a/app/Models/FeedDAO.php b/app/Models/FeedDAO.php index 43485451c..af599c2a6 100644 --- a/app/Models/FeedDAO.php +++ b/app/Models/FeedDAO.php @@ -192,6 +192,11 @@ class FreshRSS_FeedDAO extends Minz_ModelPdo implements FreshRSS_Searchable { } } + public function mute($id, $value = true) { + $sql = 'UPDATE `_feed` SET ttl=' . ($value ? '-' : '') . 'ABS(ttl) WHERE id=' . intval($id); + return $this->pdo->exec($sql); + } + public function changeCategory($idOldCat, $idNewCat) { $catDAO = FreshRSS_Factory::createCategoryDao(); $newCat = $catDAO->searchById($idNewCat); |
