rss-bridge/lib/error.php

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

82 lines
1.9 KiB
PHP
Raw Normal View History

<?php
2018-11-16 23:48:59 +03:00
/**
* This file is part of RSS-Bridge, a PHP project capable of generating RSS and
* Atom feeds for websites that don't have one.
*
* For the full license information, please view the UNLICENSE file distributed
* with this source code.
*
* @package Core
* @license http://unlicense.org/ UNLICENSE
* @link https://github.com/rss-bridge/rss-bridge
*/
/**
* Throws an exception when called.
*
* @throws \Exception when called
2018-11-16 23:48:59 +03:00
* @param string $message The error message
* @param int $code The HTTP error code
* @link https://en.wikipedia.org/wiki/List_of_HTTP_status_codes List of HTTP
* status codes
*/
function returnError($message, $code)
{
throw new \Exception($message, $code);
}
2018-11-16 23:48:59 +03:00
/**
* Returns HTTP Error 400 (Bad Request) when called.
*
* @param string $message The error message
*/
function returnClientError($message)
{
2016-11-09 21:10:40 +03:00
returnError($message, 400);
}
2018-11-16 23:48:59 +03:00
/**
* Returns HTTP Error 500 (Internal Server Error) when called.
*
* @param string $message The error message
*/
function returnServerError($message)
{
2016-11-09 21:10:40 +03:00
returnError($message, 500);
}
/**
* Stores bridge-specific errors in a cache file.
*
* @param string $bridgeName The name of the bridge that failed.
* @param int $code The error code
*
* @return int The total number the same error has appeared
*/
function logBridgeError($bridgeName, $code)
{
2022-07-06 13:14:04 +03:00
$cacheFactory = new CacheFactory();
2022-07-06 13:14:04 +03:00
$cache = $cacheFactory->create();
$cache->setScope('error_reporting');
$cache->setkey($bridgeName . '_' . $code);
$cache->purgeCache(86400); // 24 hours
if ($report = $cache->loadData()) {
$report = json_decode($report, true);
$report['time'] = time();
$report['count']++;
} else {
$report = [
'error' => $code,
'time' => time(),
'count' => 1,
];
}
$cache->saveData(json_encode($report));
return $report['count'];
}