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

Side by Side 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 unified diff | Download patch
« no previous file with comments | « no previous file | appengine/chrome_infra_packages/cipd/impl.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Cloud Endpoints API for Package Repository service.""" 5 """Cloud Endpoints API for Package Repository service."""
6 6
7 import functools 7 import functools
8 import logging 8 import logging
9 9
10 import endpoints 10 import endpoints
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 status = messages.EnumField(Status, 1, required=True) 229 status = messages.EnumField(Status, 1, required=True)
230 error_message = messages.StringField(2, required=False) 230 error_message = messages.StringField(2, required=False)
231 231
232 # For SUCCESS, information about the package. 232 # For SUCCESS, information about the package.
233 package = messages.MessageField(Package, 3, required=False) 233 package = messages.MessageField(Package, 3, required=False)
234 234
235 235
236 ################################################################################ 236 ################################################################################
237 237
238 238
239 class ListPackagesResponse(messages.Message):
240 """Results of listPackage call."""
241
242 status = messages.EnumField(Status, 1, required=True)
243 error_message = messages.StringField(2, required=False)
244
245 # For SUCCESS, names of the packages and names of directories.
246 packages = messages.StringField(3, repeated=True)
247 directories = messages.StringField(4, repeated=True)
248
249
250 ################################################################################
251
252
239 class RegisterPackageResponse(messages.Message): 253 class RegisterPackageResponse(messages.Message):
240 """Results of registerPackage call.""" 254 """Results of registerPackage call."""
241 status = messages.EnumField(Status, 1, required=True) 255 status = messages.EnumField(Status, 1, required=True)
242 error_message = messages.StringField(2, required=False) 256 error_message = messages.StringField(2, required=False)
243 257
244 # For REGISTERED or ALREADY_REGISTERED, information about the package. 258 # For REGISTERED or ALREADY_REGISTERED, information about the package.
245 package = messages.MessageField(Package, 3, required=False) 259 package = messages.MessageField(Package, 3, required=False)
246 260
247 261
248 ################################################################################ 262 ################################################################################
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 609
596 caller = auth.get_current_identity() 610 caller = auth.get_current_identity()
597 if not acl.can_register_package(package_name, caller): 611 if not acl.can_register_package(package_name, caller):
598 raise auth.AuthorizationError() 612 raise auth.AuthorizationError()
599 613
600 pkg, registered = self.service.register_package(package_name, caller) 614 pkg, registered = self.service.register_package(package_name, caller)
601 return RegisterPackageResponse( 615 return RegisterPackageResponse(
602 status=Status.REGISTERED if registered else Status.ALREADY_REGISTERED, 616 status=Status.REGISTERED if registered else Status.ALREADY_REGISTERED,
603 package=package_to_proto(pkg)) 617 package=package_to_proto(pkg))
604 618
619 @endpoints_method(
620 endpoints.ResourceContainer(
621 message_types.VoidMessage,
622 path=messages.StringField(1, required=False),
623 recursive=messages.BooleanField(2, required=False)),
624 ListPackagesResponse,
625 http_method='GET',
626 path='package/search',
627 name='listPackages')
628 def list_packages(self, request):
629 """Returns packages in the given directory and possibly subdirectories."""
630 path = request.path or ''
631 recursive = request.recursive or False
632
633 pkgs, dirs = self.service.list_packages(path, recursive)
634 caller = auth.get_current_identity()
635 visible_pkgs = [p for p in pkgs if acl.can_fetch_package(p, caller)]
636 visible_dirs = [d for d in dirs if acl.can_fetch_package(d, caller)]
637
638 return ListPackagesResponse(packages=visible_pkgs, directories=visible_dirs)
639
605 640
606 ### PackageInstance methods. 641 ### PackageInstance methods.
607 642
608 643
609 @endpoints_method( 644 @endpoints_method(
610 endpoints.ResourceContainer( 645 endpoints.ResourceContainer(
611 message_types.VoidMessage, 646 message_types.VoidMessage,
612 package_name=messages.StringField(1, required=True), 647 package_name=messages.StringField(1, required=True),
613 instance_id=messages.StringField(2, required=True)), 648 instance_id=messages.StringField(2, required=True)),
614 FetchInstanceResponse, 649 FetchInstanceResponse,
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
972 return FetchClientBinaryResponse( 1007 return FetchClientBinaryResponse(
973 status=Status.NOT_EXTRACTED_YET, 1008 status=Status.NOT_EXTRACTED_YET,
974 instance=instance_to_proto(instance)) 1009 instance=instance_to_proto(instance))
975 1010
976 return FetchClientBinaryResponse( 1011 return FetchClientBinaryResponse(
977 instance=instance_to_proto(instance), 1012 instance=instance_to_proto(instance),
978 client_binary=FetchClientBinaryResponse.ClientBinary( 1013 client_binary=FetchClientBinaryResponse.ClientBinary(
979 sha1=client_info.sha1, 1014 sha1=client_info.sha1,
980 size=client_info.size, 1015 size=client_info.size,
981 fetch_url=client_info.fetch_url)) 1016 fetch_url=client_info.fetch_url))
OLDNEW
« 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