#!/usr/bin/env python # Copyright (C) 2013 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Command-line sample application for listing all objects in a bucket using the Cloud Storage API. This sample is used on this page: https://cloud.google.com/storage/docs/json_api/v1/json-api-python-samples For more information, see the README.md under /storage. """ import argparse import json from googleapiclient import discovery from oauth2client.client import GoogleCredentials def create_service(): """Creates the service object for calling the Cloud Storage API.""" # Get the application default credentials. When running locally, these are # available after running `gcloud init`. When running on compute # engine, these are available from the environment. credentials = GoogleCredentials.get_application_default() # Construct the service object for interacting with the Cloud Storage API - # the 'storage' service, at version 'v1'. # You can browse other available api services and versions here: # https://developers.google.com/api-client-library/python/apis/ return discovery.build('storage', 'v1', credentials=credentials) def get_bucket_metadata(bucket): """Retrieves metadata about the given bucket.""" service = create_service() # Make a request to buckets.get to retrieve a list of objects in the # specified bucket. req = service.buckets().get(bucket=bucket) return req.execute() def list_bucket(bucket): """Returns a list of metadata of the objects within the given bucket.""" service = create_service() # Create a request to objects.list to retrieve a list of objects. fields_to_return = \ 'nextPageToken,items(name,size,contentType,metadata(my-key))' req = service.objects().list(bucket=bucket, fields=fields_to_return) all_objects = [] # If you have too many items to list in one request, list_next() will # automatically handle paging with the pageToken. while req: resp = req.execute() all_objects.extend(resp.get('items', [])) req = service.objects().list_next(req, resp) return all_objects def main(bucket): print(json.dumps(get_bucket_metadata(bucket), indent=2)) print(json.dumps(list_bucket(bucket), indent=2)) if __name__ == '__main__': parser = argparse.ArgumentParser( description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) parser.add_argument('bucket', help='Your Cloud Storage bucket.') args = parser.parse_args() main(args.bucket)