Skip to content
This repository has been archived by the owner on Apr 29, 2019. It is now read-only.

Commit

Permalink
ENGCOM-3804: Fix Swagger caching issue #31
Browse files Browse the repository at this point in the history
  • Loading branch information
sivaschenko authored Jan 27, 2019
2 parents 2952946 + 3f9ec69 commit 0c2f1d3
Show file tree
Hide file tree
Showing 2 changed files with 109 additions and 0 deletions.
106 changes: 106 additions & 0 deletions app/code/Magento/WebapiAsync/Plugin/Cache/Webapi.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

declare(strict_types=1);

namespace Magento\WebapiAsync\Plugin\Cache;

use Magento\WebapiAsync\Controller\Rest\AsynchronousSchemaRequestProcessor;
use Magento\Framework\Webapi\Rest\Request;

/**
* Class Webapi
*/
class Webapi
{
/**
* Cache key for Async Routes
*/
const ASYNC_ROUTES_CONFIG_CACHE_ID = 'async-routes-services-config';

/**
* @var AsynchronousSchemaRequestProcessor
*/
private $asynchronousSchemaRequestProcessor;

/**
* @var \Magento\Framework\Webapi\Rest\Request
*/
private $request;

/**
* ServiceMetadata constructor.
*
* @param Request $request
* @param AsynchronousSchemaRequestProcessor $asynchronousSchemaRequestProcessor
*/
public function __construct(
\Magento\Framework\Webapi\Rest\Request $request,
AsynchronousSchemaRequestProcessor $asynchronousSchemaRequestProcessor
) {
$this->request = $request;
$this->asynchronousSchemaRequestProcessor = $asynchronousSchemaRequestProcessor;
}

/**
* Change identifier in case if Async request before cache load
*
* @param \Magento\Webapi\Model\Cache\Type\Webapi $subject
* @param string $identifier
* @return null|string
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function beforeLoad(\Magento\Webapi\Model\Cache\Type\Webapi $subject, $identifier)
{
if ($this->asynchronousSchemaRequestProcessor->canProcess($this->request)
&& $identifier === \Magento\Webapi\Model\ServiceMetadata::ROUTES_CONFIG_CACHE_ID) {
return self::ASYNC_ROUTES_CONFIG_CACHE_ID;
}
return null;
}

/**
* Change identifier in case if Async request before cache save
*
* @param \Magento\Webapi\Model\Cache\Type\Webapi $subject
* @param string $data
* @param string $identifier
* @param array $tags
* @param int|bool|null $lifeTime
* @return array|null
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function beforeSave(
\Magento\Webapi\Model\Cache\Type\Webapi $subject,
$data,
$identifier,
array $tags = [],
$lifeTime = null
) {
if ($this->asynchronousSchemaRequestProcessor->canProcess($this->request)
&& $identifier === \Magento\Webapi\Model\ServiceMetadata::ROUTES_CONFIG_CACHE_ID) {
return [$data, self::ASYNC_ROUTES_CONFIG_CACHE_ID, $tags, $lifeTime];
}
return null;
}

/**
* Change identifier in case if Async request before remove cache
*
* @param \Magento\Webapi\Model\Cache\Type\Webapi $subject
* @param string $identifier
* @return null|string
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function beforeRemove(\Magento\Webapi\Model\Cache\Type\Webapi $subject, $identifier)
{
if ($this->asynchronousSchemaRequestProcessor->canProcess($this->request)
&& $identifier === \Magento\Webapi\Model\ServiceMetadata::ROUTES_CONFIG_CACHE_ID) {
return self::ASYNC_ROUTES_CONFIG_CACHE_ID;
}
return null;
}
}
3 changes: 3 additions & 0 deletions app/code/Magento/WebapiAsync/etc/di.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
<type name="Magento\Webapi\Model\ServiceMetadata">
<plugin name="webapiServiceMetadataAsync" type="Magento\WebapiAsync\Plugin\ServiceMetadata" />
</type>
<type name="Magento\Webapi\Model\Cache\Type\Webapi">
<plugin name="webapiCacheAsync" type="Magento\WebapiAsync\Plugin\Cache\Webapi" />
</type>
<virtualType name="Magento\WebapiAsync\Model\VirtualType\Rest\Config" type="Magento\Webapi\Model\Rest\Config">
<arguments>
<argument name="config" xsi:type="object">Magento\WebapiAsync\Model\BulkServiceConfig</argument>
Expand Down

0 comments on commit 0c2f1d3

Please sign in to comment.