HomePhabricator

Modularize complex HTTP parameter types

Description

Modularize complex HTTP parameter types

Summary:
Ref T9132. We have several places in the code that sometimes need to parse complex types. For example, we accept all of these in ApplicationSearch and now in ApplicationEditor:

/?subscribers=cat,dog
/?subscribers=PHID-USER-1111
/?subscribers[]=cat&subscribers[]=PHID-USER-2222

..etc. The logic to parse this stuff isn't too complex, but it isn't trivial either.

Right now it lives in some odd places. Notably, PhabricatorApplicationSearchEngine has some weird helper methods for this stuff. Rather than give EditEngine the same set of weird helper methods, pull all this stuff out into "HTTPParameterTypes".

Future diffs will add "Projects" and "Users" types where all the custom parsing/lookup logic can live. Then eventually the Search stuff can reuse these.

Generally, this just breaks the code up into smaller pieces that have more specific responsibilities.

Test Plan:

Screen Shot 2015-11-04 at 9.05.11 AM.png (1×1 px, 193 KB)

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T9132

Differential Revision: https://secure.phabricator.com/D14402