41define(
'MW_API',
true );
42define(
'MW_ENTRY_POINT',
'api' );
44require __DIR__ .
'/includes/WebStart.php';
51 $starttime = microtime(
true );
55 if ( isset( $_SERVER[
'PATH_INFO'] ) && $_SERVER[
'PATH_INFO'] !=
'' ) {
58 header(
"Location: $correctUrl",
true, 301 );
59 echo
'This endpoint does not support "path info", i.e. extra text between "api.php"'
60 .
'and the "?". Remove any such text and try again.';
66 $wgTitle = Title::makeTitle(
NS_SPECIAL,
'Badtitle/dummy title for API calls set in api.php' );
70 RequestContext::getMain()->setTitle(
$wgTitle );
76 $processor =
new ApiMain( RequestContext::getMain(),
true );
79 Hooks::runner()->onApiBeforeMain( $processor );
80 if ( !$processor instanceof
ApiMain ) {
81 throw new LogicException(
'ApiBeforeMain hook set $processor to a non-ApiMain class' );
83 }
catch ( Throwable $e ) {
85 ApiMain::handleApiBeforeMainException( $e );
91 $processor->execute();
95 $endtime = microtime(
true );
101 $endtime - $starttime,
105 $items[] =
$wgRequest->wasPosted() ?
'POST' :
'GET';
108 $manager = $processor->getModuleManager();
109 $module = $manager->getModule(
$wgRequest->getRawVal(
'action' ),
'action' );
110 }
catch ( Throwable $ex ) {
113 if ( !$module || $module->mustBePosted() ) {
114 $items[] =
"action=" .
$wgRequest->getRawVal(
'action' );
119 $items[] =
"failed in ApiBeforeMain";
122 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.