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