3 namespace MediaWiki\Rest
;
6 use MediaWiki\MediaWikiServices
;
11 public static function main() {
14 if ( !$wgRequest->checkUrlExtension() ) {
18 // Set $wgTitle and the title in RequestContext, as in api.php
20 $wgTitle = Title
::makeTitle( NS_SPECIAL
, 'Badtitle/rest.php' );
21 RequestContext
::getMain()->setTitle( $wgTitle );
23 $services = MediaWikiServices
::getInstance();
25 $conf = $services->getMainConfig();
26 $request = new RequestFromGlobals( [
27 'cookiePrefix' => $conf->get( 'CookiePrefix' )
32 [ "$IP/includes/Rest/coreRoutes.json" ],
33 ExtensionRegistry
::getInstance()->getAttribute( 'RestRoutes' ),
34 $conf->get( 'RestPath' ),
35 $services->getLocalServerObjectCache(),
39 $response = $router->execute( $request );
41 $webResponse = $wgRequest->response();
43 'HTTP/' . $response->getProtocolVersion() . ' ' .
44 $response->getStatusCode() . ' ' .
45 $response->getReasonPhrase() );
47 foreach ( $response->getRawHeaderLines() as $line ) {
48 $webResponse->header( $line );
51 foreach ( $response->getCookies() as $cookie ) {
52 $webResponse->setCookie(
59 $stream = $response->getBody();
61 if ( $stream instanceof CopyableStreamInterface
) {
62 $stream->copyToStream( fopen( 'php://output', 'w' ) );
65 $buffer = $stream->read( 65536 );
66 if ( $buffer === '' ) {