Hoo man has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/60410


Change subject: Basic validation for snaks JSON in SetReference
......................................................................

Basic validation for snaks JSON in SetReference

Also fix example URLs.

Bug: 47553
Change-Id: If9b95653a04b35b2e85e9415870d708d5bf2603d
---
M repo/includes/api/SetReference.php
1 file changed, 9 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/10/60410/1

diff --git a/repo/includes/api/SetReference.php 
b/repo/includes/api/SetReference.php
index d555a40..e78c34d 100644
--- a/repo/includes/api/SetReference.php
+++ b/repo/includes/api/SetReference.php
@@ -44,7 +44,6 @@
 class SetReference extends ApiWikibase {
 
        // TODO: automcomment
-       // TODO: example
        // TODO: rights
        // TODO: conflict detection
 
@@ -108,12 +107,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 );
                        }
@@ -281,9 +287,9 @@
         */
        protected function getExamples() {
                return array(
-                       
'api.php?statement=q586$57CE3C9F-37AF-42B5-B067-DADA198DD579&snaks={"p1":[{snak},
 {snak}], "p2": [{snak}]}&token=foo&baserevid=42' =>
+                       
'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'
 =>
+                       
'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: newchange
Gerrit-Change-Id: If9b95653a04b35b2e85e9415870d708d5bf2603d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Hoo man <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to