Skip to content

Commit 837a17a

Browse files
authored
Merge pull request #243 from Inchoo/feature/#212-quick-purge-error-details
Added more details to quick purge error messages
2 parents 552d9f5 + c4dff63 commit 837a17a

File tree

2 files changed

+24
-18
lines changed

2 files changed

+24
-18
lines changed

Diff for: Controller/Adminhtml/FastlyCdn/Purge/Quick.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,11 @@ public function execute()
101101

102102
// purge uri
103103
$result = $this->purgeCache->sendPurgeRequest($uri);
104-
if ($result) {
104+
if ($result['status']) {
105105
$this->messageManager->addSuccessMessage(__('The URL\'s "' . $url . '" cache has been cleaned.'));
106106
} else {
107107
$this->getMessageManager()->addErrorMessage(
108-
__('The purge request was not processed successfully.')
108+
__('The purge request was not processed successfully. [' . $result['msg'] . ']')
109109
);
110110
}
111111
}

Diff for: Model/Api.php

+22-16
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ class Api
8080
*/
8181
private $state;
8282

83+
private $resultJson;
84+
8385
/**
8486
* Api constructor.
8587
*
@@ -150,12 +152,14 @@ private function _getWafEndpoint()
150152
* Purge a single URL
151153
*
152154
* @param $url
153-
* @return bool
155+
* @return \Magento\Framework\Controller\Result\Json
154156
* @throws \Zend_Uri_Exception
155157
*/
156158
public function cleanUrl($url)
157159
{
158-
if ($result = $this->_purge($url, 'PURGE')) {
160+
$result = $this->_purge($url, 'PURGE');
161+
162+
if ($result['status']) {
159163
$this->logger->execute($url);
160164
}
161165

@@ -170,7 +174,7 @@ public function cleanUrl($url)
170174
* Purge Fastly by a given surrogate key
171175
*
172176
* @param $keys
173-
* @return bool
177+
* @return bool|\Magento\Framework\Controller\Result\Json
174178
* @throws \Zend_Uri_Exception
175179
*/
176180
public function cleanBySurrogateKey($keys)
@@ -191,7 +195,8 @@ public function cleanBySurrogateKey($keys)
191195

192196
foreach ($collection as $keys) {
193197
$payload = json_encode(['surrogate_keys' => $keys]);
194-
if ($result = $this->_purge($uri, null, \Zend_Http_Client::POST, $payload)) {
198+
$result = $this->_purge($uri, null, \Zend_Http_Client::POST, $payload);
199+
if ($result['status']) {
195200
foreach ($keys as $key) {
196201
$this->logger->execute('surrogate key: ' . $key);
197202
}
@@ -201,27 +206,27 @@ public function cleanBySurrogateKey($keys)
201206
$canPublishPurgeChanges = $this->config->canPublishPurgeChanges();
202207

203208
if ($this->config->areWebHooksEnabled() && ($canPublishKeyUrlChanges || $canPublishPurgeChanges)) {
204-
$status = $result ? '' : 'FAILED ';
209+
$status = $result['status'] ? '' : 'FAILED ';
205210
$this->sendWebHook($status . '*clean by key on ' . join(" ", $keys) . '*');
206211

207212
$canPublishPurgeByKeyDebugBacktrace = $this->config->canPublishPurgeByKeyDebugBacktrace();
208213
$canPublishPurgeDebugBacktrace = $this->config->canPublishPurgeDebugBacktrace();
209214

210215
if ($canPublishPurgeByKeyDebugBacktrace == false && $canPublishPurgeDebugBacktrace == false) {
211-
return $result;
216+
return $result['status'];
212217
}
213218

214219
$this->stackTrace($type . join(" ", $keys));
215220
}
216221
}
217222

218-
return $result;
223+
return $result['status'];
219224
}
220225

221226
/**
222227
* Purge all of Fastly's CDN content. Can be called only once per request
223228
*
224-
* @return bool
229+
* @return bool|\Magento\Framework\Controller\Result\Json
225230
* @throws \Zend_Uri_Exception
226231
*/
227232
public function cleanAll()
@@ -234,7 +239,8 @@ public function cleanAll()
234239

235240
$type = 'clean/purge all';
236241
$uri = $this->_getApiServiceUri() . 'purge_all';
237-
if ($result = $this->_purge($uri, null)) {
242+
$result = $this->_purge($uri, null);
243+
if ($result['status']) {
238244
$this->logger->execute('clean all items');
239245
}
240246

@@ -248,13 +254,13 @@ public function cleanAll()
248254
$canPublishPurgeDebugBacktrace = $this->config->canPublishPurgeDebugBacktrace();
249255

250256
if ($canPublishPurgeAllDebugBacktrace == false && $canPublishPurgeDebugBacktrace == false) {
251-
return $result;
257+
return $result['status'];
252258
}
253259

254260
$this->stackTrace($type);
255261
}
256262

257-
return $result;
263+
return $result['status'];
258264
}
259265

260266
/**
@@ -264,7 +270,7 @@ public function cleanAll()
264270
* @param $type
265271
* @param string $method
266272
* @param null $payload
267-
* @return bool
273+
* @return \Magento\Framework\Controller\Result\Json
268274
* @throws \Zend_Uri_Exception
269275
*/
270276
private function _purge($uri, $type, $method = \Zend_Http_Client::POST, $payload = null)
@@ -296,8 +302,7 @@ private function _purge($uri, $type, $method = \Zend_Http_Client::POST, $payload
296302
self::FASTLY_HEADER_SOFT_PURGE . ': 1'
297303
);
298304
}
299-
300-
$result = true;
305+
$result['status'] = true;
301306
try {
302307
$client = $this->curlFactory->create();
303308
$client->setConfig(['timeout' => self::PURGE_TIMEOUT]);
@@ -314,11 +319,12 @@ private function _purge($uri, $type, $method = \Zend_Http_Client::POST, $payload
314319
if ($responseCode == '429') {
315320
throw new LocalizedException(__($responseMessage));
316321
} elseif ($responseCode != '200') {
317-
throw new LocalizedException(__('Return status ' . $responseCode));
322+
throw new LocalizedException(__($responseCode . ': ' . $responseMessage));
318323
}
319324
} catch (\Exception $e) {
320325
$this->logger->critical($e->getMessage(), $uri);
321-
$result = false;
326+
$result['status'] = false;
327+
$result['msg'] = $e->getMessage();
322328
}
323329

324330
if (empty($type)) {

0 commit comments

Comments
 (0)