ObserverRedirectFailure   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 82
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 18
c 1
b 0
f 0
dl 0
loc 82
rs 10
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 15 1
A getUrl() 0 3 1
A execute() 0 10 3
1
<?php
2
/**
3
 * Copyright (c) 2019. Volodymyr Hryvinskyi.  All rights reserved.
4
 * @author: <mailto:[email protected]>
5
 * @github: <https://github.com/hryvinskyi>
6
 */
7
8
namespace Hryvinskyi\InvisibleCaptcha\Model\Provider\Failure;
9
10
use Hryvinskyi\InvisibleCaptcha\Helper\Config\General;
11
use Hryvinskyi\InvisibleCaptcha\Model\Provider\AbstractFailure;
12
use Hryvinskyi\InvisibleCaptcha\Model\Provider\FailureMessages;
13
use Hryvinskyi\InvisibleCaptcha\Model\ReCaptcha\Response;
14
use Magento\Framework\App\Action\Action;
15
use Magento\Framework\App\ActionFlag;
16
use Magento\Framework\App\Response\Http;
17
use Magento\Framework\App\ResponseInterface;
18
use Magento\Framework\Message\ManagerInterface as MessageManagerInterface;
19
use Magento\Framework\UrlInterface;
20
21
class ObserverRedirectFailure extends AbstractFailure
22
{
23
    /**
24
     * @var MessageManagerInterface
25
     */
26
    private $messageManager;
27
28
    /**
29
     * @var ActionFlag
30
     */
31
    private $actionFlag;
32
33
    /**
34
     * @var General
35
     */
36
    private $config;
37
38
    /**
39
     * @var RedirectUrlInterface
40
     */
41
    private $redirectUrlProvider;
42
43
    /**
44
     * @var UrlInterface
45
     */
46
    private $url;
47
48
    /**
49
     * RedirectFailure constructor.
50
     *
51
     * @param MessageManagerInterface $messageManager
52
     * @param ActionFlag $actionFlag
53
     * @param General $config
54
     * @param UrlInterface $url
55
     * @param FailureMessages $failureMessages
56
     * @param RedirectUrlInterface|null $redirectUrlProvider
57
     */
58
    public function __construct(
59
        MessageManagerInterface $messageManager,
60
        ActionFlag $actionFlag,
61
        General $config,
62
        UrlInterface $url,
63
        FailureMessages $failureMessages,
64
        RedirectUrlInterface $redirectUrlProvider = null
65
    ) {
66
        $this->messageManager = $messageManager;
67
        $this->actionFlag = $actionFlag;
68
        $this->config = $config;
69
        $this->redirectUrlProvider = $redirectUrlProvider;
70
        $this->url = $url;
71
72
        parent::__construct($failureMessages);
73
    }
74
75
    /**
76
     * Get redirect URL
77
     *
78
     * @return string
79
     */
80
    private function getUrl()
81
    {
82
        return $this->redirectUrlProvider->getRedirectUrl();
83
    }
84
85
    /**
86
     * Handle captcha failure
87
     *
88
     * @param Response $verifyReCaptcha
89
     * @param ResponseInterface $response
90
     *
91
     * @return void
92
     */
93
    public function execute(Response $verifyReCaptcha, ResponseInterface $response = null)
94
    {
95
        if ($response === null || !$response instanceof Http) {
96
            return;
97
        }
98
99
        $this->messageManager->addErrorMessage($this->getMessagesString($verifyReCaptcha));
100
        $this->actionFlag->set('', Action::FLAG_NO_DISPATCH, /** @scrutinizer ignore-type */ true);
101
102
        $response->setRedirect($this->getUrl());
103
    }
104
}
105