This introduces the ParsoidOutputStash config setting, which defines the storage backend and cache duration. The storage backend name refers to an entry in the ObjectCache setting, and defaults to the main stash. Bug: T267990 Bug: T309016 Change-Id: Ic67dc43ed9843810e4b180127f9a3bb7608f7608
79 lines
2 KiB
PHP
79 lines
2 KiB
PHP
<?php
|
|
|
|
namespace MediaWiki\Tests\Rest\Handler;
|
|
|
|
use HashBagOStuff;
|
|
use MediaWiki\Edit\ParsoidOutputStash;
|
|
use MediaWiki\Edit\SimpleParsoidOutputStash;
|
|
use MediaWiki\Parser\Parsoid\ParsoidRenderID;
|
|
use MediaWiki\Rest\RequestData;
|
|
|
|
/**
|
|
* This trait is used in PageHTMLHandlerTest.php & RevisionHTMLHandlerTest.php
|
|
* to construct requests and perform stashing for the Parsoid Output stash feature.
|
|
*/
|
|
trait HTMLHandlerTestTrait {
|
|
|
|
private $parsoidOutputStash = null;
|
|
|
|
private function getParsoidOutputStash(): ParsoidOutputStash {
|
|
if ( !$this->parsoidOutputStash ) {
|
|
$this->parsoidOutputStash = new SimpleParsoidOutputStash( new HashBagOStuff(), 120 );
|
|
}
|
|
return $this->parsoidOutputStash;
|
|
}
|
|
|
|
/**
|
|
* @param string $page
|
|
* @param array $queryParams
|
|
* @param array $config
|
|
*
|
|
* @return array
|
|
* @throws \Exception
|
|
*/
|
|
private function executePageHTMLRequest(
|
|
string $page,
|
|
array $queryParams = [],
|
|
array $config = []
|
|
): array {
|
|
$handler = $this->newHandler();
|
|
$request = new RequestData( [
|
|
'pathParams' => [ 'title' => $page ],
|
|
'queryParams' => $queryParams,
|
|
] );
|
|
$result = $this->executeHandler( $handler,
|
|
$request,
|
|
$config + [ 'format' => 'html' ] );
|
|
$etag = $result->getHeaderLine( 'ETag' );
|
|
$stashKey = ParsoidRenderID::newFromETag( $etag );
|
|
|
|
return [ $result->getBody()->getContents(), $etag, $stashKey ];
|
|
}
|
|
|
|
/**
|
|
* @param int $revId
|
|
* @param array $queryParams
|
|
* @param array $config
|
|
*
|
|
* @return array
|
|
* @throws \Exception
|
|
*/
|
|
private function executeRevisionHTMLRequest(
|
|
int $revId,
|
|
array $queryParams = [],
|
|
array $config = []
|
|
): array {
|
|
$handler = $this->newHandler();
|
|
$request = new RequestData( [
|
|
'pathParams' => [ 'id' => $revId ],
|
|
'queryParams' => $queryParams,
|
|
] );
|
|
$result = $this->executeHandler( $handler,
|
|
$request,
|
|
$config + [ 'format' => 'html' ] );
|
|
$etag = $result->getHeaderLine( 'ETag' );
|
|
$stashKey = ParsoidRenderID::newFromETag( $etag );
|
|
|
|
return [ $result->getBody()->getContents(), $etag, $stashKey ];
|
|
}
|
|
}
|