Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
103 lines (78 loc) · 3.15 KB

File metadata and controls

103 lines (78 loc) · 3.15 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/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.
# [START all]
"""Command-line sample application for composing objects 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.
To run, create a least two sample files:
$ echo "File 1" > file1.txt
$ echo "File 2" > file2.txt
Example invocation:
$ python compose_objects.py my-bucket destination.txt file1.txt file2.txt
"""
import argparse
import json
from googleapiclient import discovery
from oauth2client.client import GoogleCredentials
def main(bucket, destination, sources):
# 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 the interacting with the Cloud Storage
# API.
service = discovery.build('storage', 'v1', credentials=credentials)
# Upload the source files.
for filename in sources:
req = service.objects().insert(
media_body=filename,
name=filename,
bucket=bucket)
resp = req.execute()
print('> Uploaded source file {}'.format(filename))
print(json.dumps(resp, indent=2))
# Construct a request to compose the source files into the destination.
compose_req_body = {
'sourceObjects': [{'name': filename} for filename in sources],
'destination': {
'contentType': 'text/plain', # required
}
}
req = service.objects().compose(
destinationBucket=bucket,
destinationObject=destination,
body=compose_req_body)
resp = req.execute()
print('> Composed files into {}'.format(destination))
print(json.dumps(resp, indent=2))
# Download and print the composed object.
req = service.objects().get_media(
bucket=bucket,
object=destination)
res = req.execute()
print('> Composed file contents:')
print(res)
if __name__ == '__main__':
parser = argparse.ArgumentParser(
description=__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('bucket', help='Your Cloud Storage bucket.')
parser.add_argument('destination', help='Destination file name.')
parser.add_argument('sources', nargs='+', help='Source files to compose.')
args = parser.parse_args()
main(args.bucket, args.destination, args.sources)
# [END all]
Morty Proxy This is a proxified and sanitized view of the page, visit original site.