|
| Summary: |
Match Load the REST change filters exactly changes a search finds in one call, and refuse stop encoding the values that cannot be read REST changes URL into the getChanges syntax |
| Description: |
The {{GET /wikis/\{wikiName\}/releasenotes/\{product\}/\{version\}/changes}} endpoint reads encodes the release note of its filters loosely URL into the text syntax of the {{getChanges}} wiki macro ({{"=" + product}}, the aggregated versions joined with commas) so that {{ChangeQueryParser}} can decode it again. It then reads each change it found a second time, checking the view right again for each one.
Proposed :
* a mistyped value, e.g. the product and the version (or the aggregated versions) of the URL are set on the {{ ChangeQuery}} as typed filters; * the client filters ({{ audience =users }}, {{ category}}, {{ importance =huge }}, {{containsScreenshots =yes }} or , {{limit =ten }}, is not refused: an audience or importance filter silently matches no change (the client gets an empty list it cannot tell from a real one {{offset}} ) , and the others silently fall back to keep their default; * a value is matched as a pattern ( current meaning. They are still read by {{ % ChangeQueryParser }} and in the {{ _ getChanges }} are wildcards) and may carry an operator prefix filter language ({{ >=high % }} ) wildcards , which is the syntax of the {{ getChanges = }} wiki macro and not what the endpoint documents ("the audiences to keep , comma separated"); * a parameter left empty ( {{ audience > =}} ) matches no change at all rather than filtering nothing.
The endpoint also reads each returned change a second time , checking the view right again for each one.
Proposed:
* each listed value is matched exactly; an empty parameter filters nothing; * an unreadable value (unknown audience or importance {{>}} , a screenshot filter other than {{ true <= }} / , {{ false < }} prefixes , a limit that is not a whole number of at least 1 comma lists , a negative offset) is answered with e.g. {{ 400 importance=>=medium }} ), and a message naming the value values it cannot use behave as before ; * a new {{ChangeManager#searchAndLoad(ChangeQuery, Predicate)}} (returning a {{LoadedChangeSearchResult}}) gives the changes with their pages in one call , the . The view right being is checked once, by the search filter, before the result is paged (as done for RN-122).
The {{getChanges}} wiki macro and its syntax are unchanged. |
|