TestConnection.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\AdvancedSearch\Controller\Adminhtml\Search\System\Config;
  8. use Magento\Backend\App\Action;
  9. use Magento\Backend\App\Action\Context;
  10. use Magento\AdvancedSearch\Model\Client\ClientResolver;
  11. use Magento\Framework\Controller\Result\JsonFactory;
  12. use Magento\Framework\Filter\StripTags;
  13. class TestConnection extends Action
  14. {
  15. /**
  16. * Authorization level of a basic admin session.
  17. *
  18. * @see _isAllowed()
  19. */
  20. const ADMIN_RESOURCE = 'Magento_CatalogSearch::config_catalog_search';
  21. /**
  22. * @var ClientResolver
  23. */
  24. private $clientResolver;
  25. /**
  26. * @var JsonFactory
  27. */
  28. private $resultJsonFactory;
  29. /**
  30. * @var StripTags
  31. */
  32. private $tagFilter;
  33. /**
  34. * @param Context $context
  35. * @param ClientResolver $clientResolver
  36. * @param JsonFactory $resultJsonFactory
  37. * @param StripTags $tagFilter
  38. */
  39. public function __construct(
  40. Context $context,
  41. ClientResolver $clientResolver,
  42. JsonFactory $resultJsonFactory,
  43. StripTags $tagFilter
  44. ) {
  45. parent::__construct($context);
  46. $this->clientResolver = $clientResolver;
  47. $this->resultJsonFactory = $resultJsonFactory;
  48. $this->tagFilter = $tagFilter;
  49. }
  50. /**
  51. * Check for connection to server
  52. *
  53. * @return \Magento\Framework\Controller\Result\Json
  54. */
  55. public function execute()
  56. {
  57. $result = [
  58. 'success' => false,
  59. 'errorMessage' => '',
  60. ];
  61. $options = $this->getRequest()->getParams();
  62. try {
  63. if (empty($options['engine'])) {
  64. throw new \Magento\Framework\Exception\LocalizedException(
  65. __('Missing search engine parameter.')
  66. );
  67. }
  68. $response = $this->clientResolver->create($options['engine'], $options)->testConnection();
  69. if ($response) {
  70. $result['success'] = true;
  71. }
  72. } catch (\Magento\Framework\Exception\LocalizedException $e) {
  73. $result['errorMessage'] = $e->getMessage();
  74. } catch (\Exception $e) {
  75. $message = __($e->getMessage());
  76. $result['errorMessage'] = $this->tagFilter->filter($message);
  77. }
  78. /** @var \Magento\Framework\Controller\Result\Json $resultJson */
  79. $resultJson = $this->resultJsonFactory->create();
  80. return $resultJson->setData($result);
  81. }
  82. }