| 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 and names of directories. |
| 230 packages = messages.StringField(3, repeated=True) |
| 231 directories = messages.StringField(4, repeated=True) |
| 232 |
| 233 |
| 234 ################################################################################ |
| 235 |
| 236 |
| 223 class RegisterPackageResponse(messages.Message): | 237 class RegisterPackageResponse(messages.Message): |
| 224 """Results of registerPackage call.""" | 238 """Results of registerPackage call.""" |
| 225 status = messages.EnumField(Status, 1, required=True) | 239 status = messages.EnumField(Status, 1, required=True) |
| 226 error_message = messages.StringField(2, required=False) | 240 error_message = messages.StringField(2, required=False) |
| 227 | 241 |
| 228 # For REGISTERED or ALREADY_REGISTERED, information about the package. | 242 # For REGISTERED or ALREADY_REGISTERED, information about the package. |
| 229 package = messages.MessageField(Package, 3, required=False) | 243 package = messages.MessageField(Package, 3, required=False) |
| 230 | 244 |
| 231 | 245 |
| 232 ################################################################################ | 246 ################################################################################ |
| (...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 530 | 544 |
| 531 caller = auth.get_current_identity() | 545 caller = auth.get_current_identity() |
| 532 if not acl.can_register_package(package_name, caller): | 546 if not acl.can_register_package(package_name, caller): |
| 533 raise auth.AuthorizationError() | 547 raise auth.AuthorizationError() |
| 534 | 548 |
| 535 pkg, registered = self.service.register_package(package_name, caller) | 549 pkg, registered = self.service.register_package(package_name, caller) |
| 536 return RegisterPackageResponse( | 550 return RegisterPackageResponse( |
| 537 status=Status.REGISTERED if registered else Status.ALREADY_REGISTERED, | 551 status=Status.REGISTERED if registered else Status.ALREADY_REGISTERED, |
| 538 package=package_to_proto(pkg)) | 552 package=package_to_proto(pkg)) |
| 539 | 553 |
| 554 @endpoints_method( |
| 555 endpoints.ResourceContainer( |
| 556 message_types.VoidMessage, |
| 557 path=messages.StringField(1, required=False), |
| 558 recursive=messages.BooleanField(2, required=False)), |
| 559 ListPackagesResponse, |
| 560 http_method='GET', |
| 561 path='package/search', |
| 562 name='listPackages') |
| 563 def list_packages(self, request): |
| 564 """Returns packages in the given directory and possibly subdirectories.""" |
| 565 path = request.path or '' |
| 566 recursive = request.recursive or False |
| 567 |
| 568 pkgs, dirs = self.service.list_packages(path, recursive) |
| 569 caller = auth.get_current_identity() |
| 570 visible_pkgs = [p for p in pkgs if acl.can_fetch_package(p, caller)] |
| 571 visible_dirs = [d for d in dirs if acl.can_fetch_package(d, caller)] |
| 572 |
| 573 return ListPackagesResponse(packages=visible_pkgs, directories=visible_dirs) |
| 574 |
| 540 | 575 |
| 541 ### PackageInstance methods. | 576 ### PackageInstance methods. |
| 542 | 577 |
| 543 | 578 |
| 544 @endpoints_method( | 579 @endpoints_method( |
| 545 endpoints.ResourceContainer( | 580 endpoints.ResourceContainer( |
| 546 message_types.VoidMessage, | 581 message_types.VoidMessage, |
| 547 package_name=messages.StringField(1, required=True), | 582 package_name=messages.StringField(1, required=True), |
| 548 instance_id=messages.StringField(2, required=True)), | 583 instance_id=messages.StringField(2, required=True)), |
| 549 FetchInstanceResponse, | 584 FetchInstanceResponse, |
| (...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 886 return FetchClientBinaryResponse( | 921 return FetchClientBinaryResponse( |
| 887 status=Status.NOT_EXTRACTED_YET, | 922 status=Status.NOT_EXTRACTED_YET, |
| 888 instance=instance_to_proto(instance)) | 923 instance=instance_to_proto(instance)) |
| 889 | 924 |
| 890 return FetchClientBinaryResponse( | 925 return FetchClientBinaryResponse( |
| 891 instance=instance_to_proto(instance), | 926 instance=instance_to_proto(instance), |
| 892 client_binary=FetchClientBinaryResponse.ClientBinary( | 927 client_binary=FetchClientBinaryResponse.ClientBinary( |
| 893 sha1=client_info.sha1, | 928 sha1=client_info.sha1, |
| 894 size=client_info.size, | 929 size=client_info.size, |
| 895 fetch_url=client_info.fetch_url)) | 930 fetch_url=client_info.fetch_url)) |
| OLD | NEW |