jenkins-bot has submitted this change and it was merged.

Change subject: Reject ApiBasedValueParser/Formatter promise with a single 
parameter
......................................................................


Reject ApiBasedValueParser/Formatter promise with a single parameter

As per definition in DataValuesJavaScript 0.4.1.
Requires ValueView 0.5.0.
(bug 62822)

Change-Id: I1825c7a88cd84dcb6e89158029ded05d409660ea
---
M lib/resources/formatters/ApiBasedValueFormatter.js
M lib/resources/parsers/ApiBasedValueParser.js
2 files changed, 58 insertions(+), 5 deletions(-)

Approvals:
  WikidataJenkins: Verified
  Adrian Lang: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/lib/resources/formatters/ApiBasedValueFormatter.js 
b/lib/resources/formatters/ApiBasedValueFormatter.js
index 4dc9402..29a5380 100644
--- a/lib/resources/formatters/ApiBasedValueFormatter.js
+++ b/lib/resources/formatters/ApiBasedValueFormatter.js
@@ -24,8 +24,12 @@
                 * @param {dataValues.DataValue} dataValue
                 * @param {string} [dataTypeId]
                 * @param {string} [outputType] The output's preferred MIME type
-                *
-                * @return {$.Promise}
+                * @return {jQuery.Promise}
+                *         Resolved parameters:
+                *         - {string} Formatted DataValue.
+                *         - {dataValues.DataValues} Original DataValue object.
+                *         Rejected parameters:
+                *         - {string} HTML error message.
                 */
                format: function( dataValue, dataTypeId, outputType ) {
                        var deferred = $.Deferred();
@@ -40,7 +44,28 @@
                                deferred.resolve( formattedValue, dataValue );
                        } )
                        .fail( function( code, details ) {
-                               deferred.reject( code, details );
+                               var message = code;
+
+                               if( typeof details === 'string' ) {
+                                       // MediaWiki API rejecting with a plain 
string.
+                                       message = details;
+                               } else if(
+                                       details.error
+                                       && details.error.messages
+                                       && details.error.messages.html
+                                       && details.error.messages.html['*']
+                               ) {
+                                       // HTML message from Wikibase API.
+                                       message = 
details.error.messages.html['*'];
+                               } else if( details.error && details.error.info 
) {
+                                       // Wikibase API no-HTML error message 
fall-back.
+                                       message = details.error.info;
+                               } else if( details.exception ) {
+                                       // Failed MediaWiki API call.
+                                       message = details.exception;
+                               }
+
+                               deferred.reject( message );
                        } );
 
                        return deferred.promise();
diff --git a/lib/resources/parsers/ApiBasedValueParser.js 
b/lib/resources/parsers/ApiBasedValueParser.js
index a020997..f941979 100644
--- a/lib/resources/parsers/ApiBasedValueParser.js
+++ b/lib/resources/parsers/ApiBasedValueParser.js
@@ -28,7 +28,11 @@
                 * @since 0.5
                 *
                 * @param {string} rawValue
-                * @return {$.Promise}
+                * @return {jQuery.Promise}
+                *         Resolved parameters:
+                *         - {dataValues.DataValues}
+                *         Rejected parameters:
+                *         - {string} HTML error message.
                 */
                parse: function( rawValue ) {
                        var deferred = $.Deferred();
@@ -39,7 +43,31 @@
                                        deferred.resolve( results[0] );
                                } )
                                .fail( function( code, details ) {
-                                       deferred.reject( code, details );
+                                       var message = code;
+
+                                       if( typeof details === 'string' ) {
+                                               // MediaWiki API rejecting with 
a plain string.
+                                               message = details;
+                                       } else if( details['error-html'] ) {
+                                               // Wikibase parseValue API 
module specific HTML error message.
+                                               message = details['error-html'];
+                                       } else if(
+                                               details.error
+                                               && details.error.messages
+                                               && details.error.messages.html
+                                               && 
details.error.messages.html['*']
+                                       ) {
+                                               // HTML message from Wikibase 
API.
+                                               message = 
details.error.messages.html['*'];
+                                       } else if( details.error && 
details.error.info ) {
+                                               // Wikibase API no-HTML error 
message fall-back.
+                                               message = details.error.info;
+                                       } else if( details.exception ) {
+                                               // Failed MediaWiki API call.
+                                               message = details.exception;
+                                       }
+
+                                       deferred.reject( message );
                                } );
 
                        return deferred.promise();

-- 
To view, visit https://gerrit.wikimedia.org/r/121095
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I1825c7a88cd84dcb6e89158029ded05d409660ea
Gerrit-PatchSet: 10
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <henning.sna...@wikimedia.de>
Gerrit-Reviewer: Adrian Lang <adrian.l...@wikimedia.de>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <thiemo.maet...@wikimedia.de>
Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de>
Gerrit-Reviewer: WikidataJenkins <wikidata-servi...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to