MediaWiki  master
MediaWiki\Rest\Router Class Reference

The REST router is responsible for gathering handler configuration, matching an input path and HTTP method against the defined routes, and constructing and executing the relevant handler for a request. More...

Collaboration diagram for MediaWiki\Rest\Router:

Public Member Functions

 __construct ( $routeFiles, $extraRoutes, $baseUrl, $rootPath, BagOStuff $cacheBag, ResponseFactory $responseFactory, BasicAuthorizerInterface $basicAuth, Authority $authority, ObjectFactory $objectFactory, Validator $restValidator, HookContainer $hookContainer)
 
 execute (RequestInterface $request)
 Find the handler for a request and execute it. More...
 
 getRouteUrl ( $route, $pathParams=[], $queryParams=[])
 Returns a full URL for the given route. More...
 
 setCors (CorsUtils $cors)
 

Private Member Functions

 createHandler (RequestInterface $request, array $spec)
 Create a handler from its spec. More...
 
 executeHandler ( $handler)
 Execute a fully-constructed handler. More...
 
 fetchCacheData ()
 Get the cache data, or false if it is missing or invalid. More...
 
 getAllowedMethods (string $relPath)
 Get the allow methods for a path. More...
 
 getAllRoutes ()
 Get an iterator for all defined routes, including loading the routes from the JSON files. More...
 
 getCacheKey ()
 
 getConfigHash ()
 Get a config version hash for cache invalidation. More...
 
 getMatchers ()
 Get an array of PathMatcher objects indexed by HTTP method. More...
 
 getRelativePath ( $path)
 Remove the path prefix $this->rootPath. More...
 
 getRouteFileTimestamps ()
 Get an array of last modification times of the defined route files. More...
 
 getRoutesFromFiles ()
 Load the defined JSON files and return the merged routes. More...
 

Private Attributes

Authority $authority
 
string $baseUrl
 
BasicAuthorizerInterface $basicAuth
 
BagOStuff $cacheBag
 
string null $configHash
 
CorsUtils null $cors
 
array $extraRoutes
 
HookContainer $hookContainer
 
PathMatcher[] null $matchers
 Path matchers by method. More...
 
ObjectFactory $objectFactory
 
ResponseFactory $responseFactory
 
Validator $restValidator
 
string $rootPath
 
string[] $routeFiles
 
int[] null $routeFileTimestamps
 
array null $routesFromFiles
 

Detailed Description

The REST router is responsible for gathering handler configuration, matching an input path and HTTP method against the defined routes, and constructing and executing the relevant handler for a request.

Definition at line 20 of file Router.php.

Constructor & Destructor Documentation

◆ __construct()

MediaWiki\Rest\Router::__construct (   $routeFiles,
  $extraRoutes,
  $baseUrl,
  $rootPath,
BagOStuff  $cacheBag,
ResponseFactory  $responseFactory,
BasicAuthorizerInterface  $basicAuth,
Authority  $authority,
ObjectFactory  $objectFactory,
Validator  $restValidator,
HookContainer  $hookContainer 
)
Parameters
string[]$routeFilesList of names of JSON files containing routes
array$extraRoutesExtension route array
string$baseUrlThe base URL
string$rootPathThe base path for routes, relative to the base URL
BagOStuff$cacheBagA cache in which to store the matcher trees
ResponseFactory$responseFactory
BasicAuthorizerInterface$basicAuth
Authority$authority
ObjectFactory$objectFactory
Validator$restValidator
HookContainer$hookContainer
Access: internal

Definition at line 83 of file Router.php.

References MediaWiki\Rest\Router\$authority, MediaWiki\Rest\Router\$baseUrl, MediaWiki\Rest\Router\$basicAuth, MediaWiki\Rest\Router\$cacheBag, MediaWiki\Rest\Router\$extraRoutes, MediaWiki\Rest\Router\$hookContainer, MediaWiki\Rest\Router\$objectFactory, MediaWiki\Rest\Router\$responseFactory, MediaWiki\Rest\Router\$restValidator, MediaWiki\Rest\Router\$rootPath, and MediaWiki\Rest\Router\$routeFiles.

Member Function Documentation

◆ createHandler()

MediaWiki\Rest\Router::createHandler ( RequestInterface  $request,
array  $spec 
)
private

Create a handler from its spec.

Parameters
RequestInterface$request
array$spec
Returns
Handler

Definition at line 362 of file Router.php.

Referenced by MediaWiki\Rest\Router\execute().

◆ execute()

◆ executeHandler()

MediaWiki\Rest\Router::executeHandler (   $handler)
private

Execute a fully-constructed handler.

Parameters
Handler$handler
Returns
ResponseInterface

Definition at line 386 of file Router.php.

Referenced by MediaWiki\Rest\Router\execute().

◆ fetchCacheData()

MediaWiki\Rest\Router::fetchCacheData ( )
private

Get the cache data, or false if it is missing or invalid.

Returns
bool|array

Definition at line 114 of file Router.php.

References MediaWiki\Rest\Router\getCacheKey(), and MediaWiki\Rest\Router\getConfigHash().

Referenced by MediaWiki\Rest\Router\getMatchers().

◆ getAllowedMethods()

MediaWiki\Rest\Router::getAllowedMethods ( string  $relPath)
private

Get the allow methods for a path.

Parameters
string$relPath
Returns
array

Definition at line 342 of file Router.php.

References MediaWiki\Rest\Router\getMatchers().

Referenced by MediaWiki\Rest\Router\execute().

◆ getAllRoutes()

MediaWiki\Rest\Router::getAllRoutes ( )
private

Get an iterator for all defined routes, including loading the routes from the JSON files.

Returns
AppendIterator

Definition at line 188 of file Router.php.

References MediaWiki\Rest\Router\getRoutesFromFiles().

