Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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)) |
| OLD | NEW |