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

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
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 e8bc57c30ef8d43870a0c3f501657e92e8f4155b..879dcba7ac8732ea5c3dcedb2780ceb65a96d3e3 100644
--- a/appengine/chrome_infra_packages/cipd/api.py
+++ b/appengine/chrome_infra_packages/cipd/api.py
@@ -220,6 +220,19 @@ 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.
+ packages = messages.StringField(3, repeated=True)
+
+
+################################################################################
+
+
class RegisterPackageResponse(messages.Message):
"""Results of registerPackage call."""
status = messages.EnumField(Status, 1, required=True)
@@ -537,6 +550,26 @@ class PackageRepositoryApi(remote.Service):
status=Status.REGISTERED if registered else Status.ALREADY_REGISTERED,
package=package_to_proto(pkg))
+ # REVIEW: Should I be reusing the /package path with an additional prefix
Vadim Sh. 2015/06/19 21:12:03 I think packages is ok. Consider also "GET /packag
estaab 2015/06/20 02:25:25 Done.
+ # parameter? I haven't done much RESTful API work before.
+ @endpoints_method(
+ endpoints.ResourceContainer(
+ message_types.VoidMessage,
+ prefix=messages.StringField(1, required=False)),
+ ListPackagesResponse,
+ http_method='GET',
+ path='packages',
+ name='listPackages')
+ def list_packages(self, request):
+ """Returns information about a package."""
+ prefix = request.prefix or ''
+
+ pkgs = self.service.list_packages(prefix)
+ caller = auth.get_current_identity()
+ visible_pkgs = [p for p in pkgs if acl.can_fetch_package(p, caller)]
+
+ return ListPackagesResponse(packages=visible_pkgs)
+
### PackageInstance methods.
« no previous file with comments | « no previous file | appengine/chrome_infra_packages/cipd/impl.py » ('j') | appengine/chrome_infra_packages/cipd/impl.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698