api: implement a new /content endpoint that stream the whole content
this stacks a pile of revisions (one of them should be extracted from this sandwich, but it quite painful a task):
-
refactor the SWHRemoteClient so it does not inherit from ObjStorage nor SWHRemoteAPI and implement the remote api accessor as a _proxy attribute instead of inheriting the class to make class instanciation easier and prevent name collision.
-
Also get rid of the ObjStorage inheritance which did not help and add instanciation (argument passing) complexity. This also solve the 'allow_delete' attribute presence which makes no sense for the remote api component.
-
upgrade the server implementation to aiohttp 3 <== this one
-
objstorage: implement the list_content method for most of the storage backends and add a dedicated test.
-
api: implement the list_content method on RemoteObjStorage and update the server's part accordingly.
-
tests: add a test for the ObjStorage.list_content() including testing for pagination (limit and last_obj_id arguments).
Note: skip the test_list_content for the StripingObjStorage since we have no way to implement pagination support for the list_content() method in this backend.
-
Make iteration over a ObjStorage sorted to be able to have a generic implementation of pagination for the list_content() method.
-
Add a DEFAULT_LIMIT global value for the limit argument of list_content() and use it.
-
pathslicer: implement a better list_content method that prune unnecessaty directories when walking the root path. Add a dedicated unit test.
Migrated from D1274 (view on Phabricator)