40define(
'MW_API',
true );
41define(
'MW_ENTRY_POINT',
'api' );
43require __DIR__ .
'/includes/WebStart.php';
50 $starttime = microtime(
true );
54 if ( isset( $_SERVER[
'PATH_INFO'] ) && $_SERVER[
'PATH_INFO'] !=
'' ) {
57 header(
"Location: $correctUrl",
true, 301 );
58 echo
'This endpoint does not support "path info", i.e. extra text between "api.php"'
59 .
'and the "?". Remove any such text and try again.';
65 $wgTitle = Title::makeTitle(
NS_SPECIAL,
'Badtitle/dummy title for API calls set in api.php' );
69 RequestContext::getMain()->setTitle(
$wgTitle );
75 $processor =
new ApiMain( RequestContext::getMain(),
true );
78 Hooks::runner()->onApiBeforeMain( $processor );
79 if ( !$processor instanceof
ApiMain ) {
80 throw new MWException(
'ApiBeforeMain hook set $processor to a non-ApiMain class' );
82 }
catch ( Throwable $e ) {
84 ApiMain::handleApiBeforeMainException( $e );
90 $processor->execute();
94 $endtime = microtime(
true );
100 $endtime - $starttime,
104 $items[] =
$wgRequest->wasPosted() ?
'POST' :
'GET';
107 $manager = $processor->getModuleManager();
108 $module = $manager->getModule(
$wgRequest->getRawVal(
'action' ),
'action' );
109 }
catch ( Throwable $ex ) {
112 if ( !$module || $module->mustBePosted() ) {
113 $items[] =
"action=" .
$wgRequest->getRawVal(
'action' );
118 $items[] =
"failed in ApiBeforeMain";
121 wfDebug(
"Logged API request to $wgAPIRequestLog" );
wfDebug( $text, $dest='all', array $context=[])
Sends a line to the debug log if enabled or, optionally, to a comment in output.
wfExpandUrl( $url, $defaultProto=PROTO_CURRENT)
Expand a potentially local URL to a fully-qualified URL.
wfAppendQuery( $url, $query)
Append a query string to an existing URL, which may or may not already have query string parameters a...
wfArrayToCgi( $array1, $array2=null, $prefix='')
This function takes one or two arrays as input, and returns a CGI-style string, e....
wfScript( $script='index')
Get the path to a specified script file, respecting file extensions; this is a wrapper around $wgScri...
wfTimestamp( $outputtype=TS_UNIX, $ts=0)
Get a timestamp string in one of various formats.
if(!defined( 'MW_NO_SESSION') &&! $wgCommandLineMode $wgTitle
This is the main API class, used for both external and internal processing.
$wgAPIRequestLog
Config variable stub for the APIRequestLog setting, for use by phpdoc and IDEs.