Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(91)

Unified Diff: appengine/chrome_infra_packages/cipd/api.py

Issue 1194803002: Add a package listing API to cipd. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | appengine/chrome_infra_packages/cipd/impl.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: appengine/chrome_infra_packages/cipd/api.py
diff --git a/appengine/chrome_infra_packages/cipd/api.py b/appengine/chrome_infra_packages/cipd/api.py
index cf138eb1a280cdf6f435f90d5512e8b23e41014f..8dc3d6cfb503e75a53fe9a513892f50d3a824f4c 100644
--- a/appengine/chrome_infra_packages/cipd/api.py
+++ b/appengine/chrome_infra_packages/cipd/api.py
@@ -236,6 +236,20 @@ class FetchPackageResponse(messages.Message):
################################################################################
+class ListPackagesResponse(messages.Message):
+ """Results of listPackage call."""
+
+ status = messages.EnumField(Status, 1, required=True)
+ error_message = messages.StringField(2, required=False)
+
+ # For SUCCESS, names of the packages and names of directories.
+ packages = messages.StringField(3, repeated=True)
+ directories = messages.StringField(4, repeated=True)
+
+
+################################################################################
+
+
class RegisterPackageResponse(messages.Message):
"""Results of registerPackage call."""
status = messages.EnumField(Status, 1, required=True)
@@ -602,6 +616,27 @@ class PackageRepositoryApi(remote.Service):
status=Status.REGISTERED if registered else Status.ALREADY_REGISTERED,
package=package_to_proto(pkg))
+ @endpoints_method(
+ endpoints.ResourceContainer(
+ message_types.VoidMessage,
+ path=messages.StringField(1, required=False),
+ recursive=messages.BooleanField(2, required=False)),
+ ListPackagesResponse,
+ http_method='GET',
+ path='package/search',
+ name='listPackages')
+ def list_packages(self, request):
+ """Returns packages in the given directory and possibly subdirectories."""
+ path = request.path or ''
+ recursive = request.recursive or False
+
+ pkgs, dirs = self.service.list_packages(path, recursive)
+ caller = auth.get_current_identity()
+ visible_pkgs = [p for p in pkgs if acl.can_fetch_package(p, caller)]
+ visible_dirs = [d for d in dirs if acl.can_fetch_package(d, caller)]
+
+ return ListPackagesResponse(packages=visible_pkgs, directories=visible_dirs)
+
### PackageInstance methods.
« no previous file with comments | « no previous file | appengine/chrome_infra_packages/cipd/impl.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698