gcloud 0.6.3 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/AUTHENTICATION.md +13 -9
- data/CHANGELOG.md +8 -3
- data/OVERVIEW.md +46 -8
- data/lib/gcloud.rb +123 -117
- data/lib/gcloud/backoff.rb +43 -15
- data/lib/gcloud/bigquery.rb +211 -195
- data/lib/gcloud/bigquery/connection.rb +9 -9
- data/lib/gcloud/bigquery/copy_job.rb +15 -16
- data/lib/gcloud/bigquery/credentials.rb +3 -3
- data/lib/gcloud/bigquery/data.rb +12 -11
- data/lib/gcloud/bigquery/dataset.rb +162 -216
- data/lib/gcloud/bigquery/dataset/access.rb +59 -43
- data/lib/gcloud/bigquery/dataset/list.rb +3 -3
- data/lib/gcloud/bigquery/errors.rb +9 -5
- data/lib/gcloud/bigquery/extract_job.rb +18 -18
- data/lib/gcloud/bigquery/insert_response.rb +7 -4
- data/lib/gcloud/bigquery/job.rb +48 -44
- data/lib/gcloud/bigquery/job/list.rb +3 -3
- data/lib/gcloud/bigquery/load_job.rb +24 -25
- data/lib/gcloud/bigquery/project.rb +145 -204
- data/lib/gcloud/bigquery/query_data.rb +10 -9
- data/lib/gcloud/bigquery/query_job.rb +23 -32
- data/lib/gcloud/bigquery/table.rb +238 -280
- data/lib/gcloud/bigquery/table/list.rb +3 -3
- data/lib/gcloud/bigquery/table/schema.rb +79 -87
- data/lib/gcloud/bigquery/view.rb +69 -82
- data/lib/gcloud/credentials.rb +3 -9
- data/lib/gcloud/datastore.rb +194 -170
- data/lib/gcloud/datastore/connection.rb +12 -8
- data/lib/gcloud/datastore/credentials.rb +6 -4
- data/lib/gcloud/datastore/dataset.rb +74 -141
- data/lib/gcloud/datastore/dataset/lookup_results.rb +6 -4
- data/lib/gcloud/datastore/dataset/query_results.rb +6 -4
- data/lib/gcloud/datastore/entity.rb +81 -76
- data/lib/gcloud/datastore/errors.rb +10 -8
- data/lib/gcloud/datastore/key.rb +41 -77
- data/lib/gcloud/datastore/properties.rb +3 -3
- data/lib/gcloud/datastore/proto.rb +7 -4
- data/lib/gcloud/datastore/query.rb +26 -3
- data/lib/gcloud/datastore/transaction.rb +12 -8
- data/lib/gcloud/dns.rb +180 -152
- data/lib/gcloud/dns/change.rb +16 -16
- data/lib/gcloud/dns/change/list.rb +3 -3
- data/lib/gcloud/dns/connection.rb +9 -10
- data/lib/gcloud/dns/credentials.rb +3 -3
- data/lib/gcloud/dns/errors.rb +9 -5
- data/lib/gcloud/dns/importer.rb +17 -23
- data/lib/gcloud/dns/project.rb +42 -64
- data/lib/gcloud/dns/record.rb +58 -46
- data/lib/gcloud/dns/record/list.rb +6 -7
- data/lib/gcloud/dns/zone.rb +198 -289
- data/lib/gcloud/dns/zone/list.rb +3 -3
- data/lib/gcloud/dns/zone/transaction.rb +56 -72
- data/lib/gcloud/errors.rb +174 -3
- data/lib/gcloud/gce.rb +3 -4
- data/lib/gcloud/grpc_utils.rb +76 -0
- data/lib/gcloud/logging.rb +308 -0
- data/lib/gcloud/logging/credentials.rb +29 -0
- data/lib/gcloud/logging/entry.rb +303 -0
- data/lib/gcloud/logging/entry/http_request.rb +141 -0
- data/lib/gcloud/logging/entry/list.rb +111 -0
- data/lib/gcloud/logging/entry/operation.rb +90 -0
- data/lib/gcloud/logging/logger.rb +307 -0
- data/lib/gcloud/logging/metric.rb +175 -0
- data/lib/gcloud/logging/metric/list.rb +98 -0
- data/lib/gcloud/logging/project.rb +650 -0
- data/lib/gcloud/logging/resource.rb +95 -0
- data/lib/gcloud/logging/resource_descriptor.rb +140 -0
- data/lib/gcloud/logging/resource_descriptor/list.rb +78 -0
- data/lib/gcloud/logging/service.rb +258 -0
- data/lib/gcloud/logging/sink.rb +233 -0
- data/lib/gcloud/logging/sink/list.rb +97 -0
- data/lib/gcloud/pubsub.rb +241 -199
- data/lib/gcloud/pubsub/credentials.rb +3 -3
- data/lib/gcloud/pubsub/message.rb +26 -20
- data/lib/gcloud/pubsub/project.rb +166 -233
- data/lib/gcloud/pubsub/received_message.rb +28 -38
- data/lib/gcloud/pubsub/service.rb +323 -0
- data/lib/gcloud/pubsub/subscription.rb +172 -242
- data/lib/gcloud/pubsub/subscription/list.rb +11 -9
- data/lib/gcloud/pubsub/topic.rb +152 -271
- data/lib/gcloud/pubsub/topic/batch.rb +66 -0
- data/lib/gcloud/pubsub/topic/list.rb +9 -7
- data/lib/gcloud/resource_manager.rb +158 -138
- data/lib/gcloud/resource_manager/connection.rb +6 -5
- data/lib/gcloud/resource_manager/credentials.rb +3 -3
- data/lib/gcloud/resource_manager/errors.rb +9 -5
- data/lib/gcloud/resource_manager/manager.rb +54 -86
- data/lib/gcloud/resource_manager/project.rb +69 -88
- data/lib/gcloud/resource_manager/project/list.rb +4 -5
- data/lib/gcloud/resource_manager/project/updater.rb +12 -14
- data/lib/gcloud/search.rb +158 -135
- data/lib/gcloud/search/api_client.rb +7 -7
- data/lib/gcloud/search/connection.rb +8 -8
- data/lib/gcloud/search/credentials.rb +3 -3
- data/lib/gcloud/search/document.rb +64 -87
- data/lib/gcloud/search/document/list.rb +5 -5
- data/lib/gcloud/search/errors.rb +9 -5
- data/lib/gcloud/search/field_value.rb +32 -38
- data/lib/gcloud/search/field_values.rb +50 -80
- data/lib/gcloud/search/fields.rb +44 -65
- data/lib/gcloud/search/index.rb +163 -204
- data/lib/gcloud/search/index/list.rb +5 -5
- data/lib/gcloud/search/project.rb +31 -47
- data/lib/gcloud/search/result.rb +27 -31
- data/lib/gcloud/search/result/list.rb +6 -6
- data/lib/gcloud/storage.rb +224 -190
- data/lib/gcloud/storage/bucket.rb +202 -227
- data/lib/gcloud/storage/bucket/acl.rb +83 -170
- data/lib/gcloud/storage/bucket/cors.rb +31 -34
- data/lib/gcloud/storage/bucket/list.rb +3 -3
- data/lib/gcloud/storage/connection.rb +11 -7
- data/lib/gcloud/storage/credentials.rb +3 -3
- data/lib/gcloud/storage/errors.rb +11 -8
- data/lib/gcloud/storage/file.rb +129 -171
- data/lib/gcloud/storage/file/acl.rb +51 -99
- data/lib/gcloud/storage/file/list.rb +3 -3
- data/lib/gcloud/storage/file/verifier.rb +3 -2
- data/lib/gcloud/storage/project.rb +111 -132
- data/lib/gcloud/upload.rb +4 -7
- data/lib/gcloud/version.rb +2 -4
- data/lib/google/api/annotations.rb +14 -0
- data/lib/google/api/http.rb +30 -0
- data/lib/google/api/label.rb +24 -0
- data/lib/google/api/monitored_resource.rb +25 -0
- data/lib/google/datastore/v1beta3/datastore.rb +115 -0
- data/lib/google/datastore/v1beta3/datastore_services.rb +33 -0
- data/lib/google/datastore/v1beta3/entity.rb +63 -0
- data/lib/google/datastore/v1beta3/query.rb +128 -0
- data/lib/google/devtools/cloudtrace/v1/trace.rb +78 -0
- data/lib/google/devtools/cloudtrace/v1/trace_services.rb +32 -0
- data/lib/google/example/library/v1/library.rb +91 -0
- data/lib/google/example/library/v1/library_services.rb +40 -0
- data/lib/google/iam/v1/iam_policy.rb +33 -0
- data/lib/google/iam/v1/iam_policy_services.rb +30 -0
- data/lib/google/iam/v1/policy.rb +25 -0
- data/lib/google/logging/type/http_request.rb +28 -0
- data/lib/google/logging/type/log_severity.rb +27 -0
- data/lib/google/logging/v2/log_entry.rb +44 -0
- data/lib/google/logging/v2/logging.rb +56 -0
- data/lib/google/logging/v2/logging_config.rb +59 -0
- data/lib/google/logging/v2/logging_config_services.rb +32 -0
- data/lib/google/logging/v2/logging_metrics.rb +51 -0
- data/lib/google/logging/v2/logging_metrics_services.rb +32 -0
- data/lib/google/logging/v2/logging_services.rb +31 -0
- data/lib/google/longrunning/operations.rb +50 -0
- data/lib/google/longrunning/operations_services.rb +29 -0
- data/lib/google/protobuf/any.rb +17 -0
- data/lib/google/protobuf/api.rb +31 -0
- data/lib/google/protobuf/descriptor.rb +0 -0
- data/lib/google/protobuf/duration.rb +17 -0
- data/lib/google/protobuf/empty.rb +15 -0
- data/lib/google/protobuf/field_mask.rb +16 -0
- data/lib/google/protobuf/source_context.rb +16 -0
- data/lib/google/protobuf/struct.rb +35 -0
- data/lib/google/protobuf/timestamp.rb +17 -0
- data/lib/google/protobuf/type.rb +79 -0
- data/lib/google/protobuf/wrappers.rb +48 -0
- data/lib/google/pubsub/v1/pubsub.rb +129 -0
- data/lib/google/pubsub/v1/pubsub_services.rb +56 -0
- data/lib/google/pubsub/v1beta2/pubsub.rb +126 -0
- data/lib/google/pubsub/v1beta2/pubsub_services.rb +56 -0
- data/lib/google/rpc/code.rb +32 -0
- data/lib/google/rpc/error_details.rb +61 -0
- data/lib/google/rpc/status.rb +19 -0
- data/lib/google/type/color.rb +20 -0
- data/lib/google/type/date.rb +18 -0
- data/lib/google/type/dayofweek.rb +23 -0
- data/lib/google/type/latlng.rb +17 -0
- data/lib/google/type/money.rb +18 -0
- data/lib/google/type/timeofday.rb +19 -0
- metadata +101 -4
- data/lib/gcloud/pubsub/connection.rb +0 -295
- data/lib/gcloud/pubsub/errors.rb +0 -93
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#--
|
|
2
1
|
# Copyright 2015 Google Inc. All rights reserved.
|
|
3
2
|
#
|
|
4
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -13,6 +12,7 @@
|
|
|
13
12
|
# See the License for the specific language governing permissions and
|
|
14
13
|
# limitations under the License.
|
|
15
14
|
|
|
15
|
+
|
|
16
16
|
module Gcloud
|
|
17
17
|
module Search
|
|
18
18
|
class Index
|
|
@@ -25,7 +25,7 @@ module Gcloud
|
|
|
25
25
|
attr_accessor :token
|
|
26
26
|
|
|
27
27
|
##
|
|
28
|
-
# Create a new Index::List with an array of Index instances.
|
|
28
|
+
# Create a new Index::List with an array of {Index} instances.
|
|
29
29
|
def initialize arr = []
|
|
30
30
|
super arr
|
|
31
31
|
end
|
|
@@ -50,7 +50,7 @@ module Gcloud
|
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
##
|
|
53
|
-
# Retrieves all indexes by repeatedly loading pages until #next?
|
|
53
|
+
# Retrieves all indexes by repeatedly loading pages until {#next?}
|
|
54
54
|
# returns false. Returns the list instance for method chaining.
|
|
55
55
|
def all
|
|
56
56
|
while next?
|
|
@@ -62,8 +62,8 @@ module Gcloud
|
|
|
62
62
|
end
|
|
63
63
|
|
|
64
64
|
##
|
|
65
|
-
# New
|
|
66
|
-
def self.from_response resp, conn
|
|
65
|
+
# @private New Index::List from a response object.
|
|
66
|
+
def self.from_response resp, conn
|
|
67
67
|
data = JSON.parse resp.body
|
|
68
68
|
indexes = new(Array(data["indexes"]).map do |raw_index|
|
|
69
69
|
Index.from_raw raw_index, conn
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#--
|
|
2
1
|
# Copyright 2015 Google Inc. All rights reserved.
|
|
3
2
|
#
|
|
4
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -13,6 +12,7 @@
|
|
|
13
12
|
# See the License for the specific language governing permissions and
|
|
14
13
|
# limitations under the License.
|
|
15
14
|
|
|
15
|
+
|
|
16
16
|
require "gcloud/gce"
|
|
17
17
|
require "gcloud/search/connection"
|
|
18
18
|
require "gcloud/search/credentials"
|
|
@@ -22,31 +22,31 @@ require "gcloud/search/errors"
|
|
|
22
22
|
module Gcloud
|
|
23
23
|
module Search
|
|
24
24
|
##
|
|
25
|
-
#
|
|
25
|
+
# # Project
|
|
26
26
|
#
|
|
27
27
|
# Projects are top-level containers in Google Cloud Platform. They store
|
|
28
28
|
# information about billing and authorized users, and they control access to
|
|
29
29
|
# Google Cloud Search resources. Each project has a friendly name and a
|
|
30
|
-
# unique ID. Projects can be created only in the
|
|
31
|
-
# Console
|
|
30
|
+
# unique ID. Projects can be created only in the [Google Developers
|
|
31
|
+
# Console](https://console.developers.google.com). See {Gcloud#search}.
|
|
32
32
|
#
|
|
33
|
+
# @example
|
|
33
34
|
# require "gcloud"
|
|
34
35
|
#
|
|
35
36
|
# gcloud = Gcloud.new
|
|
36
37
|
# search = gcloud.search
|
|
37
38
|
# index = search.index "books"
|
|
38
39
|
#
|
|
39
|
-
# See Gcloud#search
|
|
40
40
|
class Project
|
|
41
41
|
##
|
|
42
|
-
# The Connection object.
|
|
43
|
-
attr_accessor :connection
|
|
42
|
+
# @private The Connection object.
|
|
43
|
+
attr_accessor :connection
|
|
44
44
|
|
|
45
45
|
##
|
|
46
|
-
# Creates a new Connection instance.
|
|
46
|
+
# @private Creates a new Connection instance.
|
|
47
47
|
#
|
|
48
48
|
# See Gcloud.search
|
|
49
|
-
def initialize project, credentials
|
|
49
|
+
def initialize project, credentials
|
|
50
50
|
project = project.to_s # Always cast to a string
|
|
51
51
|
fail ArgumentError, "project is missing" if project.empty?
|
|
52
52
|
@connection = Connection.new project, credentials
|
|
@@ -55,8 +55,9 @@ module Gcloud
|
|
|
55
55
|
##
|
|
56
56
|
# The ID of the current project.
|
|
57
57
|
#
|
|
58
|
-
#
|
|
58
|
+
# @return [String]
|
|
59
59
|
#
|
|
60
|
+
# @example
|
|
60
61
|
# require "gcloud"
|
|
61
62
|
#
|
|
62
63
|
# gcloud = Gcloud.new "my-project", "/path/to/keyfile.json"
|
|
@@ -69,8 +70,8 @@ module Gcloud
|
|
|
69
70
|
end
|
|
70
71
|
|
|
71
72
|
##
|
|
72
|
-
# Default project.
|
|
73
|
-
def self.default_project
|
|
73
|
+
# @private Default project.
|
|
74
|
+
def self.default_project
|
|
74
75
|
ENV["SEARCH_PROJECT"] ||
|
|
75
76
|
ENV["GCLOUD_PROJECT"] ||
|
|
76
77
|
ENV["GOOGLE_CLOUD_PROJECT"] ||
|
|
@@ -80,22 +81,15 @@ module Gcloud
|
|
|
80
81
|
##
|
|
81
82
|
# Retrieves an existing index by ID.
|
|
82
83
|
#
|
|
83
|
-
#
|
|
84
|
-
#
|
|
85
|
-
#
|
|
86
|
-
#
|
|
87
|
-
#
|
|
88
|
-
# Optionally create an Index object without verifying the index resource
|
|
89
|
-
# exists on the Search service. Documents saved on this object will
|
|
90
|
-
# create the index resource if the resource does not yet exist. Default
|
|
91
|
-
# is +false+. (+Boolean+)
|
|
92
|
-
#
|
|
93
|
-
# === Returns
|
|
84
|
+
# @param [String] index_id The ID of an index.
|
|
85
|
+
# @param [Boolean] skip_lookup Optionally create an Index object without
|
|
86
|
+
# verifying the index resource exists on the Search service. Documents
|
|
87
|
+
# saved on this object will create the index resource if the resource
|
|
88
|
+
# does not yet exist. Default is `false`.
|
|
94
89
|
#
|
|
95
|
-
# Gcloud::Search::Index
|
|
96
|
-
#
|
|
97
|
-
# === Examples
|
|
90
|
+
# @return [Gcloud::Search::Index, nil] nil if the index does not exist
|
|
98
91
|
#
|
|
92
|
+
# @example
|
|
99
93
|
# require "gcloud"
|
|
100
94
|
#
|
|
101
95
|
# gcloud = Gcloud.new
|
|
@@ -104,9 +98,7 @@ module Gcloud
|
|
|
104
98
|
# index = search.index "books"
|
|
105
99
|
# index.index_id #=> "books"
|
|
106
100
|
#
|
|
107
|
-
# A new index can be created
|
|
108
|
-
# +skip_lookup+ option:
|
|
109
|
-
#
|
|
101
|
+
# @example A new index can be created with `index_id` and `skip_lookup`:
|
|
110
102
|
# require "gcloud"
|
|
111
103
|
#
|
|
112
104
|
# gcloud = Gcloud.new
|
|
@@ -130,23 +122,17 @@ module Gcloud
|
|
|
130
122
|
##
|
|
131
123
|
# Retrieves the list of indexes belonging to the project.
|
|
132
124
|
#
|
|
133
|
-
#
|
|
125
|
+
# @param [String] prefix The prefix of the index name. It is used to list
|
|
126
|
+
# all indexes with names that have this prefix.
|
|
127
|
+
# @param [String] token A previously-returned page token representing part
|
|
128
|
+
# of the larger set of results to view.
|
|
129
|
+
# @param [Integer] max Maximum number of indexes to return. The default is
|
|
130
|
+
# `100`.
|
|
134
131
|
#
|
|
135
|
-
#
|
|
136
|
-
#
|
|
137
|
-
# names that have this prefix. (+String+)
|
|
138
|
-
# +token+::
|
|
139
|
-
# A previously-returned page token representing part of the larger set
|
|
140
|
-
# of results to view. (+String+)
|
|
141
|
-
# +max+::
|
|
142
|
-
# Maximum number of indexes to return. The default is +100+. (+Integer+)
|
|
143
|
-
#
|
|
144
|
-
# === Returns
|
|
145
|
-
#
|
|
146
|
-
# Array of Gcloud::Search::Index (See Gcloud::Search::Index::List)
|
|
147
|
-
#
|
|
148
|
-
# === Examples
|
|
132
|
+
# @return [Array<Gcloud::Search::Index>] (See
|
|
133
|
+
# {Gcloud::Search::Index::List})
|
|
149
134
|
#
|
|
135
|
+
# @example
|
|
150
136
|
# require "gcloud"
|
|
151
137
|
#
|
|
152
138
|
# gcloud = Gcloud.new
|
|
@@ -157,9 +143,7 @@ module Gcloud
|
|
|
157
143
|
# puts index.index_id
|
|
158
144
|
# end
|
|
159
145
|
#
|
|
160
|
-
#
|
|
161
|
-
# through them: (See Gcloud::Search::Index::List)
|
|
162
|
-
#
|
|
146
|
+
# @example Using pagination: (See {Gcloud::Search::Index::List})
|
|
163
147
|
# require "gcloud"
|
|
164
148
|
#
|
|
165
149
|
# gcloud = Gcloud.new
|
data/lib/gcloud/search/result.rb
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#--
|
|
2
1
|
# Copyright 2015 Google Inc. All rights reserved.
|
|
3
2
|
#
|
|
4
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -13,31 +12,36 @@
|
|
|
13
12
|
# See the License for the specific language governing permissions and
|
|
14
13
|
# limitations under the License.
|
|
15
14
|
|
|
15
|
+
|
|
16
16
|
require "gcloud/search/result/list"
|
|
17
17
|
require "gcloud/search/fields"
|
|
18
18
|
|
|
19
19
|
module Gcloud
|
|
20
20
|
module Search
|
|
21
21
|
##
|
|
22
|
-
#
|
|
22
|
+
# # Result
|
|
23
23
|
#
|
|
24
|
-
# See Gcloud#search
|
|
24
|
+
# See {Gcloud#search}
|
|
25
25
|
class Result
|
|
26
26
|
##
|
|
27
|
-
# Creates a new Result instance.
|
|
28
|
-
def initialize
|
|
27
|
+
# @private Creates a new Result instance.
|
|
28
|
+
def initialize
|
|
29
29
|
@fields = Fields.new
|
|
30
30
|
@raw = {}
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
##
|
|
34
34
|
# The unique identifier of the document referenced in the search result.
|
|
35
|
+
#
|
|
36
|
+
# @return [String]
|
|
35
37
|
def doc_id
|
|
36
38
|
@raw["docId"]
|
|
37
39
|
end
|
|
38
40
|
|
|
39
41
|
##
|
|
40
42
|
# The token for the next page of results.
|
|
43
|
+
#
|
|
44
|
+
# @return [String]
|
|
41
45
|
def token
|
|
42
46
|
@raw["nextPageToken"]
|
|
43
47
|
end
|
|
@@ -45,18 +49,12 @@ module Gcloud
|
|
|
45
49
|
##
|
|
46
50
|
# Retrieve the field values associated to a field name.
|
|
47
51
|
#
|
|
48
|
-
#
|
|
49
|
-
#
|
|
50
|
-
# +name+::
|
|
51
|
-
# The name of the field. New values will be configured with this name.
|
|
52
|
-
# (+String+)
|
|
53
|
-
#
|
|
54
|
-
# === Returns
|
|
52
|
+
# @param [String] name The name of the field. New values will be
|
|
53
|
+
# configured with this name.
|
|
55
54
|
#
|
|
56
|
-
# FieldValue
|
|
57
|
-
#
|
|
58
|
-
# === Example
|
|
55
|
+
# @return [FieldValue]
|
|
59
56
|
#
|
|
57
|
+
# @example
|
|
60
58
|
# require "gcloud"
|
|
61
59
|
#
|
|
62
60
|
# gcloud = Gcloud.new
|
|
@@ -74,26 +72,21 @@ module Gcloud
|
|
|
74
72
|
@fields[name]
|
|
75
73
|
end
|
|
76
74
|
|
|
77
|
-
#
|
|
78
|
-
# Disable rubocop because we want .fields to be listed with the other
|
|
79
|
-
# methods on the class.
|
|
75
|
+
# Trivial accessor because we want .fields to be listed with methods.
|
|
80
76
|
|
|
81
77
|
##
|
|
82
78
|
# The fields in the search result. Each field has a name (String) and a
|
|
83
|
-
# list of values (FieldValues). (See Fields)
|
|
79
|
+
# list of values ({FieldValues}). (See {Fields})
|
|
84
80
|
def fields
|
|
85
81
|
@fields
|
|
86
82
|
end
|
|
87
83
|
|
|
88
|
-
# rubocop:enable Style/TrivialAccessors
|
|
89
|
-
|
|
90
84
|
##
|
|
91
85
|
# Calls block once for each field, passing the field name and values pair
|
|
92
86
|
# as parameters. If no block is given an enumerator is returned instead.
|
|
93
|
-
# (See Fields#each)
|
|
94
|
-
#
|
|
95
|
-
# === Example
|
|
87
|
+
# (See {Fields#each})
|
|
96
88
|
#
|
|
89
|
+
# @example
|
|
97
90
|
# require "gcloud"
|
|
98
91
|
#
|
|
99
92
|
# gcloud = Gcloud.new
|
|
@@ -116,8 +109,11 @@ module Gcloud
|
|
|
116
109
|
|
|
117
110
|
##
|
|
118
111
|
# Returns a new array populated with all the field names.
|
|
119
|
-
# (See Fields#names)
|
|
112
|
+
# (See {Fields#names})
|
|
113
|
+
#
|
|
114
|
+
# @return [Array<String>]
|
|
120
115
|
#
|
|
116
|
+
# @example
|
|
121
117
|
# require "gcloud"
|
|
122
118
|
#
|
|
123
119
|
# gcloud = Gcloud.new
|
|
@@ -136,8 +132,8 @@ module Gcloud
|
|
|
136
132
|
end
|
|
137
133
|
|
|
138
134
|
##
|
|
139
|
-
# Override to keep working in interactive shells manageable.
|
|
140
|
-
def inspect
|
|
135
|
+
# @private Override to keep working in interactive shells manageable.
|
|
136
|
+
def inspect
|
|
141
137
|
insp_token = ""
|
|
142
138
|
if token
|
|
143
139
|
trunc_token = "#{token[0, 8]}...#{token[-5..-1]}"
|
|
@@ -149,8 +145,8 @@ module Gcloud
|
|
|
149
145
|
end
|
|
150
146
|
|
|
151
147
|
##
|
|
152
|
-
# New Result from a raw data object.
|
|
153
|
-
def self.from_hash hash
|
|
148
|
+
# @private New Result from a raw data object.
|
|
149
|
+
def self.from_hash hash
|
|
154
150
|
result = new
|
|
155
151
|
result.instance_variable_set "@raw", hash
|
|
156
152
|
result.instance_variable_set "@fields", Fields.from_raw(hash["fields"])
|
|
@@ -158,8 +154,8 @@ module Gcloud
|
|
|
158
154
|
end
|
|
159
155
|
|
|
160
156
|
##
|
|
161
|
-
# Returns the Result data as a hash
|
|
162
|
-
def to_hash
|
|
157
|
+
# @private Returns the Result data as a hash
|
|
158
|
+
def to_hash
|
|
163
159
|
hash = @raw.dup
|
|
164
160
|
hash["fields"] = @fields.to_raw
|
|
165
161
|
hash
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#--
|
|
2
1
|
# Copyright 2015 Google Inc. All rights reserved.
|
|
3
2
|
#
|
|
4
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -13,6 +12,7 @@
|
|
|
13
12
|
# See the License for the specific language governing permissions and
|
|
14
13
|
# limitations under the License.
|
|
15
14
|
|
|
15
|
+
|
|
16
16
|
module Gcloud
|
|
17
17
|
module Search
|
|
18
18
|
class Result
|
|
@@ -28,11 +28,11 @@ module Gcloud
|
|
|
28
28
|
# The number of documents that match the query. It is greater than or
|
|
29
29
|
# equal to the number of documents actually returned. This is an
|
|
30
30
|
# approximation and not an exact count unless it is less than or equal
|
|
31
|
-
# to the Index#search
|
|
31
|
+
# to the {Index#search} `matched_count_accuracy` option.
|
|
32
32
|
attr_reader :matched_count
|
|
33
33
|
|
|
34
34
|
##
|
|
35
|
-
# Create a new Result::List with an array of Result instances.
|
|
35
|
+
# Create a new Result::List with an array of {Result} instances.
|
|
36
36
|
def initialize arr = []
|
|
37
37
|
super arr
|
|
38
38
|
end
|
|
@@ -52,7 +52,7 @@ module Gcloud
|
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
##
|
|
55
|
-
# Retrieves all results by repeatedly loading pages until #next?
|
|
55
|
+
# Retrieves all results by repeatedly loading pages until {#next?}
|
|
56
56
|
# returns false. Returns the list instance for method chaining.
|
|
57
57
|
def all
|
|
58
58
|
while next?
|
|
@@ -64,8 +64,8 @@ module Gcloud
|
|
|
64
64
|
end
|
|
65
65
|
|
|
66
66
|
##
|
|
67
|
-
# New Result::List from a response object.
|
|
68
|
-
def self.from_response resp, index, query, search_options
|
|
67
|
+
# @private New Result::List from a response object.
|
|
68
|
+
def self.from_response resp, index, query, search_options
|
|
69
69
|
data = JSON.parse resp.body
|
|
70
70
|
results = new(Array(data["results"]).map do |raw|
|
|
71
71
|
Result.from_hash raw
|
data/lib/gcloud/storage.rb
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#--
|
|
2
1
|
# Copyright 2014 Google Inc. All rights reserved.
|
|
3
2
|
#
|
|
4
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -13,40 +12,34 @@
|
|
|
13
12
|
# See the License for the specific language governing permissions and
|
|
14
13
|
# limitations under the License.
|
|
15
14
|
|
|
15
|
+
|
|
16
16
|
require "gcloud"
|
|
17
17
|
require "gcloud/storage/project"
|
|
18
18
|
|
|
19
|
-
#--
|
|
20
|
-
# Google Cloud Storage
|
|
21
19
|
module Gcloud
|
|
22
20
|
##
|
|
23
21
|
# Creates a new object for connecting to the Storage service.
|
|
24
22
|
# Each call creates a new connection.
|
|
25
23
|
#
|
|
26
|
-
#
|
|
24
|
+
# For more information on connecting to Google Cloud see the [Authentication
|
|
25
|
+
# Guide](https://googlecloudplatform.github.io/gcloud-ruby/#/docs/guides/authentication).
|
|
27
26
|
#
|
|
28
|
-
#
|
|
29
|
-
#
|
|
30
|
-
#
|
|
31
|
-
#
|
|
32
|
-
#
|
|
33
|
-
#
|
|
34
|
-
#
|
|
35
|
-
#
|
|
36
|
-
# the connection can access. See {Using OAuth 2.0 to Access Google
|
|
37
|
-
# APIs}[https://developers.google.com/identity/protocols/OAuth2]. (+String+
|
|
38
|
-
# or +Array+)
|
|
27
|
+
# @param [String] project Project identifier for the Storage service you are
|
|
28
|
+
# connecting to.
|
|
29
|
+
# @param [String, Hash] keyfile Keyfile downloaded from Google Cloud. If file
|
|
30
|
+
# path the file must be readable.
|
|
31
|
+
# @param [String, Array<String>] scope The OAuth 2.0 scopes controlling the
|
|
32
|
+
# set of resources and operations that the connection can access. See [Using
|
|
33
|
+
# OAuth 2.0 to Access Google
|
|
34
|
+
# APIs](https://developers.google.com/identity/protocols/OAuth2).
|
|
39
35
|
#
|
|
40
36
|
# The default scope is:
|
|
41
37
|
#
|
|
42
|
-
# *
|
|
43
|
-
#
|
|
44
|
-
# === Returns
|
|
38
|
+
# * `https://www.googleapis.com/auth/devstorage.full_control`
|
|
45
39
|
#
|
|
46
|
-
# Gcloud::Storage::Project
|
|
47
|
-
#
|
|
48
|
-
# === Example
|
|
40
|
+
# @return [Gcloud::Storage::Project]
|
|
49
41
|
#
|
|
42
|
+
# @example
|
|
50
43
|
# require "gcloud/storage"
|
|
51
44
|
#
|
|
52
45
|
# storage = Gcloud.storage "my-todo-project",
|
|
@@ -66,7 +59,7 @@ module Gcloud
|
|
|
66
59
|
end
|
|
67
60
|
|
|
68
61
|
##
|
|
69
|
-
#
|
|
62
|
+
# # Google Cloud Storage
|
|
70
63
|
#
|
|
71
64
|
# Google Cloud Storage is an Internet service to store data in Google's cloud.
|
|
72
65
|
# It allows world-wide storage and retrieval of any amount of data and at any
|
|
@@ -74,83 +67,95 @@ module Gcloud
|
|
|
74
67
|
# infrastructure to perform data operations in a cost effective manner.
|
|
75
68
|
#
|
|
76
69
|
# Gcloud's goal is to provide a API that is familiar and comfortable to
|
|
77
|
-
# Rubyists. Authentication is handled by Gcloud#storage. You can provide the
|
|
70
|
+
# Rubyists. Authentication is handled by {Gcloud#storage}. You can provide the
|
|
78
71
|
# project and credential information to connect to the Storage service, or if
|
|
79
72
|
# you are running on Google Compute Engine this configuration is taken care
|
|
80
73
|
# of for you.
|
|
81
74
|
#
|
|
82
|
-
#
|
|
75
|
+
# ```ruby
|
|
76
|
+
# require "gcloud"
|
|
83
77
|
#
|
|
84
|
-
#
|
|
85
|
-
#
|
|
86
|
-
#
|
|
78
|
+
# gcloud = Gcloud.new "my-todo-project",
|
|
79
|
+
# "/path/to/keyfile.json"
|
|
80
|
+
# storage = gcloud.storage
|
|
87
81
|
#
|
|
88
|
-
#
|
|
89
|
-
#
|
|
82
|
+
# bucket = storage.bucket "my-bucket"
|
|
83
|
+
# file = bucket.file "path/to/my-file.ext"
|
|
84
|
+
# ```
|
|
90
85
|
#
|
|
91
86
|
# You can learn more about various options for connection on the
|
|
92
|
-
#
|
|
87
|
+
# [Authentication
|
|
88
|
+
# Guide](https://googlecloudplatform.github.io/gcloud-ruby/#/docs/guides/authentication).
|
|
93
89
|
#
|
|
94
90
|
# To learn more about Cloud Storage, read the
|
|
95
|
-
#
|
|
96
|
-
#
|
|
91
|
+
# [Google Cloud Storage Overview
|
|
92
|
+
# ](https://cloud.google.com/storage/docs/overview).
|
|
97
93
|
#
|
|
98
|
-
#
|
|
94
|
+
# ## Retrieving Buckets
|
|
99
95
|
#
|
|
100
96
|
# A Bucket is the container for your data. There is no limit on the number of
|
|
101
97
|
# buckets that you can create in a project. You can use buckets to organize
|
|
102
98
|
# and control access to your data. Each bucket has a unique name, which is how
|
|
103
|
-
# they are retrieved: (See Project#bucket)
|
|
99
|
+
# they are retrieved: (See {Gcloud::Storage::Project#bucket})
|
|
104
100
|
#
|
|
105
|
-
#
|
|
101
|
+
# ```ruby
|
|
102
|
+
# require "gcloud"
|
|
106
103
|
#
|
|
107
|
-
#
|
|
108
|
-
#
|
|
104
|
+
# gcloud = Gcloud.new
|
|
105
|
+
# storage = gcloud.storage
|
|
109
106
|
#
|
|
110
|
-
#
|
|
107
|
+
# bucket = storage.bucket "my-todo-app"
|
|
108
|
+
# ```
|
|
111
109
|
#
|
|
112
|
-
# You can also retrieve all buckets on a project: (See
|
|
110
|
+
# You can also retrieve all buckets on a project: (See
|
|
111
|
+
# {Gcloud::Storage::Project#buckets})
|
|
113
112
|
#
|
|
114
|
-
#
|
|
113
|
+
# ```ruby
|
|
114
|
+
# require "gcloud"
|
|
115
115
|
#
|
|
116
|
-
#
|
|
117
|
-
#
|
|
116
|
+
# gcloud = Gcloud.new
|
|
117
|
+
# storage = gcloud.storage
|
|
118
118
|
#
|
|
119
|
-
#
|
|
119
|
+
# all_buckets = storage.buckets
|
|
120
|
+
# ```
|
|
120
121
|
#
|
|
121
122
|
# If you have a significant number of buckets, you may need to paginate
|
|
122
|
-
# through them: (See Bucket::List#token)
|
|
123
|
-
#
|
|
124
|
-
#
|
|
125
|
-
#
|
|
126
|
-
#
|
|
127
|
-
#
|
|
128
|
-
#
|
|
129
|
-
#
|
|
130
|
-
#
|
|
131
|
-
#
|
|
132
|
-
#
|
|
133
|
-
#
|
|
134
|
-
#
|
|
135
|
-
# # break loop if no more buckets available
|
|
136
|
-
# break if tmp_buckets.token.nil?
|
|
137
|
-
# # get the next group of buckets
|
|
138
|
-
# tmp_buckets = storage.buckets token: tmp_buckets.token
|
|
123
|
+
# through them: (See {Gcloud::Storage::Bucket::List#token})
|
|
124
|
+
#
|
|
125
|
+
# ```ruby
|
|
126
|
+
# require "gcloud"
|
|
127
|
+
#
|
|
128
|
+
# gcloud = Gcloud.new
|
|
129
|
+
# storage = gcloud.storage
|
|
130
|
+
#
|
|
131
|
+
# all_buckets = []
|
|
132
|
+
# tmp_buckets = storage.buckets
|
|
133
|
+
# while tmp_buckets.any? do
|
|
134
|
+
# tmp_buckets.each do |bucket|
|
|
135
|
+
# all_buckets << bucket
|
|
139
136
|
# end
|
|
137
|
+
# # break loop if no more buckets available
|
|
138
|
+
# break if tmp_buckets.token.nil?
|
|
139
|
+
# # get the next group of buckets
|
|
140
|
+
# tmp_buckets = storage.buckets token: tmp_buckets.token
|
|
141
|
+
# end
|
|
142
|
+
# ```
|
|
140
143
|
#
|
|
141
|
-
#
|
|
144
|
+
# ## Creating a Bucket
|
|
142
145
|
#
|
|
143
|
-
# A unique name is all that is needed to create a new bucket:
|
|
144
|
-
#
|
|
146
|
+
# A unique name is all that is needed to create a new bucket: (See
|
|
147
|
+
# {Gcloud::Storage::Project#create_bucket})
|
|
145
148
|
#
|
|
146
|
-
#
|
|
149
|
+
# ```ruby
|
|
150
|
+
# require "gcloud"
|
|
147
151
|
#
|
|
148
|
-
#
|
|
149
|
-
#
|
|
152
|
+
# gcloud = Gcloud.new
|
|
153
|
+
# storage = gcloud.storage
|
|
150
154
|
#
|
|
151
|
-
#
|
|
155
|
+
# bucket = storage.create_bucket "my-todo-app-attachments"
|
|
156
|
+
# ```
|
|
152
157
|
#
|
|
153
|
-
#
|
|
158
|
+
# ## Retrieving Files
|
|
154
159
|
#
|
|
155
160
|
# A File is an individual pieces of data that you store in Google Cloud
|
|
156
161
|
# Storage. Files contain the data stored as well as metadata describing the
|
|
@@ -158,218 +163,247 @@ module Gcloud
|
|
|
158
163
|
# no limit on the number of objects that you can create in a bucket.
|
|
159
164
|
#
|
|
160
165
|
# Files are retrieved by their name, which is the path of the file in the
|
|
161
|
-
# bucket: (See Bucket#file)
|
|
166
|
+
# bucket: (See {Gcloud::Storage::Bucket#file})
|
|
162
167
|
#
|
|
163
|
-
#
|
|
168
|
+
# ```ruby
|
|
169
|
+
# require "gcloud"
|
|
164
170
|
#
|
|
165
|
-
#
|
|
166
|
-
#
|
|
171
|
+
# gcloud = Gcloud.new
|
|
172
|
+
# storage = gcloud.storage
|
|
167
173
|
#
|
|
168
|
-
#
|
|
169
|
-
#
|
|
174
|
+
# bucket = storage.bucket "my-todo-app"
|
|
175
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
|
176
|
+
# ```
|
|
170
177
|
#
|
|
171
178
|
# You can also retrieve all files in a bucket: (See Bucket#files)
|
|
172
179
|
#
|
|
173
|
-
#
|
|
180
|
+
# ```ruby
|
|
181
|
+
# require "gcloud"
|
|
174
182
|
#
|
|
175
|
-
#
|
|
176
|
-
#
|
|
183
|
+
# gcloud = Gcloud.new
|
|
184
|
+
# storage = gcloud.storage
|
|
177
185
|
#
|
|
178
|
-
#
|
|
179
|
-
#
|
|
186
|
+
# bucket = storage.bucket "my-todo-app"
|
|
187
|
+
# all_files = bucket.files
|
|
188
|
+
# ```
|
|
180
189
|
#
|
|
181
190
|
# Or you can retrieve all files in a specified path:
|
|
182
191
|
#
|
|
183
|
-
#
|
|
192
|
+
# ```ruby
|
|
193
|
+
# require "gcloud"
|
|
184
194
|
#
|
|
185
|
-
#
|
|
186
|
-
#
|
|
195
|
+
# gcloud = Gcloud.new
|
|
196
|
+
# storage = gcloud.storage
|
|
187
197
|
#
|
|
188
|
-
#
|
|
189
|
-
#
|
|
198
|
+
# bucket = storage.bucket "my-todo-app"
|
|
199
|
+
# avatar_files = bucket.files prefix: "avatars/"
|
|
200
|
+
# ```
|
|
190
201
|
#
|
|
191
202
|
# If you have a significant number of files, you may need to paginate through
|
|
192
|
-
# them: (See File::List#token)
|
|
203
|
+
# them: (See {Gcloud::Storage::File::List#token})
|
|
193
204
|
#
|
|
194
|
-
#
|
|
205
|
+
# ```ruby
|
|
206
|
+
# require "gcloud"
|
|
195
207
|
#
|
|
196
|
-
#
|
|
197
|
-
#
|
|
208
|
+
# gcloud = Gcloud.new
|
|
209
|
+
# storage = gcloud.storage
|
|
198
210
|
#
|
|
199
|
-
#
|
|
211
|
+
# bucket = storage.bucket "my-todo-app"
|
|
200
212
|
#
|
|
201
|
-
#
|
|
202
|
-
#
|
|
203
|
-
#
|
|
204
|
-
#
|
|
205
|
-
#
|
|
206
|
-
# end
|
|
207
|
-
# # break loop if no more files available
|
|
208
|
-
# break if tmp_files.token.nil?
|
|
209
|
-
# # get the next group of files
|
|
210
|
-
# tmp_files = bucket.files token: tmp_files.token
|
|
213
|
+
# all_files = []
|
|
214
|
+
# tmp_files = bucket.files
|
|
215
|
+
# while tmp_files.any? do
|
|
216
|
+
# tmp_files.each do |file|
|
|
217
|
+
# all_files << file
|
|
211
218
|
# end
|
|
219
|
+
# # break loop if no more files available
|
|
220
|
+
# break if tmp_files.token.nil?
|
|
221
|
+
# # get the next group of files
|
|
222
|
+
# tmp_files = bucket.files token: tmp_files.token
|
|
223
|
+
# end
|
|
224
|
+
# ```
|
|
212
225
|
#
|
|
213
|
-
#
|
|
226
|
+
# ## Creating a File
|
|
214
227
|
#
|
|
215
228
|
# A new File can be uploaded by specifying the location of a file on the local
|
|
216
229
|
# file system, and the name/path that the file should be stored in the bucket.
|
|
217
|
-
# (See Bucket#create_file)
|
|
230
|
+
# (See {Gcloud::Storage::Bucket#create_file})
|
|
218
231
|
#
|
|
219
|
-
#
|
|
232
|
+
# ```ruby
|
|
233
|
+
# require "gcloud"
|
|
220
234
|
#
|
|
221
|
-
#
|
|
222
|
-
#
|
|
235
|
+
# gcloud = Gcloud.new
|
|
236
|
+
# storage = gcloud.storage
|
|
223
237
|
#
|
|
224
|
-
#
|
|
225
|
-
#
|
|
226
|
-
#
|
|
238
|
+
# bucket = storage.bucket "my-todo-app"
|
|
239
|
+
# bucket.create_file "/var/todo-app/avatars/heidi/400x400.png",
|
|
240
|
+
# "avatars/heidi/400x400.png"
|
|
241
|
+
# ```
|
|
227
242
|
#
|
|
228
|
-
#
|
|
243
|
+
# ### A note about large uploads
|
|
229
244
|
#
|
|
230
245
|
# You may encounter a Broken pipe (Errno::EPIPE) error when attempting to
|
|
231
246
|
# upload large files. To avoid this problem, add the
|
|
232
|
-
#
|
|
247
|
+
# [httpclient](https://rubygems.org/gems/httpclient) gem to your project, and
|
|
233
248
|
# the line (or lines) of configuration shown below. These lines must execute
|
|
234
249
|
# after you require gcloud but before you make your first gcloud connection.
|
|
235
|
-
# The first statement configures
|
|
250
|
+
# The first statement configures [Faraday](https://rubygems.org/gems/faraday)
|
|
236
251
|
# to use httpclient. The second statement, which should only be added if you
|
|
237
|
-
# are using a version of Faraday at or above 0.9.2, is a workaround for
|
|
238
|
-
# gzip issue
|
|
252
|
+
# are using a version of Faraday at or above 0.9.2, is a workaround for [this
|
|
253
|
+
# gzip issue](https://github.com/GoogleCloudPlatform/gcloud-ruby/issues/367).
|
|
239
254
|
#
|
|
240
|
-
#
|
|
255
|
+
# ```ruby
|
|
256
|
+
# require "gcloud"
|
|
241
257
|
#
|
|
242
|
-
#
|
|
243
|
-
#
|
|
258
|
+
# # Use httpclient to avoid broken pipe errors with large uploads
|
|
259
|
+
# Faraday.default_adapter = :httpclient
|
|
244
260
|
#
|
|
245
|
-
#
|
|
246
|
-
#
|
|
247
|
-
#
|
|
248
|
-
#
|
|
261
|
+
# # Only add the following statement if using Faraday >= 0.9.2
|
|
262
|
+
# # Override gzip middleware with no-op for httpclient
|
|
263
|
+
# Faraday::Response.register_middleware :gzip =>
|
|
264
|
+
# Faraday::Response::Middleware
|
|
249
265
|
#
|
|
250
|
-
#
|
|
251
|
-
#
|
|
266
|
+
# gcloud = Gcloud.new
|
|
267
|
+
# storage = gcloud.storage
|
|
268
|
+
# ```
|
|
252
269
|
#
|
|
253
|
-
#
|
|
270
|
+
# ## Downloading a File
|
|
254
271
|
#
|
|
255
|
-
# Files can be downloaded to the local file system. (See
|
|
272
|
+
# Files can be downloaded to the local file system. (See
|
|
273
|
+
# {Gcloud::Storage::File#download})
|
|
256
274
|
#
|
|
257
|
-
#
|
|
275
|
+
# ```ruby
|
|
276
|
+
# require "gcloud"
|
|
258
277
|
#
|
|
259
|
-
#
|
|
260
|
-
#
|
|
278
|
+
# gcloud = Gcloud.new
|
|
279
|
+
# storage = gcloud.storage
|
|
261
280
|
#
|
|
262
|
-
#
|
|
263
|
-
#
|
|
264
|
-
#
|
|
281
|
+
# bucket = storage.bucket "my-todo-app"
|
|
282
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
|
283
|
+
# file.download "/var/todo-app/avatars/heidi/400x400.png"
|
|
284
|
+
# ```
|
|
265
285
|
#
|
|
266
|
-
#
|
|
286
|
+
# ## Using Signed URLs
|
|
267
287
|
#
|
|
268
288
|
# Access without authentication can be granted to a File for a specified
|
|
269
|
-
# period of time. This URL uses a cryptographic signature
|
|
270
|
-
#
|
|
289
|
+
# period of time. This URL uses a cryptographic signature of your credentials
|
|
290
|
+
# to access the file. (See {Gcloud::Storage::File#signed_url})
|
|
271
291
|
#
|
|
272
|
-
#
|
|
292
|
+
# ```ruby
|
|
293
|
+
# require "gcloud"
|
|
273
294
|
#
|
|
274
|
-
#
|
|
275
|
-
#
|
|
295
|
+
# gcloud = Gcloud.new
|
|
296
|
+
# storage = gcloud.storage
|
|
276
297
|
#
|
|
277
|
-
#
|
|
278
|
-
#
|
|
279
|
-
#
|
|
280
|
-
#
|
|
298
|
+
# bucket = storage.bucket "my-todo-app"
|
|
299
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
|
300
|
+
# shared_url = file.signed_url method: "GET",
|
|
301
|
+
# expires: 300 # 5 minutes from now
|
|
302
|
+
# ```
|
|
281
303
|
#
|
|
282
|
-
#
|
|
304
|
+
# ## Controlling Access to a Bucket
|
|
283
305
|
#
|
|
284
|
-
# Access to a bucket is controlled with Bucket#acl. A
|
|
285
|
-
# writers, and readers. Permissions can be granted to an
|
|
286
|
-
# email address, a group's email address, as well as many
|
|
287
|
-
# See the
|
|
288
|
-
#
|
|
289
|
-
# for more.
|
|
306
|
+
# Access to a bucket is controlled with {Gcloud::Storage::Bucket#acl}. A
|
|
307
|
+
# bucket has owners, writers, and readers. Permissions can be granted to an
|
|
308
|
+
# individual user's email address, a group's email address, as well as many
|
|
309
|
+
# predefined lists. See the [Access Control
|
|
310
|
+
# guide](https://cloud.google.com/storage/docs/access-control) for more.
|
|
290
311
|
#
|
|
291
|
-
# Access to a bucket can be granted to a user by appending
|
|
312
|
+
# Access to a bucket can be granted to a user by appending `"user-"` to the
|
|
292
313
|
# email address:
|
|
293
314
|
#
|
|
294
|
-
#
|
|
315
|
+
# ```ruby
|
|
316
|
+
# require "gcloud"
|
|
295
317
|
#
|
|
296
|
-
#
|
|
297
|
-
#
|
|
318
|
+
# gcloud = Gcloud.new
|
|
319
|
+
# storage = gcloud.storage
|
|
298
320
|
#
|
|
299
|
-
#
|
|
321
|
+
# bucket = storage.bucket "my-todo-app"
|
|
300
322
|
#
|
|
301
|
-
#
|
|
302
|
-
#
|
|
323
|
+
# email = "heidi@example.net"
|
|
324
|
+
# bucket.acl.add_reader "user-#{email}"
|
|
325
|
+
# ```
|
|
303
326
|
#
|
|
304
|
-
# Access to a bucket can be granted to a group by appending
|
|
327
|
+
# Access to a bucket can be granted to a group by appending `"group-"` to the
|
|
305
328
|
# email address:
|
|
306
329
|
#
|
|
307
|
-
#
|
|
330
|
+
# ```ruby
|
|
331
|
+
# require "gcloud"
|
|
308
332
|
#
|
|
309
|
-
#
|
|
310
|
-
#
|
|
333
|
+
# gcloud = Gcloud.new
|
|
334
|
+
# storage = gcloud.storage
|
|
311
335
|
#
|
|
312
|
-
#
|
|
336
|
+
# bucket = storage.bucket "my-todo-app"
|
|
313
337
|
#
|
|
314
|
-
#
|
|
315
|
-
#
|
|
338
|
+
# email = "authors@example.net"
|
|
339
|
+
# bucket.acl.add_reader "group-#{email}"
|
|
340
|
+
# ```
|
|
316
341
|
#
|
|
317
342
|
# Access to a bucket can also be granted to a predefined list of permissions:
|
|
318
343
|
#
|
|
319
|
-
#
|
|
344
|
+
# ```ruby
|
|
345
|
+
# require "gcloud"
|
|
320
346
|
#
|
|
321
|
-
#
|
|
322
|
-
#
|
|
347
|
+
# gcloud = Gcloud.new
|
|
348
|
+
# storage = gcloud.storage
|
|
323
349
|
#
|
|
324
|
-
#
|
|
350
|
+
# bucket = storage.bucket "my-todo-app"
|
|
325
351
|
#
|
|
326
|
-
#
|
|
352
|
+
# bucket.acl.public!
|
|
353
|
+
# ```
|
|
327
354
|
#
|
|
328
|
-
#
|
|
355
|
+
# ## Controlling Access to a File
|
|
329
356
|
#
|
|
330
357
|
# Access to a file is controlled in two ways, either by the setting the
|
|
331
|
-
# default permissions to all files in a bucket with
|
|
332
|
-
# setting permissions to an
|
|
358
|
+
# default permissions to all files in a bucket with
|
|
359
|
+
# {Gcloud::Storage::Bucket#default_acl}, or by setting permissions to an
|
|
360
|
+
# individual file with {Gcloud::Storage::File#acl}.
|
|
333
361
|
#
|
|
334
|
-
# Access to a file can be granted to a user by appending
|
|
362
|
+
# Access to a file can be granted to a user by appending `"user-"` to the
|
|
335
363
|
# email address:
|
|
336
364
|
#
|
|
337
|
-
#
|
|
365
|
+
# ```ruby
|
|
366
|
+
# require "gcloud"
|
|
338
367
|
#
|
|
339
|
-
#
|
|
340
|
-
#
|
|
368
|
+
# gcloud = Gcloud.new
|
|
369
|
+
# storage = gcloud.storage
|
|
341
370
|
#
|
|
342
|
-
#
|
|
343
|
-
#
|
|
371
|
+
# bucket = storage.bucket "my-todo-app"
|
|
372
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
|
344
373
|
#
|
|
345
|
-
#
|
|
346
|
-
#
|
|
374
|
+
# email = "heidi@example.net"
|
|
375
|
+
# file.acl.add_reader "user-#{email}"
|
|
376
|
+
# ```
|
|
347
377
|
#
|
|
348
|
-
# Access to a file can be granted to a group by appending
|
|
378
|
+
# Access to a file can be granted to a group by appending `"group-"` to the
|
|
349
379
|
# email address:
|
|
350
380
|
#
|
|
351
|
-
#
|
|
381
|
+
# ```ruby
|
|
382
|
+
# require "gcloud"
|
|
352
383
|
#
|
|
353
|
-
#
|
|
354
|
-
#
|
|
384
|
+
# gcloud = Gcloud.new
|
|
385
|
+
# storage = gcloud.storage
|
|
355
386
|
#
|
|
356
|
-
#
|
|
357
|
-
#
|
|
387
|
+
# bucket = storage.bucket "my-todo-app"
|
|
388
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
|
358
389
|
#
|
|
359
|
-
#
|
|
360
|
-
#
|
|
390
|
+
# email = "authors@example.net"
|
|
391
|
+
# file.acl.add_reader "group-#{email}"
|
|
392
|
+
# ```
|
|
361
393
|
#
|
|
362
394
|
# Access to a file can also be granted to a predefined list of permissions:
|
|
363
395
|
#
|
|
364
|
-
#
|
|
396
|
+
# ```ruby
|
|
397
|
+
# require "gcloud"
|
|
365
398
|
#
|
|
366
|
-
#
|
|
367
|
-
#
|
|
399
|
+
# gcloud = Gcloud.new
|
|
400
|
+
# storage = gcloud.storage
|
|
368
401
|
#
|
|
369
|
-
#
|
|
370
|
-
#
|
|
402
|
+
# bucket = storage.bucket "my-todo-app"
|
|
403
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
|
371
404
|
#
|
|
372
|
-
#
|
|
405
|
+
# file.acl.public!
|
|
406
|
+
# ```
|
|
373
407
|
#
|
|
374
408
|
module Storage
|
|
375
409
|
end
|