Referenced by MediaWiki\Rest\Router\getMatchers().

◆ getCacheKey()

MediaWiki\Rest\Router::getCacheKey ( )
private
Returns
string The cache key

Definition at line 127 of file Router.php.

Referenced by MediaWiki\Rest\Router\fetchCacheData(), and MediaWiki\Rest\Router\getMatchers().

◆ getConfigHash()

MediaWiki\Rest\Router::getConfigHash ( )
private

Get a config version hash for cache invalidation.

Returns
string

Definition at line 136 of file Router.php.

References MediaWiki\Rest\Router\$configHash, and MediaWiki\Rest\Router\getRouteFileTimestamps().

Referenced by MediaWiki\Rest\Router\fetchCacheData(), and MediaWiki\Rest\Router\getMatchers().

◆ getMatchers()

◆ getRelativePath()

MediaWiki\Rest\Router::getRelativePath (   $path)
private

Remove the path prefix $this->rootPath.

Return the part of the path with the prefix removed, or false if the prefix did not match.

Parameters
string$path
Returns
false|string

Definition at line 240 of file Router.php.

References $path.

Referenced by MediaWiki\Rest\Router\execute().

◆ getRouteFileTimestamps()

MediaWiki\Rest\Router::getRouteFileTimestamps ( )
private

Get an array of last modification times of the defined route files.

Returns
int[] Last modification times

Definition at line 172 of file Router.php.

References MediaWiki\Rest\Router\$routeFileTimestamps.

Referenced by MediaWiki\Rest\Router\getConfigHash().

◆ getRoutesFromFiles()

MediaWiki\Rest\Router::getRoutesFromFiles ( )
private

Load the defined JSON files and return the merged routes.

Returns
array

Definition at line 151 of file Router.php.

References MediaWiki\Rest\Router\$routesFromFiles.

Referenced by MediaWiki\Rest\Router\getAllRoutes().

◆ getRouteUrl()

MediaWiki\Rest\Router::getRouteUrl (   $route,
  $pathParams = [],
  $queryParams = [] 
)

Returns a full URL for the given route.

Intended for use in redirects.

Parameters
string$route
array$pathParams
array$queryParams
Returns
false|string

Definition at line 259 of file Router.php.

References wfAppendQuery().

◆ setCors()

MediaWiki\Rest\Router::setCors ( CorsUtils  $cors)
Parameters
CorsUtils$cors
Returns
self

Definition at line 418 of file Router.php.

References MediaWiki\Rest\Router\$cors.

Member Data Documentation

◆ $authority

Authority MediaWiki\Rest\Router::$authority
private

Definition at line 55 of file Router.php.

Referenced by MediaWiki\Rest\Router\__construct().

◆ $baseUrl

string MediaWiki\Rest\Router::$baseUrl
private

Definition at line 34 of file Router.php.

Referenced by MediaWiki\Rest\Router\__construct().

◆ $basicAuth

BasicAuthorizerInterface MediaWiki\Rest\Router::$basicAuth
private

Definition at line 52 of file Router.php.

Referenced by MediaWiki\Rest\Router\__construct().

◆ $cacheBag

BagOStuff MediaWiki\Rest\Router::$cacheBag
private

Definition at line 40 of file Router.php.

Referenced by MediaWiki\Rest\Router\__construct().

◆ $configHash

string null MediaWiki\Rest\Router::$configHash
private

Definition at line 46 of file Router.php.

Referenced by MediaWiki\Rest\Router\getConfigHash().

◆ $cors

CorsUtils null MediaWiki\Rest\Router::$cors
private

Definition at line 64 of file Router.php.

Referenced by MediaWiki\Rest\Router\setCors().

◆ $extraRoutes

array MediaWiki\Rest\Router::$extraRoutes
private

Definition at line 25 of file Router.php.

Referenced by MediaWiki\Rest\Router\__construct().

◆ $hookContainer

HookContainer MediaWiki\Rest\Router::$hookContainer
private

Definition at line 67 of file Router.php.

Referenced by MediaWiki\Rest\Router\__construct().

◆ $matchers

PathMatcher [] null MediaWiki\Rest\Router::$matchers
private

Path matchers by method.

Definition at line 43 of file Router.php.

Referenced by MediaWiki\Rest\Router\execute(), and MediaWiki\Rest\Router\getMatchers().

◆ $objectFactory

ObjectFactory MediaWiki\Rest\Router::$objectFactory
private

Definition at line 58 of file Router.php.

Referenced by MediaWiki\Rest\Router\__construct().

◆ $responseFactory

ResponseFactory MediaWiki\Rest\Router::$responseFactory
private

Definition at line 49 of file Router.php.

Referenced by MediaWiki\Rest\Router\__construct().

◆ $restValidator

Validator MediaWiki\Rest\Router::$restValidator
private

Definition at line 61 of file Router.php.

Referenced by MediaWiki\Rest\Router\__construct().

◆ $rootPath

string MediaWiki\Rest\Router::$rootPath
private

Definition at line 37 of file Router.php.

Referenced by MediaWiki\Rest\Router\__construct().

◆ $routeFiles

string [] MediaWiki\Rest\Router::$routeFiles
private

Definition at line 22 of file Router.php.

Referenced by MediaWiki\Rest\Router\__construct().

◆ $routeFileTimestamps

int [] null MediaWiki\Rest\Router::$routeFileTimestamps
private

Definition at line 31 of file Router.php.

Referenced by MediaWiki\Rest\Router\getRouteFileTimestamps().

◆ $routesFromFiles

array null MediaWiki\Rest\Router::$routesFromFiles
private

Definition at line 28 of file Router.php.

Referenced by MediaWiki\Rest\Router\getRoutesFromFiles().


The documentation for this class was generated from the following file: