Clean up param handling in ApiStashEdit
It doesn't make sense to submit both stashedtexthash and text, so requireOnlyOneParameter() is correct. This simplifies the code and gives a more helpful error message. (Previously if both parameters were passed, we would ignore text unless stashedtexthash was empty, in which case we would ignore it.) Change-Id: I306b15eefb6fd4379a3eed88d84113c2e43c4a95
This commit is contained in:
parent
7f1c3ba94a
commit
0438e94222
1 changed files with 5 additions and 10 deletions
|
|
@ -67,11 +67,11 @@ class ApiStashEdit extends ApiBase {
|
|||
);
|
||||
}
|
||||
|
||||
$this->requireAtLeastOneParameter( $params, 'stashedtexthash', 'text' );
|
||||
$this->requireOnlyOneParameter( $params, 'stashedtexthash', 'text' );
|
||||
|
||||
$text = null;
|
||||
$textHash = null;
|
||||
if ( strlen( $params['stashedtexthash'] ) ) {
|
||||
if ( $params['stashedtexthash'] !== null ) {
|
||||
// Load from cache since the client indicates the text is the same as last stash
|
||||
$textHash = $params['stashedtexthash'];
|
||||
if ( !preg_match( '/^[0-9a-f]{40}$/', $textHash ) ) {
|
||||
|
|
@ -82,16 +82,11 @@ class ApiStashEdit extends ApiBase {
|
|||
if ( !is_string( $text ) ) {
|
||||
$this->dieWithError( 'apierror-stashedit-missingtext', 'missingtext' );
|
||||
}
|
||||
} elseif ( $params['text'] !== null ) {
|
||||
// Trim and fix newlines so the key SHA1's match (see WebRequest::getText())
|
||||
} else {
|
||||
// 'text' was passed. Trim and fix newlines so the key SHA1's
|
||||
// match (see WebRequest::getText())
|
||||
$text = rtrim( str_replace( "\r\n", "\n", $params['text'] ) );
|
||||
$textHash = sha1( $text );
|
||||
} else {
|
||||
$this->dieWithError( [
|
||||
'apierror-missingparam-at-least-one-of',
|
||||
Message::listParam( [ '<var>stashedtexthash</var>', '<var>text</var>' ] ),
|
||||
2,
|
||||
], 'missingparam' );
|
||||
}
|
||||
|
||||
$textContent = ContentHandler::makeContent(
|
||||
|
|
|
|||
Loading…
Reference in a new issue