* Consolidate various duplicate docs to the main entry point.
Especially the duplication that followed after ExternalStoreFactory
and ExternalStoreAccess were introduced with ExternalStore
left as deprecated wrapper.
* Officially mark ExternalStoreFactory as internal, pointing
to ExternalStoreAccess instead. And document why the latter exists,
since it seems all its methods could trivially move to the factory
class. Follows-up I40c3b553, where it was explained that the factory
is meant to be an internal implementation detail, with the access
class meant to resemble ExternalStoreMedium.
* Use consistent terms for "protocol", "location" and "object"
(reduce use of words like medium, backend, type, blob, revision,
etc. within this code).
* Document that ExternalStore is fundamentally designed as an
append-only store (per T247383).
Bug: T247383
Change-Id: I1094af7d35a14f9e47b8791f3e4cc888e8cbfc7f
This helps phan to detect unreachable code and also impossible types
after the functions.
It helps phan to avoid false positives for array keys
when the keys are checked before
Bug: T240141
Change-Id: I895f70e82b3053a46cd44135b15437e6f82a07b2
All methods got moved to HttpRequestFactory or MWHttpRequest or dropped.
I made the return value of the new HttpRequestFactory::request/get/post
methods null on error instead of false, so that when we drop PHP 7
support, we can use a "?string" return value. This could theoretically
change behavior of code that was switched from the old Http methods, but
probably won't. I kept the old behavior for the deprecated methods.
I changed the default value of $wgHTTPProxy from false to ''. This way
it should be usable directly without a trivial wrapper method. For the
benefit of anyone who might have set it to false in LocalSettings.php, I
also recommend casting to string just in case.
Http::$httpEngine is deprecated. Eventually it will be removed along
with the curl and PHP engines, leaving only the Guzlle engine.
I also added deprecation of MWHttpRequest::factory, which occurred in
1.31, to the release notes for 1.34. Now hopefully we can hard-deprecate
it in another couple of versions.
Bug: T214390
Change-Id: I2a316a758d793857f248bd251b90f5e9a6440e3a
* Added ExternalStoreMedium base class
* Moved up two functions in ExternalStoreDB
* Various documentation tweaks
Change-Id: I6790aab7799609422e7af4fb31d2ad60610298ec