Daniel Kinzler has submitted this change and it was merged. Change subject: Basic validation for snaks JSON in SetReference ......................................................................
Basic validation for snaks JSON in SetReference Also remove broken example URLs (per DanielK). Bug: 47553 Change-Id: If9b95653a04b35b2e85e9415870d708d5bf2603d --- M repo/includes/api/SetReference.php 1 file changed, 7 insertions(+), 16 deletions(-) Approvals: Daniel Kinzler: Verified; Looks good to me, approved jenkins-bot: Checked diff --git a/repo/includes/api/SetReference.php b/repo/includes/api/SetReference.php index d555a40..3bfb47b 100644 --- a/repo/includes/api/SetReference.php +++ b/repo/includes/api/SetReference.php @@ -108,12 +108,19 @@ protected function getSnaks( $rawSnaks ) { $rawSnaks = \FormatJson::decode( $rawSnaks, true ); + if ( !is_array( $rawSnaks ) || !count( $rawSnaks ) ) { + $this->dieUsage( 'No snaks or invalid JSON given', 'setreference-no-snaks' ); + } + $snaks = new SnakList(); $serializerFactory = new \Wikibase\Lib\Serializers\SerializerFactory(); $snakUnserializer = $serializerFactory->newUnserializerForClass( 'Wikibase\Snak' ); foreach ( $rawSnaks as $byPropertySnaks ) { + if ( !is_array( $byPropertySnaks ) ) { + $this->dieUsage( 'Invalid snak JSON given', 'setreference-invalid-snaks' ); + } foreach ( $byPropertySnaks as $rawSnak ) { $snaks[] = $snakUnserializer->newFromSerialization( $rawSnak ); } @@ -269,22 +276,6 @@ public function getDescription() { return array( 'API module for creating a reference or setting the value of an existing one.' - ); - } - - /** - * @see \ApiBase::getExamples - * - * @since 0.3 - * - * @return array - */ - protected function getExamples() { - return array( - 'api.php?statement=q586$57CE3C9F-37AF-42B5-B067-DADA198DD579&snaks={"p1":[{snak}, {snak}], "p2": [{snak}]}&token=foo&baserevid=42' => - 'Creating a new reference with 3 snaks', - 'api.php?statement=q586$57CE3C9F-37AF-42B5-B067-DADA198DD579&snaks={"p2": [{snak}]}&reference=da39a3ee5e6b4b0d3255bfef95601890afd80709&token=foo&baserevid=42' => - 'Updating an existing reference to contain a single snak', ); } -- To view, visit https://gerrit.wikimedia.org/r/60410 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: If9b95653a04b35b2e85e9415870d708d5bf2603d Gerrit-PatchSet: 3 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Hoo man <h...@online.de> Gerrit-Reviewer: Aude <aude.w...@gmail.com> Gerrit-Reviewer: Daniel Kinzler <daniel.kinz...@wikimedia.de> Gerrit-Reviewer: Hoo man <h...@online.de> Gerrit-Reviewer: Jeroen De Dauw <jeroended...@gmail.com> Gerrit-Reviewer: jenkins-bot _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits