diff --git a/README.md b/README.md index 23ee560..1763b8a 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Deploy with composer: ```json ... "require": { - "kristuff/abuseipdb": ">=0.9.9-stable" + "kristuff/abuseipdb": ">=0.9.10-stable" }, ``` diff --git a/composer.json b/composer.json index 61b0af6..860a576 100644 --- a/composer.json +++ b/composer.json @@ -2,6 +2,7 @@ "name": "kristuff/abuseipdb", "description": "A PHP wrapper for AbuseIPDB API v2", "type": "library", + "keywords": ["abuseIPDB", "API"], "license": "MIT", "authors": [ { diff --git a/lib/ApiBase.php b/lib/ApiBase.php index e35a348..c0d029e 100644 --- a/lib/ApiBase.php +++ b/lib/ApiBase.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.9 + * @version 0.9.10 * @copyright 2020-2021 Kristuff */ @@ -47,9 +47,10 @@ abstract class ApiBase * shorname, id (string), long name * last paramter is false when the category cant' be used alone * + * @static * @var array */ - protected $aipdbApiCategories = [ + protected static $aipdbApiCategories = [ // Altering DNS records resulting in improper redirection. ['dns-c' , '1', 'DNS Compromise', true], @@ -134,25 +135,27 @@ abstract class ApiBase * Get the list of report categories * * @access public + * @static * * @return array */ - public function getCategories() + public static function getCategories(): array { - return $this->aipdbApiCategories; + return self::$aipdbApiCategories; } /** * Get the category id corresponding to given name * * @access public - * @param string $categoryName The report categoriy name + * @static + * @param string $categoryName The report category name * * @return string|bool The category id in string format if found, otherwise false */ - public function getCategoryIdbyName(string $categoryName) + public static function getCategoryIdbyName(string $categoryName) { - foreach ($this->aipdbApiCategories as $cat){ + foreach (self::$aipdbApiCategories as $cat){ if ($cat[0] === $categoryName) { return $cat; } @@ -166,13 +169,14 @@ abstract class ApiBase * Get the category name corresponding to given id * * @access public + * @static * @param string $categoryId The report category id * * @return string|bool The category name if found, otherwise false */ - public function getCategoryNameById(string $categoryId) + public static function getCategoryNameById(string $categoryId) { - foreach ($this->aipdbApiCategories as $cat){ + foreach (self::$aipdbApiCategories as $cat){ if ($cat[1] === $categoryId) { return $cat; } @@ -186,15 +190,16 @@ abstract class ApiBase * Get the index of category corresponding to given value * * @access protected + * @static * @param string $value The report category id or name * @param string $index The index in value array * * @return int|bool The category index if found, otherwise false */ - protected function getCategoryIndex(string $value, int $index) + protected static function getCategoryIndex(string $value, int $index) { $i = 0; - foreach ($this->aipdbApiCategories as $cat){ + foreach (self::$aipdbApiCategories as $cat){ if ($cat[$index] === $value) { return $i; } @@ -229,7 +234,7 @@ abstract class ApiBase foreach ($cats as $cat) { // get index on our array of categories - $catIndex = is_numeric($cat) ? $this->getCategoryIndex($cat, 1) : $this->getCategoryIndex($cat, 0); + $catIndex = is_numeric($cat) ? self::getCategoryIndex($cat, 1) : self::getCategoryIndex($cat, 0); // check if found if ($catIndex === false ){ @@ -237,13 +242,13 @@ abstract class ApiBase } // get Id - $catId = $this->aipdbApiCategories[$catIndex][1]; + $catId = self::$aipdbApiCategories[$catIndex][1]; // need another ? if ($needAnother !== false){ // is a standalone cat ? - if ($this->aipdbApiCategories[$catIndex][3] === false) { + if (self::$aipdbApiCategories[$catIndex][3] === false) { $needAnother = true; } else { diff --git a/lib/ApiHandler.php b/lib/ApiHandler.php index 549c985..7f93857 100644 --- a/lib/ApiHandler.php +++ b/lib/ApiHandler.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.9 + * @version 0.9.10 * @copyright 2020-2021 Kristuff */ @@ -33,9 +33,9 @@ class ApiHandler extends ApiBase use CurlTrait; /** - * @var string $version + * @var string */ - const VERSION = 'v0.9.9'; + const VERSION = 'v0.9.10'; /** * The ips to remove from report messages @@ -314,7 +314,7 @@ class ApiHandler extends ApiBase * @param bool $plainText True to get the response in plaintext list. Default is false * @param int $confidenceMinimum The abuse confidence score minimum (subscribers feature). Default is 100. * The confidence minimum must be between 25 and 100. - * This parameter is subscriber feature (not honored otherwise). + * This parameter is a subscriber feature (not honored otherwise). * * @return ApiResponse * @throws \RuntimeException diff --git a/lib/ApiResponse.php b/lib/ApiResponse.php index 1231c00..8fa3e3c 100644 --- a/lib/ApiResponse.php +++ b/lib/ApiResponse.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.9 + * @version 0.9.10 * @copyright 2020-2021 Kristuff */ @@ -50,7 +50,7 @@ class ApiResponse public function __construct(?string $plaintext = null) { $this->curlResponse = $plaintext; - $this->decodedResponse = json_decode($plaintext, false); + $this->decodedResponse = !empty($plaintext) ? json_decode($plaintext, false) : null; } /** @@ -112,4 +112,27 @@ class ApiResponse { return ($this->decodedResponse && $this->decodedResponse->errors) ? $this->decodedResponse->errors : []; } + + /** + * Get an internal error message in an ApiResponse object + * + * @access public + * @static + * @param string $message The error message + * + * @return ApiResponse + */ + public static function createErrorResponse(string $message): ApiResponse + { + $response = [ + "errors" => [ + [ + "title" => "Internal Error", + "detail" => $message + ] + ] + ]; + + return new ApiResponse(json_encode($response)); + } } \ No newline at end of file diff --git a/lib/CurlTrait.php b/lib/CurlTrait.php index bf73b1e..ba44556 100644 --- a/lib/CurlTrait.php +++ b/lib/CurlTrait.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.9 + * @version 0.9.10 * @copyright 2020-2021 Kristuff */ diff --git a/lib/InvalidPermissionException.php b/lib/InvalidPermissionException.php index bdf6ead..fd5b75c 100644 --- a/lib/InvalidPermissionException.php +++ b/lib/InvalidPermissionException.php @@ -14,7 +14,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.9 + * @version 0.9.10 * @copyright 2020-2021 Kristuff */ diff --git a/lib/SilentApiHandler.php b/lib/QuietApiHandler.php similarity index 77% rename from lib/SilentApiHandler.php rename to lib/QuietApiHandler.php index dd45bc2..0bea1ee 100644 --- a/lib/SilentApiHandler.php +++ b/lib/QuietApiHandler.php @@ -14,43 +14,21 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * - * @version 0.9.9 + * @version 0.9.10 * @copyright 2020-2021 Kristuff */ namespace Kristuff\AbuseIPDB; /** - * Class SilentApiHandler + * Class QuietApiHandler * * Overwrite ApiHandler with Exception handling - * Instead of Exception, all method return an ApiResponse that may + * Instead of Exception, all methods return an ApiResponse that may * contains errors from the AbuseIPDB API, or internal errors */ -class SilentApiHandler extends ApiHandler +class QuietApiHandler extends ApiHandler { - /** - * Get an internal error message in an ApiResponse object - * - * @access public - * @param string $message The error message - * - * @return ApiResponse - */ - public function getErrorResponse(string $message): ApiResponse - { - $response = [ - "errors" => [ - [ - "title" => "Internal Error", - "detail" => $message - ] - ] - ]; - - return new ApiResponse(json_encode($response)); - } - /** * Performs a 'report' api request, with Exception handling * @@ -66,7 +44,7 @@ class SilentApiHandler extends ApiHandler try { return parent::report($ip,$categories,$message); } catch (\Exception $e) { - return $this->getErrorResponse($e->getMessage()); + return ApiResponse::createErrorResponse($e->getMessage()); } } @@ -83,7 +61,7 @@ class SilentApiHandler extends ApiHandler try { return parent::bulkReport($filePath); } catch (\Exception $e) { - return $this->getErrorResponse($e->getMessage()); + return ApiResponse::createErrorResponse($e->getMessage()); } } @@ -100,7 +78,7 @@ class SilentApiHandler extends ApiHandler try { return parent::clearAddress($ip); } catch (\Exception $e) { - return $this->getErrorResponse($e->getMessage()); + return ApiResponse::createErrorResponse($e->getMessage()); } } @@ -119,7 +97,7 @@ class SilentApiHandler extends ApiHandler try { return parent::check($ip, $maxAgeInDays, $verbose); } catch (\Exception $e) { - return $this->getErrorResponse($e->getMessage()); + return ApiResponse::createErrorResponse($e->getMessage()); } } @@ -137,7 +115,7 @@ class SilentApiHandler extends ApiHandler try { return parent::checkBlock($network, $maxAgeInDays); } catch (\Exception $e) { - return $this->getErrorResponse($e->getMessage()); + return ApiResponse::createErrorResponse($e->getMessage()); } } @@ -149,7 +127,7 @@ class SilentApiHandler extends ApiHandler * @param bool $plainText True to get the response in plaintext list. Default is false * @param int $confidenceMinimum The abuse confidence score minimum (subscribers feature). Default is 100. * The confidence minimum must be between 25 and 100. - * This parameter is subscriber feature (not honored otherwise). + * This parameter is a subscriber feature (not honored otherwise). * * @return ApiResponse */ @@ -158,7 +136,7 @@ class SilentApiHandler extends ApiHandler try { return parent::blacklist($limit, $plainText, $confidenceMinimum); } catch (\Exception $e) { - return $this->getErrorResponse($e->getMessage()); + return ApiResponse::createErrorResponse($e->getMessage()); } } } \ No newline at end of file