-
-/**
- * @ingroup API
- */
-class ApiOpenSearchFormatJson extends ApiFormatJson {
- private $warningsAsError = false;
-
- public function __construct( ApiMain $main, $fm, $warningsAsError ) {
- parent::__construct( $main, "json$fm" );
- $this->warningsAsError = $warningsAsError;
- }
-
- public function execute() {
- $result = $this->getResult();
- if ( !$result->getResultData( 'error' ) && !$result->getResultData( 'errors' ) ) {
- // Ignore warnings or treat as errors, as requested
- $warnings = $result->removeValue( 'warnings', null );
- if ( $this->warningsAsError && $warnings ) {
- $this->dieWithError(
- 'apierror-opensearch-json-warnings',
- 'warnings',
- [ 'warnings' => $warnings ]
- );
- }
-
- // Ignore any other unexpected keys (e.g. from $wgDebugToolbar)
- $remove = array_keys( array_diff_key(
- $result->getResultData(),
- [ 0 => 'search', 1 => 'terms', 2 => 'descriptions', 3 => 'urls' ]
- ) );
- foreach ( $remove as $key ) {
- $result->removeValue( $key, null );
- }
- }
-
- parent::execute();
- }
-}