Skip to content
Snippets Groups Projects
Commit 1f650c7e authored by Jeroen Tubex's avatar Jeroen Tubex Committed by Carsten Logemann
Browse files

Issue #3109152 by JeroenT, C_Logemann: Move _linkchecker_isvalid_response_code...

Issue #3109152 by JeroenT, C_Logemann: Move _linkchecker_isvalid_response_code out of .module file to a dedicated service
parent 4196af8b
No related branches found
No related tags found
No related merge requests found
......@@ -106,63 +106,6 @@ function linkchecker_watchdog_log($type, $message, $variables = [], $severity =
}
}
/**
* Defines the list of allowed response codes for form input validation.
*
* @param int $code
* An numeric response code.
*
* @return bool
* TRUE if the status code is valid, otherwise FALSE.
*/
function _linkchecker_isvalid_response_code($code) {
$responses = [
100 => 'Continue',
101 => 'Switching Protocols',
200 => 'OK',
201 => 'Created',
202 => 'Accepted',
203 => 'Non-Authoritative Information',
204 => 'No Content',
205 => 'Reset Content',
206 => 'Partial Content',
300 => 'Multiple Choices',
301 => 'Moved Permanently',
302 => 'Found',
303 => 'See Other',
304 => 'Not Modified',
305 => 'Use Proxy',
307 => 'Temporary Redirect',
400 => 'Bad Request',
401 => 'Unauthorized',
402 => 'Payment Required',
403 => 'Forbidden',
404 => 'Not Found',
405 => 'Method Not Allowed',
406 => 'Not Acceptable',
407 => 'Proxy Authentication Required',
408 => 'Request Time-out',
409 => 'Conflict',
410 => 'Gone',
411 => 'Length Required',
412 => 'Precondition Failed',
413 => 'Request Entity Too Large',
414 => 'Request-URI Too Large',
415 => 'Unsupported Media Type',
416 => 'Requested range not satisfiable',
417 => 'Expectation Failed',
500 => 'Internal Server Error',
501 => 'Not Implemented',
502 => 'Bad Gateway',
503 => 'Service Unavailable',
504 => 'Gateway Time-out',
505 => 'HTTP Version not supported',
];
return array_key_exists($code, $responses);
}
/**
* Implements hook_form_BASE_FORM_ID_alter().
*/
......
......@@ -54,3 +54,6 @@ services:
- '@entity_type.manager'
- '@linkchecker.extractor'
- '@database'
linkchecker.response_codes:
class: Drupal\linkchecker\LinkCheckerResponseCodes
......@@ -11,6 +11,7 @@ use Drupal\Core\Url;
use Drupal\filter\FilterPluginCollection;
use Drupal\filter\FilterPluginManager;
use Drupal\linkchecker\LinkCheckerLinkInterface;
use Drupal\linkchecker\LinkCheckerResponseCodesInterface;
use Drupal\linkchecker\LinkCheckerService;
use Drupal\linkchecker\LinkCleanUp;
use Drupal\linkchecker\LinkExtractorBatch;
......@@ -64,10 +65,17 @@ class LinkCheckerAdminSettingsForm extends ConfigFormBase {
*/
protected $userStorage;
/**
* The link checker response codes service.
*
* @var \Drupal\linkchecker\LinkCheckerResponseCodesInterface
*/
protected $linkCheckerResponseCodes;
/**
* LinkCheckerAdminSettingsForm constructor.
*/
public function __construct(ConfigFactoryInterface $config_factory, DateFormatterInterface $date_formatter, FilterPluginManager $plugin_manager_filter, LinkCheckerService $linkchecker_checker, LinkExtractorBatch $extractorBatch, LinkCleanUp $linkCleanUp, UserStorageInterface $user_storage) {
public function __construct(ConfigFactoryInterface $config_factory, DateFormatterInterface $date_formatter, FilterPluginManager $plugin_manager_filter, LinkCheckerService $linkchecker_checker, LinkExtractorBatch $extractorBatch, LinkCleanUp $linkCleanUp, UserStorageInterface $user_storage, LinkCheckerResponseCodesInterface $linkCheckerResponseCodes) {
parent::__construct($config_factory);
$this->dateFormatter = $date_formatter;
$this->extractorBatch = $extractorBatch;
......@@ -75,6 +83,7 @@ class LinkCheckerAdminSettingsForm extends ConfigFormBase {
$this->linkCheckerService = $linkchecker_checker;
$this->filterPluginManager = $plugin_manager_filter;
$this->userStorage = $user_storage;
$this->linkCheckerResponseCodes = $linkCheckerResponseCodes;
}
/**
......@@ -88,7 +97,8 @@ class LinkCheckerAdminSettingsForm extends ConfigFormBase {
$container->get('linkchecker.checker'),
$container->get('linkchecker.extractor_batch'),
$container->get('linkchecker.clean_up'),
$container->get('entity_type.manager')->getStorage('user')
$container->get('entity_type.manager')->getStorage('user'),
$container->get('linkchecker.response_codes')
);
}
......@@ -424,7 +434,7 @@ class LinkCheckerAdminSettingsForm extends ConfigFormBase {
$form_state->setValue('linkchecker_ignore_response_codes', trim($form_state->getValue('linkchecker_ignore_response_codes')));
$ignore_response_codes = preg_split('/(\r\n?|\n)/', $form_state->getValue('linkchecker_ignore_response_codes'));
foreach ($ignore_response_codes as $ignore_response_code) {
if (!_linkchecker_isvalid_response_code($ignore_response_code)) {
if (!$this->linkCheckerResponseCodes->isValid($ignore_response_code)) {
$form_state->setErrorByName('linkchecker_ignore_response_codes', $this->t('Invalid response code %code found.', ['%code' => $ignore_response_code]));
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment