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

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
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 8
9 import endpoints 9 import endpoints
10 10
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 status = messages.EnumField(Status, 1, required=True) 213 status = messages.EnumField(Status, 1, required=True)
214 error_message = messages.StringField(2, required=False) 214 error_message = messages.StringField(2, required=False)
215 215
216 # For SUCCESS, information about the package. 216 # For SUCCESS, information about the package.
217 package = messages.MessageField(Package, 3, required=False) 217 package = messages.MessageField(Package, 3, required=False)
218 218
219 219
220 ################################################################################ 220 ################################################################################
221 221
222 222
223 class ListPackagesResponse(messages.Message):
224 """Results of listPackage call."""
225
226 status = messages.EnumField(Status, 1, required=True)
227 error_message = messages.StringField(2, required=False)
228
229 # For SUCCESS, names of the packages.
230 packages = messages.StringField(3, repeated=True)
231
232
233 ################################################################################
234
235
223 class RegisterPackageResponse(messages.Message): 236 class RegisterPackageResponse(messages.Message):
224 """Results of registerPackage call.""" 237 """Results of registerPackage call."""
225 status = messages.EnumField(Status, 1, required=True) 238 status = messages.EnumField(Status, 1, required=True)
226 error_message = messages.StringField(2, required=False) 239 error_message = messages.StringField(2, required=False)
227 240
228 # For REGISTERED or ALREADY_REGISTERED, information about the package. 241 # For REGISTERED or ALREADY_REGISTERED, information about the package.
229 package = messages.MessageField(Package, 3, required=False) 242 package = messages.MessageField(Package, 3, required=False)
230 243
231 244
232 ################################################################################ 245 ################################################################################
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 543
531 caller = auth.get_current_identity() 544 caller = auth.get_current_identity()
532 if not acl.can_register_package(package_name, caller): 545 if not acl.can_register_package(package_name, caller):
533 raise auth.AuthorizationError() 546 raise auth.AuthorizationError()
534 547
535 pkg, registered = self.service.register_package(package_name, caller) 548 pkg, registered = self.service.register_package(package_name, caller)
536 return RegisterPackageResponse( 549 return RegisterPackageResponse(
537 status=Status.REGISTERED if registered else Status.ALREADY_REGISTERED, 550 status=Status.REGISTERED if registered else Status.ALREADY_REGISTERED,
538 package=package_to_proto(pkg)) 551 package=package_to_proto(pkg))
539 552
553 # 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.
554 # parameter? I haven't done much RESTful API work before.
555 @endpoints_method(
556 endpoints.ResourceContainer(
557 message_types.VoidMessage,
558 prefix=messages.StringField(1, required=False)),
559 ListPackagesResponse,
560 http_method='GET',
561 path='packages',
562 name='listPackages')
563 def list_packages(self, request):
564 """Returns information about a package."""
565 prefix = request.prefix or ''
566
567 pkgs = self.service.list_packages(prefix)
568 caller = auth.get_current_identity()
569 visible_pkgs = [p for p in pkgs if acl.can_fetch_package(p, caller)]
570
571 return ListPackagesResponse(packages=visible_pkgs)
572
540 573
541 ### PackageInstance methods. 574 ### PackageInstance methods.
542 575
543 576
544 @endpoints_method( 577 @endpoints_method(
545 endpoints.ResourceContainer( 578 endpoints.ResourceContainer(
546 message_types.VoidMessage, 579 message_types.VoidMessage,
547 package_name=messages.StringField(1, required=True), 580 package_name=messages.StringField(1, required=True),
548 instance_id=messages.StringField(2, required=True)), 581 instance_id=messages.StringField(2, required=True)),
549 FetchInstanceResponse, 582 FetchInstanceResponse,
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
886 return FetchClientBinaryResponse( 919 return FetchClientBinaryResponse(
887 status=Status.NOT_EXTRACTED_YET, 920 status=Status.NOT_EXTRACTED_YET,
888 instance=instance_to_proto(instance)) 921 instance=instance_to_proto(instance))
889 922
890 return FetchClientBinaryResponse( 923 return FetchClientBinaryResponse(
891 instance=instance_to_proto(instance), 924 instance=instance_to_proto(instance),
892 client_binary=FetchClientBinaryResponse.ClientBinary( 925 client_binary=FetchClientBinaryResponse.ClientBinary(
893 sha1=client_info.sha1, 926 sha1=client_info.sha1,
894 size=client_info.size, 927 size=client_info.size,
895 fetch_url=client_info.fetch_url)) 928 fetch_url=client_info.fetch_url))
OLDNEW
« 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