handleCouldNotPurgeImgixCacheOnInvalidApiKey()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 13
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 2.0078

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 7
c 1
b 0
f 0
nc 2
nop 1
dl 0
loc 13
ccs 7
cts 8
cp 0.875
crap 2.0078
rs 10
1
<?php
2
namespace Aoe\Imgix\TYPO3;
3
4
/***************************************************************
5
 *  Copyright notice
6
 *
7
 *  (c) 2018 AOE GmbH <[email protected]>
8
 *
9
 *  All rights reserved
10
 *
11
 *  This script is part of the TYPO3 project. The TYPO3 project is
12
 *  free software; you can redistribute it and/or modify
13
 *  it under the terms of the GNU General Public License as published by
14
 *  the Free Software Foundation; either version 3 of the License, or
15
 *  (at your option) any later version.
16
 *
17
 *  The GNU General Public License can be found at
18
 *  http://www.gnu.org/copyleft/gpl.html.
19
 *
20
 *  This script is distributed in the hope that it will be useful,
21
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
22
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23
 *  GNU General Public License for more details.
24
 *
25
 *  This copyright notice MUST APPEAR in all copies of the script!
26
 ***************************************************************/
27
28
use Aoe\Imgix\Domain\Model\ImagePurgeResult;
29
use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
30
use TYPO3\CMS\Core\Messaging\FlashMessage;
31
use TYPO3\CMS\Core\Messaging\FlashMessageQueue;
32
use TYPO3\CMS\Core\Messaging\FlashMessageService;
33
use TYPO3\CMS\Core\Utility\GeneralUtility;
34
use TYPO3\CMS\Lang\LanguageService;
35
36
class PurgeImgixCacheErrorHandler
37
{
38
    /**
39
     * @var FlashMessageQueue
40
     */
41
    private $flashMessageQueue;
42
43
    /**
44
     * @param FlashMessageService $flashMessageService
45
     */
46 2
    public function __construct(FlashMessageService $flashMessageService)
47
    {
48 2
        $this->flashMessageQueue = $flashMessageService->getMessageQueueByIdentifier();
49 2
    }
50
51
    /**
52
     * @param string $imageUrl
53
     * @param ImagePurgeResult $result
54
     * @return void
55
     */
56 1
    public function handleCouldNotPurgeImgixCacheOnFailedRestRequest($imageUrl, ImagePurgeResult $result)
57
    {
58 1
        if (false === is_object($this->getBackendUser())) {
59
            // do nothing, wenn BE-user is not logged in
60
            return;
61
        }
62
63 1
        $errorMessageDetails = ['curlHttpStatusCode: ' . $result->getCurlHttpStatusCode()];
64 1
        if ($result->hasCurlErrorMessage() && $result->hasCurlErrorCode()) {
65 1
            $errorMessageDetails[] = ' curlErrorMessage: ' . $result->getCurlErrorMessage();
66 1
            $errorMessageDetails[] = ' curlErrorCode: ' . $result->getCurlErrorCode();
67
        }
68 1
        $messageKey = 'PurgeImgixCacheErrorHandler.couldNotPurgeImgixCacheOnFailedRestRequest';
69 1
        $message = $this->getLanguageService()->sL('LLL:EXT:imgix/Resources/Private/Language/locallang.xlf:'.$messageKey);
70 1
        $message = str_replace('###IMAGE_URL###', $imageUrl, $message);
71 1
        $message = str_replace('###ERROR_DETAILS###', implode(',', $errorMessageDetails), $message);
72
73 1
        $this->addMessageToFlashMessageQueue($message);
74 1
        $this->logErrorInSysLog($message, 1530527897);
75 1
    }
76
77
    /**
78
     * @param $imageUrl
79
     */
80 1
    public function handleCouldNotPurgeImgixCacheOnInvalidApiKey($imageUrl)
81
    {
82 1
        if (false === is_object($this->getBackendUser())) {
83
            // do nothing, wenn BE-user is not logged in
84
            return;
85
        }
86
87 1
        $messageKey = 'PurgeImgixCacheErrorHandler.couldNotPurgeImgixCacheOnInvalidApiKey';
88 1
        $message = $this->getLanguageService()->sL('LLL:EXT:imgix/Resources/Private/Language/locallang.xlf:'.$messageKey);
89 1
        $message = str_replace('###IMAGE_URL###', $imageUrl, $message);
90
91 1
        $this->addMessageToFlashMessageQueue($message);
92 1
        $this->logErrorInSysLog($message, 1530527898);
93 1
    }
94
95
    /**
96
     * When errorHandler is used in a 'extbase-controller-context', than we must use the flashMessageQueue from the extbase-controller
97
     * @param FlashMessageQueue $flashMessageQueue
98
     */
99
    public function overrideFlashMessageQueue(FlashMessageQueue $flashMessageQueue)
100
    {
101
        $this->flashMessageQueue = $flashMessageQueue;
102
    }
103
104
    /**
105
     * @return BackendUserAuthentication|null
106
     */
107
    protected function getBackendUser()
108
    {
109
        return $GLOBALS['BE_USER'];
110
    }
111
112
    /**
113
     * Returns LanguageService
114
     *
115
     * @return LanguageService
116
     */
117
    protected function getLanguageService()
118
    {
119
        return $GLOBALS['LANG'];
120
    }
121
122
    /**
123
     * @param string $message
124
     * @return FlashMessage
125
     */
126
    protected function createFlashMessage($message)
127
    {
128
        /** @var $flashMessage FlashMessage */
129
        $flashMessage = GeneralUtility::makeInstance(FlashMessage::class, $message, '', FlashMessage::ERROR, true);
130
        return $flashMessage;
131
    }
132
133
    /**
134
     * @param string $message
135
     */
136 2
    private function addMessageToFlashMessageQueue($message)
137
    {
138
        try {
139 2
            $this->flashMessageQueue->enqueue($this->createFlashMessage($message));
140
        } catch (\Exception $e) {
141
            $errorMessage = 'could not create flash-message ('.$e->getMessage().')';
142
            $this->logErrorInSysLog($errorMessage, $e->getCode());
143
        }
144 2
    }
145
146
    /**
147
     * @param string $errorMessage
148
     * @param integer $errorCode
149
     * @return void
150
     */
151 2
    private function logErrorInSysLog($errorMessage, $errorCode)
152
    {
153 2
        $this->getBackendUser()->writelog(3, 0, 2, $errorCode, $errorMessage, []);
154 2
    }
155
}
156