This adds legacy support for the old API calls. This is mostly untested
but should work. Returns might not be 100% compatible in all cases but I
did my best to return the same things as before.
This will be removed in the future of course and is just to not
completely break any API usage immeadiately.
Our cache system ignores purge requests that have a referrer. The idea
is to avoid permanent recaching because a purge link was posted
somewhere.
However for the retry link in the extension manager we actually want the
link to work. So this patch supresses the referrer for that link.
When the plugin repository answers but returns non-data (as can happen
when the database isn't available, as we have learned yesterday), the
extension manager still tried to deserialize the data.
This changes all communication from php-serialized to JSON encoded data.
When JSON-decoding fails, the data is ignored and an error message is
shown. Failure data like this will not be cached.
We test against the MockAPICore now since the tests are meant to ensure
the general functionality of accepting XML and correctly calling
APICalls works, not that the API returns the right things (this is
tested in the ApiCore tests).
Since we no longer use dates but always integers, we no longer need to
handle that.
When using named parameters, you can expect to be able to leave out any
optional parameter and have it take it's default, even when you specify
another "later" parameter. Luckily we already know all the defaults from
reflection anyway.
Instead of passing unknown arrays, explicit parameters are passed.
Revision handling should now work correctly since we can pass revision=0
but a mtime.
We always deal with timestamps or base64 now. Removing some of the magic
makes everything less complex.
Only affected plugin is confmanager, which needs an update.
Error codes are now extracted from API core and printed on the OpenAPI
overview page. This makes it easier to see what is in use.
Error messages have been cleaned up, some new codes have been assigned.
Some errors have been removed. Eg. it is fine to iterate a media
namespace you don't have read access to. The result will either be empty
or contain files from lower namespaces that you *do* have access to.