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