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