From 11893e476189ede8db3df9b21e8d369671b53a19 Mon Sep 17 00:00:00 2001 From: Brad Jorsch Date: Fri, 10 Jul 2015 09:31:04 -0400 Subject: [PATCH] API: Improve upload error reporting * Include the detailed message text in the error for verification-error and hookaborted * Actually return the raw "details" for hookaborted and unknown-error (previously it was colliding with the standard "error" and "code" elements). Bug: T105224 Change-Id: I13b7b6ad02fbbf46bf3d6b4c683493b2fecf8c58 --- includes/api/ApiUpload.php | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/includes/api/ApiUpload.php b/includes/api/ApiUpload.php index 54294c9cb7..398337b97c 100644 --- a/includes/api/ApiUpload.php +++ b/includes/api/ApiUpload.php @@ -527,17 +527,28 @@ class ApiUpload extends ApiBase { $this->dieUsage( $msg, 'filetype-banned', 0, $extradata ); break; case UploadBase::VERIFICATION_ERROR: + $params = $verification['details']; + $key = array_shift( $params ); + $msg = $this->msg( $key, $params )->inLanguage( 'en' )->useDatabase( false )->text(); ApiResult::setIndexedTagName( $verification['details'], 'detail' ); - $this->dieUsage( 'This file did not pass file verification', 'verification-error', + $this->dieUsage( "This file did not pass file verification: $msg", 'verification-error', 0, array( 'details' => $verification['details'] ) ); break; case UploadBase::HOOK_ABORTED: - $this->dieUsage( "The modification you tried to make was aborted by an extension hook", - 'hookaborted', 0, array( 'error' => $verification['error'] ) ); + if ( is_array( $verification['error'] ) ) { + $params = $verification['error']; + } elseif ( $verification['error'] !== '' ) { + $params = array( $verification['error'] ); + } else { + $params = array( 'hookaborted' ); + } + $key = array_shift( $params ); + $msg = $this->msg( $key, $params )->inLanguage( 'en' )->useDatabase( false )->text(); + $this->dieUsage( $msg, 'hookaborted', 0, array( 'details' => $verification['error'] ) ); break; default: $this->dieUsage( 'An unknown error occurred', 'unknown-error', - 0, array( 'code' => $verification['status'] ) ); + 0, array( 'details' => array( 'code' => $verification['status'] ) ) ); break; } } -- 2.20.1