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.
Files changed (175) hide show
  1. checksums.yaml +8 -8
  2. data/AUTHENTICATION.md +13 -9
  3. data/CHANGELOG.md +8 -3
  4. data/OVERVIEW.md +46 -8
  5. data/lib/gcloud.rb +123 -117
  6. data/lib/gcloud/backoff.rb +43 -15
  7. data/lib/gcloud/bigquery.rb +211 -195
  8. data/lib/gcloud/bigquery/connection.rb +9 -9
  9. data/lib/gcloud/bigquery/copy_job.rb +15 -16
  10. data/lib/gcloud/bigquery/credentials.rb +3 -3
  11. data/lib/gcloud/bigquery/data.rb +12 -11
  12. data/lib/gcloud/bigquery/dataset.rb +162 -216
  13. data/lib/gcloud/bigquery/dataset/access.rb +59 -43
  14. data/lib/gcloud/bigquery/dataset/list.rb +3 -3
  15. data/lib/gcloud/bigquery/errors.rb +9 -5
  16. data/lib/gcloud/bigquery/extract_job.rb +18 -18
  17. data/lib/gcloud/bigquery/insert_response.rb +7 -4
  18. data/lib/gcloud/bigquery/job.rb +48 -44
  19. data/lib/gcloud/bigquery/job/list.rb +3 -3
  20. data/lib/gcloud/bigquery/load_job.rb +24 -25
  21. data/lib/gcloud/bigquery/project.rb +145 -204
  22. data/lib/gcloud/bigquery/query_data.rb +10 -9
  23. data/lib/gcloud/bigquery/query_job.rb +23 -32
  24. data/lib/gcloud/bigquery/table.rb +238 -280
  25. data/lib/gcloud/bigquery/table/list.rb +3 -3
  26. data/lib/gcloud/bigquery/table/schema.rb +79 -87
  27. data/lib/gcloud/bigquery/view.rb +69 -82
  28. data/lib/gcloud/credentials.rb +3 -9
  29. data/lib/gcloud/datastore.rb +194 -170
  30. data/lib/gcloud/datastore/connection.rb +12 -8
  31. data/lib/gcloud/datastore/credentials.rb +6 -4
  32. data/lib/gcloud/datastore/dataset.rb +74 -141
  33. data/lib/gcloud/datastore/dataset/lookup_results.rb +6 -4
  34. data/lib/gcloud/datastore/dataset/query_results.rb +6 -4
  35. data/lib/gcloud/datastore/entity.rb +81 -76
  36. data/lib/gcloud/datastore/errors.rb +10 -8
  37. data/lib/gcloud/datastore/key.rb +41 -77
  38. data/lib/gcloud/datastore/properties.rb +3 -3
  39. data/lib/gcloud/datastore/proto.rb +7 -4
  40. data/lib/gcloud/datastore/query.rb +26 -3
  41. data/lib/gcloud/datastore/transaction.rb +12 -8
  42. data/lib/gcloud/dns.rb +180 -152
  43. data/lib/gcloud/dns/change.rb +16 -16
  44. data/lib/gcloud/dns/change/list.rb +3 -3
  45. data/lib/gcloud/dns/connection.rb +9 -10
  46. data/lib/gcloud/dns/credentials.rb +3 -3
  47. data/lib/gcloud/dns/errors.rb +9 -5
  48. data/lib/gcloud/dns/importer.rb +17 -23
  49. data/lib/gcloud/dns/project.rb +42 -64
  50. data/lib/gcloud/dns/record.rb +58 -46
  51. data/lib/gcloud/dns/record/list.rb +6 -7
  52. data/lib/gcloud/dns/zone.rb +198 -289
  53. data/lib/gcloud/dns/zone/list.rb +3 -3
  54. data/lib/gcloud/dns/zone/transaction.rb +56 -72
  55. data/lib/gcloud/errors.rb +174 -3
  56. data/lib/gcloud/gce.rb +3 -4
  57. data/lib/gcloud/grpc_utils.rb +76 -0
  58. data/lib/gcloud/logging.rb +308 -0
  59. data/lib/gcloud/logging/credentials.rb +29 -0
  60. data/lib/gcloud/logging/entry.rb +303 -0
  61. data/lib/gcloud/logging/entry/http_request.rb +141 -0
  62. data/lib/gcloud/logging/entry/list.rb +111 -0
  63. data/lib/gcloud/logging/entry/operation.rb +90 -0
  64. data/lib/gcloud/logging/logger.rb +307 -0
  65. data/lib/gcloud/logging/metric.rb +175 -0
  66. data/lib/gcloud/logging/metric/list.rb +98 -0
  67. data/lib/gcloud/logging/project.rb +650 -0
  68. data/lib/gcloud/logging/resource.rb +95 -0
  69. data/lib/gcloud/logging/resource_descriptor.rb +140 -0
  70. data/lib/gcloud/logging/resource_descriptor/list.rb +78 -0
  71. data/lib/gcloud/logging/service.rb +258 -0
  72. data/lib/gcloud/logging/sink.rb +233 -0
  73. data/lib/gcloud/logging/sink/list.rb +97 -0
  74. data/lib/gcloud/pubsub.rb +241 -199
  75. data/lib/gcloud/pubsub/credentials.rb +3 -3
  76. data/lib/gcloud/pubsub/message.rb +26 -20
  77. data/lib/gcloud/pubsub/project.rb +166 -233
  78. data/lib/gcloud/pubsub/received_message.rb +28 -38
  79. data/lib/gcloud/pubsub/service.rb +323 -0
  80. data/lib/gcloud/pubsub/subscription.rb +172 -242
  81. data/lib/gcloud/pubsub/subscription/list.rb +11 -9
  82. data/lib/gcloud/pubsub/topic.rb +152 -271
  83. data/lib/gcloud/pubsub/topic/batch.rb +66 -0
  84. data/lib/gcloud/pubsub/topic/list.rb +9 -7
  85. data/lib/gcloud/resource_manager.rb +158 -138
  86. data/lib/gcloud/resource_manager/connection.rb +6 -5
  87. data/lib/gcloud/resource_manager/credentials.rb +3 -3
  88. data/lib/gcloud/resource_manager/errors.rb +9 -5
  89. data/lib/gcloud/resource_manager/manager.rb +54 -86
  90. data/lib/gcloud/resource_manager/project.rb +69 -88
  91. data/lib/gcloud/resource_manager/project/list.rb +4 -5
  92. data/lib/gcloud/resource_manager/project/updater.rb +12 -14
  93. data/lib/gcloud/search.rb +158 -135
  94. data/lib/gcloud/search/api_client.rb +7 -7
  95. data/lib/gcloud/search/connection.rb +8 -8
  96. data/lib/gcloud/search/credentials.rb +3 -3
  97. data/lib/gcloud/search/document.rb +64 -87
  98. data/lib/gcloud/search/document/list.rb +5 -5
  99. data/lib/gcloud/search/errors.rb +9 -5
  100. data/lib/gcloud/search/field_value.rb +32 -38
  101. data/lib/gcloud/search/field_values.rb +50 -80
  102. data/lib/gcloud/search/fields.rb +44 -65
  103. data/lib/gcloud/search/index.rb +163 -204
  104. data/lib/gcloud/search/index/list.rb +5 -5
  105. data/lib/gcloud/search/project.rb +31 -47
  106. data/lib/gcloud/search/result.rb +27 -31
  107. data/lib/gcloud/search/result/list.rb +6 -6
  108. data/lib/gcloud/storage.rb +224 -190
  109. data/lib/gcloud/storage/bucket.rb +202 -227
  110. data/lib/gcloud/storage/bucket/acl.rb +83 -170
  111. data/lib/gcloud/storage/bucket/cors.rb +31 -34
  112. data/lib/gcloud/storage/bucket/list.rb +3 -3
  113. data/lib/gcloud/storage/connection.rb +11 -7
  114. data/lib/gcloud/storage/credentials.rb +3 -3
  115. data/lib/gcloud/storage/errors.rb +11 -8
  116. data/lib/gcloud/storage/file.rb +129 -171
  117. data/lib/gcloud/storage/file/acl.rb +51 -99
  118. data/lib/gcloud/storage/file/list.rb +3 -3
  119. data/lib/gcloud/storage/file/verifier.rb +3 -2
  120. data/lib/gcloud/storage/project.rb +111 -132
  121. data/lib/gcloud/upload.rb +4 -7
  122. data/lib/gcloud/version.rb +2 -4
  123. data/lib/google/api/annotations.rb +14 -0
  124. data/lib/google/api/http.rb +30 -0
  125. data/lib/google/api/label.rb +24 -0
  126. data/lib/google/api/monitored_resource.rb +25 -0
  127. data/lib/google/datastore/v1beta3/datastore.rb +115 -0
  128. data/lib/google/datastore/v1beta3/datastore_services.rb +33 -0
  129. data/lib/google/datastore/v1beta3/entity.rb +63 -0
  130. data/lib/google/datastore/v1beta3/query.rb +128 -0
  131. data/lib/google/devtools/cloudtrace/v1/trace.rb +78 -0
  132. data/lib/google/devtools/cloudtrace/v1/trace_services.rb +32 -0
  133. data/lib/google/example/library/v1/library.rb +91 -0
  134. data/lib/google/example/library/v1/library_services.rb +40 -0
  135. data/lib/google/iam/v1/iam_policy.rb +33 -0
  136. data/lib/google/iam/v1/iam_policy_services.rb +30 -0
  137. data/lib/google/iam/v1/policy.rb +25 -0
  138. data/lib/google/logging/type/http_request.rb +28 -0
  139. data/lib/google/logging/type/log_severity.rb +27 -0
  140. data/lib/google/logging/v2/log_entry.rb +44 -0
  141. data/lib/google/logging/v2/logging.rb +56 -0
  142. data/lib/google/logging/v2/logging_config.rb +59 -0
  143. data/lib/google/logging/v2/logging_config_services.rb +32 -0
  144. data/lib/google/logging/v2/logging_metrics.rb +51 -0
  145. data/lib/google/logging/v2/logging_metrics_services.rb +32 -0
  146. data/lib/google/logging/v2/logging_services.rb +31 -0
  147. data/lib/google/longrunning/operations.rb +50 -0
  148. data/lib/google/longrunning/operations_services.rb +29 -0
  149. data/lib/google/protobuf/any.rb +17 -0
  150. data/lib/google/protobuf/api.rb +31 -0
  151. data/lib/google/protobuf/descriptor.rb +0 -0
  152. data/lib/google/protobuf/duration.rb +17 -0
  153. data/lib/google/protobuf/empty.rb +15 -0
  154. data/lib/google/protobuf/field_mask.rb +16 -0
  155. data/lib/google/protobuf/source_context.rb +16 -0
  156. data/lib/google/protobuf/struct.rb +35 -0
  157. data/lib/google/protobuf/timestamp.rb +17 -0
  158. data/lib/google/protobuf/type.rb +79 -0
  159. data/lib/google/protobuf/wrappers.rb +48 -0
  160. data/lib/google/pubsub/v1/pubsub.rb +129 -0
  161. data/lib/google/pubsub/v1/pubsub_services.rb +56 -0
  162. data/lib/google/pubsub/v1beta2/pubsub.rb +126 -0
  163. data/lib/google/pubsub/v1beta2/pubsub_services.rb +56 -0
  164. data/lib/google/rpc/code.rb +32 -0
  165. data/lib/google/rpc/error_details.rb +61 -0
  166. data/lib/google/rpc/status.rb +19 -0
  167. data/lib/google/type/color.rb +20 -0
  168. data/lib/google/type/date.rb +18 -0
  169. data/lib/google/type/dayofweek.rb +23 -0
  170. data/lib/google/type/latlng.rb +17 -0
  171. data/lib/google/type/money.rb +18 -0
  172. data/lib/google/type/timeofday.rb +19 -0
  173. metadata +101 -4
  174. data/lib/gcloud/pubsub/connection.rb +0 -295
  175. 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,21 +12,23 @@
13
12
  # See the License for the specific language governing permissions and
14
13
  # limitations under the License.
15
14
 
15
+
16
16
  require "delegate"
17
17
 
18
18
  module Gcloud
19
19
  module Storage
20
20
  class Bucket
21
21
  ##
22
- # = Bucket Cors
22
+ # # Bucket Cors
23
23
  #
24
24
  # A special-case Array for managing the website CORS rules for a bucket.
25
- # Accessed via a block argument to Project#create_bucket, Bucket#cors, or
26
- # Bucket#update.
25
+ # Accessed via a block argument to {Project#create_bucket}, {Bucket#cors},
26
+ # or {Bucket#update}.
27
27
  #
28
- # For more information about CORS, see {Cross-Origin Resource
29
- # Sharing (CORS)}[https://cloud.google.com/storage/docs/cross-origin].
28
+ # @see https://cloud.google.com/storage/docs/cross-origin Cross-Origin
29
+ # Resource Sharing (CORS)
30
30
  #
31
+ # @example
31
32
  # require "gcloud"
32
33
  #
33
34
  # gcloud = Gcloud.new
@@ -47,47 +48,43 @@ module Gcloud
47
48
  #
48
49
  class Cors < DelegateClass(::Array)
49
50
  ##
51
+ # @private
50
52
  # Initialize a new CORS rules builder with existing CORS rules, if any.
51
- def initialize cors = [] #:nodoc:
53
+ def initialize cors = []
52
54
  super cors.dup
53
55
  @original = cors.dup
54
56
  end
55
57
 
56
- def changed? #:nodoc:
58
+ # @private
59
+ def changed?
57
60
  @original != self
58
61
  end
59
62
 
60
63
  ##
61
64
  # Add a CORS rule to the CORS rules for a bucket. Accepts options for
62
65
  # setting preflight response headers. Preflight requests and responses
63
- # are required if the request method and headers are not both {simple
64
- # methods}[http://www.w3.org/TR/cors/#simple-method] and {simple
65
- # headers}[http://www.w3.org/TR/cors/#simple-header].
66
- #
67
- # === Parameters
68
- #
69
- # +origin+::
70
- # The {origin}[http://tools.ietf.org/html/rfc6454] or origins
71
- # permitted for cross origin resource sharing with the bucket. Note:
72
- # "*" is permitted in the list of origins, and means "any Origin".
73
- # (+String+ or +Array+)
74
- # +methods+::
75
- # The list of HTTP methods permitted in cross origin resource sharing
76
- # with the bucket. (GET, OPTIONS, POST, etc) Note: "*" is permitted in
77
- # the list of methods, and means "any method". (+String+ or +Array+)
78
- # +headers+::
79
- # The list of header field names to send in the
80
- # Access-Control-Allow-Headers header in the preflight response.
81
- # Indicates the custom request headers that may be used in the actual
82
- # request. (+String+ or +Array+)
83
- # +max_age+::
84
- # The value to send in the Access-Control-Max-Age header in the
85
- # preflight response. Indicates how many seconds the results of a
86
- # preflight request can be cached in a preflight result cache. The
87
- # default value is +1800+ (30 minutes.) (+Integer+)
66
+ # are required if the request method and headers are not both [simple
67
+ # methods](http://www.w3.org/TR/cors/#simple-method) and [simple
68
+ # headers](http://www.w3.org/TR/cors/#simple-header).
88
69
  #
89
- # === Example
70
+ # @param [String, Array<String>] origin The
71
+ # [origin](http://tools.ietf.org/html/rfc6454) or origins permitted
72
+ # for cross origin resource sharing with the bucket. Note: "*" is
73
+ # permitted in the list of origins, and means "any Origin".
74
+ # @param [String, Array<String>] methods The list of HTTP methods
75
+ # permitted in cross origin resource sharing with the bucket. (GET,
76
+ # OPTIONS, POST, etc) Note: "*" is permitted in the list of methods,
77
+ # and means "any method".
78
+ # @param [String, Array<String>] headers The list of header field names
79
+ # to send in the Access-Control-Allow-Headers header in the preflight
80
+ # response. Indicates the custom request headers that may be used in
81
+ # the actual request.
82
+ # @param [Integer] max_age The value to send in the
83
+ # Access-Control-Max-Age header in the preflight response. Indicates
84
+ # how many seconds the results of a preflight request can be cached in
85
+ # a preflight result cache. The default value is `1800` (30 minutes.)
90
86
  #
87
+ # @example
91
88
  # require "gcloud"
92
89
  #
93
90
  # gcloud = Gcloud.new
@@ -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 "delegate"
17
17
 
18
18
  module Gcloud
@@ -35,8 +35,8 @@ module Gcloud
35
35
  end
36
36
 
37
37
  ##
38
- # New Bucket::List from a response object.
39
- def self.from_response resp, conn #:nodoc:
38
+ # @private New Bucket::List from a response object.
39
+ def self.from_response resp, conn
40
40
  buckets = Array(resp.data["items"]).map do |gapi_object|
41
41
  Bucket.from_gapi gapi_object, conn
42
42
  end
@@ -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,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 "pathname"
17
17
  require "gcloud/version"
18
18
  require "gcloud/backoff"
@@ -22,13 +22,15 @@ require "mime/types"
22
22
  module Gcloud
23
23
  module Storage
24
24
  ##
25
- # Represents the connection to Storage,
25
+ # @private Represents the connection to Storage,
26
26
  # as well as expose the API calls.
27
- class Connection #:nodoc:
27
+ class Connection
28
28
  API_VERSION = "v1"
29
29
 
30
30
  attr_accessor :project
31
- attr_accessor :credentials #:nodoc:
31
+
32
+ # @private
33
+ attr_accessor :credentials
32
34
 
33
35
  ##
34
36
  # Creates a new Connection instance.
@@ -303,7 +305,8 @@ module Gcloud
303
305
  MIME::Types.of(path).first.to_s
304
306
  end
305
307
 
306
- def inspect #:nodoc:
308
+ # @private
309
+ def inspect
307
310
  "#{self.class}(#{@project})"
308
311
  end
309
312
 
@@ -354,7 +357,8 @@ module Gcloud
354
357
  }.delete_if { |_, v| v.nil? } if website_main || website_404
355
358
  end
356
359
 
357
- def storage_class str #:nodoc:
360
+ # @private
361
+ def storage_class str
358
362
  { "durable_reduced_availability" => "DURABLE_REDUCED_AVAILABILITY",
359
363
  "dra" => "DURABLE_REDUCED_AVAILABILITY",
360
364
  "durable" => "DURABLE_REDUCED_AVAILABILITY",
@@ -405,7 +409,7 @@ module Gcloud
405
409
  end
406
410
 
407
411
  def incremental_backoff options = {}
408
- Gcloud::Backoff.new(options).execute do
412
+ Gcloud::Backoff.new(options).execute_gapi do
409
413
  yield
410
414
  end
411
415
  end
@@ -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,13 +12,14 @@
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/credentials"
17
17
 
18
18
  module Gcloud
19
19
  module Storage
20
20
  ##
21
- # Represents the OAuth 2.0 signing logic for Storage.
22
- class Credentials < Gcloud::Credentials #:nodoc:
21
+ # @private Represents the OAuth 2.0 signing logic for Storage.
22
+ class Credentials < Gcloud::Credentials
23
23
  SCOPE = ["https://www.googleapis.com/auth/devstorage.full_control"]
24
24
  PATH_ENV_VARS = %w(STORAGE_KEYFILE GCLOUD_KEYFILE GOOGLE_CLOUD_KEYFILE)
25
25
  JSON_ENV_VARS = %w(STORAGE_KEYFILE_JSON GCLOUD_KEYFILE_JSON
@@ -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,19 +12,20 @@
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/errors"
17
17
 
18
18
  module Gcloud
19
19
  module Storage
20
20
  ##
21
- # = Storage Error
21
+ # # Storage Error
22
22
  #
23
23
  # Base Storage exception class.
24
24
  class Error < Gcloud::Error
25
25
  end
26
26
 
27
27
  ##
28
- # = ApiError
28
+ # # ApiError
29
29
  #
30
30
  # Raised when an API call is not successful.
31
31
  class ApiError < Error
@@ -43,7 +43,8 @@ module Gcloud
43
43
  @errors = errors
44
44
  end
45
45
 
46
- def self.from_response resp #:nodoc:
46
+ # @private
47
+ def self.from_response resp
47
48
  new resp.data["error"]["message"],
48
49
  resp.data["error"]["code"],
49
50
  resp.data["error"]["errors"]
@@ -51,7 +52,7 @@ module Gcloud
51
52
  end
52
53
 
53
54
  ##
54
- # = FileVerificationError
55
+ # # FileVerificationError
55
56
  #
56
57
  # Raised when a File download fails the verification.
57
58
  class FileVerificationError < Error
@@ -68,7 +69,8 @@ module Gcloud
68
69
  # The value of the digest on the downloaded file.
69
70
  attr_accessor :local_digest
70
71
 
71
- def self.for_md5 gcloud_digest, local_digest #:nodoc:
72
+ # @private
73
+ def self.for_md5 gcloud_digest, local_digest
72
74
  new("The downloaded file failed MD5 verification.").tap do |e|
73
75
  e.type = :md5
74
76
  e.gcloud_digest = gcloud_digest
@@ -76,7 +78,8 @@ module Gcloud
76
78
  end
77
79
  end
78
80
 
79
- def self.for_crc32c gcloud_digest, local_digest #:nodoc:
81
+ # @private
82
+ def self.for_crc32c gcloud_digest, local_digest
80
83
  new("The downloaded file failed CRC32c verification.").tap do |e|
81
84
  e.type = :crc32c
82
85
  e.gcloud_digest = gcloud_digest
@@ -86,7 +89,7 @@ module Gcloud
86
89
  end
87
90
 
88
91
  ##
89
- # = SignedUrlUnavailable Error
92
+ # # SignedUrlUnavailable Error
90
93
  #
91
94
  # This is raised when File#signed_url is unable to generate a URL due to
92
95
  # missing credentials needed to create the URL.
@@ -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,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/storage/file/acl"
17
17
  require "gcloud/storage/file/list"
18
18
  require "gcloud/storage/file/verifier"
@@ -20,19 +20,22 @@ require "gcloud/storage/file/verifier"
20
20
  module Gcloud
21
21
  module Storage
22
22
  ##
23
- # = File
23
+ # # File
24
24
  #
25
25
  # Represents a File
26
- # ({Object}[https://cloud.google.com/storage/docs/json_api/v1/objects]) that
27
- # belongs to a Bucket. Files (Objects) are
26
+ # ([Object](https://cloud.google.com/storage/docs/json_api/v1/objects)) that
27
+ # belongs to a {Bucket}. Files (Objects) are
28
28
  # the individual pieces of data that you store in Google Cloud Storage. A
29
29
  # file can be up to 5 TB in size. Files have two components:
30
30
  # data and metadata. The data component is the data from an external file or
31
31
  # other data source that you want to store in Google Cloud Storage. The
32
32
  # metadata component is a collection of name-value pairs that describe
33
- # various qualities of the data. For more information, see {Concepts and
34
- # Techniques}[https://cloud.google.com/storage/docs/concepts-techniques].
33
+ # various qualities of the data.
34
+ #
35
+ # @see https://cloud.google.com/storage/docs/concepts-techniques Concepts
36
+ # and Techniques
35
37
  #
38
+ # @example
36
39
  # require "gcloud"
37
40
  #
38
41
  # gcloud = Gcloud.new
@@ -41,20 +44,20 @@ module Gcloud
41
44
  # bucket = storage.bucket "my-bucket"
42
45
  #
43
46
  # file = bucket.file "path/to/my-file.ext"
44
- # file.download "/downloads/#{bucket.name}/#{file.name}"
47
+ # file.download "path/to/downloaded/file.ext"
45
48
  #
46
49
  class File
47
50
  ##
48
- # The Connection object.
49
- attr_accessor :connection #:nodoc:
51
+ # @private The Connection object.
52
+ attr_accessor :connection
50
53
 
51
54
  ##
52
- # The Google API Client object.
53
- attr_accessor :gapi #:nodoc:
55
+ # @private The Google API Client object.
56
+ attr_accessor :gapi
54
57
 
55
58
  ##
56
- # Create an empty File object.
57
- def initialize #:nodoc:
59
+ # @private Create an empty File object.
60
+ def initialize
58
61
  @connection = nil
59
62
  @gapi = {}
60
63
  end
@@ -79,7 +82,7 @@ module Gcloud
79
82
  end
80
83
 
81
84
  ##
82
- # The name of the bucket containing this file.
85
+ # The name of the {Bucket} containing this file.
83
86
  def bucket
84
87
  @gapi["bucket"]
85
88
  end
@@ -140,7 +143,7 @@ module Gcloud
140
143
 
141
144
  ##
142
145
  # The CRC32c checksum of the data, as described in
143
- # {RFC 4960, Appendix B}[http://tools.ietf.org/html/rfc4960#appendix-B].
146
+ # [RFC 4960, Appendix B](http://tools.ietf.org/html/rfc4960#appendix-B).
144
147
  # Encoded using base64 in big-endian byte order.
145
148
  def crc32c
146
149
  @gapi["crc32c"]
@@ -153,7 +156,7 @@ module Gcloud
153
156
  end
154
157
 
155
158
  ##
156
- # The {Cache-Control}[https://tools.ietf.org/html/rfc7234#section-5.2]
159
+ # The [Cache-Control](https://tools.ietf.org/html/rfc7234#section-5.2)
157
160
  # directive for the file data.
158
161
  def cache_control
159
162
  @gapi["cacheControl"]
@@ -161,56 +164,56 @@ module Gcloud
161
164
 
162
165
  ##
163
166
  # Updates the
164
- # {Cache-Control}[https://tools.ietf.org/html/rfc7234#section-5.2]
167
+ # [Cache-Control](https://tools.ietf.org/html/rfc7234#section-5.2)
165
168
  # directive for the file data.
166
169
  def cache_control= cache_control
167
170
  patch_gapi! cache_control: cache_control
168
171
  end
169
172
 
170
173
  ##
171
- # The {Content-Disposition}[https://tools.ietf.org/html/rfc6266] of the
174
+ # The [Content-Disposition](https://tools.ietf.org/html/rfc6266) of the
172
175
  # file data.
173
176
  def content_disposition
174
177
  @gapi["contentDisposition"]
175
178
  end
176
179
 
177
180
  ##
178
- # Updates the {Content-Disposition}[https://tools.ietf.org/html/rfc6266]
181
+ # Updates the [Content-Disposition](https://tools.ietf.org/html/rfc6266)
179
182
  # of the file data.
180
183
  def content_disposition= content_disposition
181
184
  patch_gapi! content_disposition: content_disposition
182
185
  end
183
186
 
184
187
  ##
185
- # The {Content-Encoding
186
- # }[https://tools.ietf.org/html/rfc7231#section-3.1.2.2] of the file data.
188
+ # The [Content-Encoding
189
+ # ](https://tools.ietf.org/html/rfc7231#section-3.1.2.2) of the file data.
187
190
  def content_encoding
188
191
  @gapi["contentEncoding"]
189
192
  end
190
193
 
191
194
  ##
192
- # Updates the {Content-Encoding
193
- # }[https://tools.ietf.org/html/rfc7231#section-3.1.2.2] of the file data.
195
+ # Updates the [Content-Encoding
196
+ # ](https://tools.ietf.org/html/rfc7231#section-3.1.2.2) of the file data.
194
197
  def content_encoding= content_encoding
195
198
  patch_gapi! content_encoding: content_encoding
196
199
  end
197
200
 
198
201
  ##
199
- # The {Content-Language}[http://tools.ietf.org/html/bcp47] of the file
202
+ # The [Content-Language](http://tools.ietf.org/html/bcp47) of the file
200
203
  # data.
201
204
  def content_language
202
205
  @gapi["contentLanguage"]
203
206
  end
204
207
 
205
208
  ##
206
- # Updates the {Content-Language}[http://tools.ietf.org/html/bcp47] of the
209
+ # Updates the [Content-Language](http://tools.ietf.org/html/bcp47) of the
207
210
  # file data.
208
211
  def content_language= content_language
209
212
  patch_gapi! content_language: content_language
210
213
  end
211
214
 
212
215
  ##
213
- # The {Content-Type}[https://tools.ietf.org/html/rfc2616#section-14.17] of
216
+ # The [Content-Type](https://tools.ietf.org/html/rfc2616#section-14.17) of
214
217
  # the file data.
215
218
  def content_type
216
219
  @gapi["contentType"]
@@ -218,7 +221,7 @@ module Gcloud
218
221
 
219
222
  ##
220
223
  # Updates the
221
- # {Content-Type}[https://tools.ietf.org/html/rfc2616#section-14.17] of the
224
+ # [Content-Type](https://tools.ietf.org/html/rfc2616#section-14.17) of the
222
225
  # file data.
223
226
  def content_type= content_type
224
227
  patch_gapi! content_type: content_type
@@ -244,13 +247,14 @@ module Gcloud
244
247
 
245
248
  ##
246
249
  # Updates the file with changes made in the given block in a single
247
- # PATCH request. The following attributes may be set: #cache_control=,
248
- # #content_disposition=, #content_encoding=, #content_language=,
249
- # #content_type=, and #metadata=. The #metadata hash accessible in the
250
- # block is completely mutable and will be included in the request.
250
+ # PATCH request. The following attributes may be set: {#cache_control=},
251
+ # {#content_disposition=}, {#content_encoding=}, {#content_language=},
252
+ # {#content_type=}, and {#metadata=}. The {#metadata} hash accessible in
253
+ # the block is completely mutable and will be included in the request.
251
254
  #
252
- # === Examples
255
+ # @yield [file] a block yielding a delegate object for updating the file
253
256
  #
257
+ # @example
254
258
  # require "gcloud"
255
259
  #
256
260
  # gcloud = Gcloud.new
@@ -279,27 +283,23 @@ module Gcloud
279
283
  ##
280
284
  # Download the file's contents to a local file.
281
285
  #
282
- # === Parameters
286
+ # By default, the download is verified by calculating the MD5 digest.
283
287
  #
284
- # +path+::
285
- # The path on the local file system to write the data to.
286
- # The path provided must be writable. (+String+)
287
- # +verify+::
288
- # The verification algoruthm used to ensure the downloaded file contents
289
- # are correct. Default is +:md5+. (+Symbol+)
288
+ # @param [String] path The path on the local file system to write the data
289
+ # to. The path provided must be writable.
290
+ # @param [Symbol] verify The verification algoruthm used to ensure the
291
+ # downloaded file contents are correct. Default is `:md5`.
290
292
  #
291
293
  # Acceptable values are:
292
- # * +md5+ - Verify file content match using the MD5 hash.
293
- # * +crc32c+ - Verify file content match using the CRC32c hash.
294
- # * +all+ - Perform all available file content verification.
295
- # * +none+ - Don't perform file content verification.
296
294
  #
297
- # === Returns
295
+ # * `md5` - Verify file content match using the MD5 hash.
296
+ # * `crc32c` - Verify file content match using the CRC32c hash.
297
+ # * `all` - Perform all available file content verification.
298
+ # * `none` - Don't perform file content verification.
298
299
  #
299
- # +::File+ object on the local file system
300
- #
301
- # === Examples
300
+ # @return [File] Returns a `::File` object on the local file system
302
301
  #
302
+ # @example
303
303
  # require "gcloud"
304
304
  #
305
305
  # gcloud = Gcloud.new
@@ -310,9 +310,7 @@ module Gcloud
310
310
  # file = bucket.file "path/to/my-file.ext"
311
311
  # file.download "path/to/downloaded/file.ext"
312
312
  #
313
- # The download is verified by calculating the MD5 digest.
314
- # The CRC32c digest can be used by passing :crc32c.
315
- #
313
+ # @example Use the CRC32c digest by passing :crc32c.
316
314
  # require "gcloud"
317
315
  #
318
316
  # gcloud = Gcloud.new
@@ -323,8 +321,7 @@ module Gcloud
323
321
  # file = bucket.file "path/to/my-file.ext"
324
322
  # file.download "path/to/downloaded/file.ext", verify: :crc32c
325
323
  #
326
- # Both the MD5 and CRC32c digest can be used by passing :all.
327
- #
324
+ # @example Use the MD5 and CRC32c digests by passing :all.
328
325
  # require "gcloud"
329
326
  #
330
327
  # gcloud = Gcloud.new
@@ -335,8 +332,7 @@ module Gcloud
335
332
  # file = bucket.file "path/to/my-file.ext"
336
333
  # file.download "path/to/downloaded/file.ext", verify: :all
337
334
  #
338
- # The download verification can be disabled by passing :none
339
- #
335
+ # @example Disable the download verification by passing :none.
340
336
  # require "gcloud"
341
337
  #
342
338
  # gcloud = Gcloud.new
@@ -363,43 +359,34 @@ module Gcloud
363
359
  ##
364
360
  # Copy the file to a new location.
365
361
  #
366
- # === Parameters
367
- #
368
- # +dest_bucket_or_path+::
369
- # Either the bucket to copy the file to, or the path to copy the file to
370
- # in the current bucket. (+String+)
371
- # +dest_path+::
372
- # If a bucket was provided in the first parameter, this contains the
373
- # path to copy the file to in the given bucket. (+String+)
374
- # +acl+::
375
- # A predefined set of access controls to apply to new file.
376
- # (+String+)
362
+ # @param [String] dest_bucket_or_path Either the bucket to copy the file
363
+ # to, or the path to copy the file to in the current bucket.
364
+ # @param [String] dest_path If a bucket was provided in the first
365
+ # parameter, this contains the path to copy the file to in the given
366
+ # bucket.
367
+ # @param [String] acl A predefined set of access controls to apply to new
368
+ # file.
377
369
  #
378
370
  # Acceptable values are:
379
- # * +auth+, +auth_read+, +authenticated+, +authenticated_read+,
380
- # +authenticatedRead+ - File owner gets OWNER access, and
371
+ #
372
+ # * `auth`, `auth_read`, `authenticated`, `authenticated_read`,
373
+ # `authenticatedRead` - File owner gets OWNER access, and
381
374
  # allAuthenticatedUsers get READER access.
382
- # * +owner_full+, +bucketOwnerFullControl+ - File owner gets OWNER
375
+ # * `owner_full`, `bucketOwnerFullControl` - File owner gets OWNER
383
376
  # access, and project team owners get OWNER access.
384
- # * +owner_read+, +bucketOwnerRead+ - File owner gets OWNER access, and
377
+ # * `owner_read`, `bucketOwnerRead` - File owner gets OWNER access, and
385
378
  # project team owners get READER access.
386
- # * +private+ - File owner gets OWNER access.
387
- # * +project_private+, +projectPrivate+ - File owner gets OWNER access,
379
+ # * `private` - File owner gets OWNER access.
380
+ # * `project_private`, `projectPrivate` - File owner gets OWNER access,
388
381
  # and project team members get access according to their roles.
389
- # * +public+, +public_read+, +publicRead+ - File owner gets OWNER
382
+ # * `public`, `public_read`, `publicRead` - File owner gets OWNER
390
383
  # access, and allUsers get READER access.
391
- # +generation+::
392
- # Select a specific revision of the file to copy. The default is the
393
- # latest version. (+Integer+)
394
- #
395
- # === Returns
396
- #
397
- # +File+ object
384
+ # @param [Integer] generation Select a specific revision of the file to
385
+ # copy. The default is the latest version.
398
386
  #
399
- # === Examples
400
- #
401
- # The file can also be copied to a new path in the current bucket:
387
+ # @return [Gcloud::Storage::File]
402
388
  #
389
+ # @example The file can be copied to a new path in the current bucket:
403
390
  # require "gcloud"
404
391
  #
405
392
  # gcloud = Gcloud.new
@@ -410,8 +397,7 @@ module Gcloud
410
397
  # file = bucket.file "path/to/my-file.ext"
411
398
  # file.copy "path/to/destination/file.ext"
412
399
  #
413
- # The file can also be copied to a different bucket:
414
- #
400
+ # @example The file can also be copied to a different bucket:
415
401
  # require "gcloud"
416
402
  #
417
403
  # gcloud = Gcloud.new
@@ -423,8 +409,7 @@ module Gcloud
423
409
  # file.copy "new-destination-bucket",
424
410
  # "path/to/destination/file.ext"
425
411
  #
426
- # The file can also be copied by specifying a generation:
427
- #
412
+ # @example The file can also be copied by specifying a generation:
428
413
  # file.copy "copy/of/previous/generation/file.ext",
429
414
  # generation: 123456
430
415
  #
@@ -446,12 +431,9 @@ module Gcloud
446
431
  ##
447
432
  # Permanently deletes the file.
448
433
  #
449
- # === Returns
450
- #
451
- # +true+ if the file was deleted.
452
- #
453
- # === Example
434
+ # @return [Boolean] Returns `true` if the file was deleted.
454
435
  #
436
+ # @example
455
437
  # require "gcloud"
456
438
  #
457
439
  # gcloud = Gcloud.new
@@ -474,19 +456,17 @@ module Gcloud
474
456
 
475
457
  ##
476
458
  # Public URL to access the file. If the file is not public, requests to
477
- # the URL will return an error. (See File::Acl#public! and
478
- # Bucket::DefaultAcl#public!) For more information, read [Accessing Public
479
- # Data]{https://cloud.google.com/storage/docs/access-public-data}.
480
- #
481
- # To share a file that is not public see #signed_url.
459
+ # the URL will return an error. (See {File::Acl#public!} and
460
+ # {Bucket::DefaultAcl#public!}) To share a file that is not public see
461
+ # {#signed_url}.
482
462
  #
483
- # === Parameters
463
+ # @see https://cloud.google.com/storage/docs/access-public-data Accessing
464
+ # Public Data
484
465
  #
485
- # +protocol+::
486
- # The protocol to use for the URL. Default is +HTTPS+. (+String+)
487
- #
488
- # === Examples
466
+ # @param [String] protocol The protocol to use for the URL. Default is
467
+ # `HTTPS`.
489
468
  #
469
+ # @example
490
470
  # require "gcloud"
491
471
  #
492
472
  # gcloud = Gcloud.new
@@ -496,9 +476,7 @@ module Gcloud
496
476
  # file = bucket.file "avatars/heidi/400x400.png"
497
477
  # public_url = file.public_url
498
478
  #
499
- # To generate the URL with a protocol other than HTTPS, use the +protocol+
500
- # option:
501
- #
479
+ # @example Generate the URL with a protocol other than HTTPS:
502
480
  # require "gcloud"
503
481
  #
504
482
  # gcloud = Gcloud.new
@@ -516,46 +494,41 @@ module Gcloud
516
494
  ##
517
495
  # Access without authentication can be granted to a File for a specified
518
496
  # period of time. This URL uses a cryptographic signature
519
- # of your credentials to access the file. See the
520
- # {Access Control Signed URLs guide
521
- # }[https://cloud.google.com/storage/docs/access-control#Signed-URLs]
522
- # for more.
497
+ # of your credentials to access the file.
523
498
  #
524
499
  # Generating a URL requires service account credentials, either by
525
- # connecting with a service account when calling Gcloud.storage, or by
526
- # passing in the service account +issuer+ and +signing_key+ values. A
527
- # SignedUrlUnavailable is raised if the service account credentials are
528
- # missing. Service account credentials are acquired by following the steps
529
- # in {Service Account Authentication}[
530
- # https://cloud.google.com/storage/docs/authentication#service_accounts].
531
- #
532
- # === Parameters
533
- #
534
- # +method+::
535
- # The HTTP verb to be used with the signed URL. Signed URLs can be used
536
- # with +GET+, +HEAD+, +PUT+, and +DELETE+ requests. Default is +GET+.
537
- # (+String+)
538
- # +expires+::
539
- # The number of seconds until the URL expires. Default is 300/5 minutes.
540
- # (+Integer+)
541
- # +content_type+::
542
- # When provided, the client (browser) must send this value in the
543
- # HTTP header. e.g. +text/plain+ (+String+)
544
- # +content_md5+::
545
- # The MD5 digest value in base64. If you provide this in the string, the
546
- # client (usually a browser) must provide this HTTP header with this
547
- # same value in its request. (+String+)
548
- # +issuer+::
549
- # Service Account's Client Email. (+String+)
550
- # +client_email+::
551
- # Service Account's Client Email. (+String+)
552
- # +signing_key+::
553
- # Service Account's Private Key. (+OpenSSL::PKey::RSA+ or +String+)
554
- # +private_key+::
555
- # Service Account's Private Key. (+OpenSSL::PKey::RSA+ or +String+)
556
- #
557
- # === Examples
500
+ # connecting with a service account when calling {Gcloud.storage}, or by
501
+ # passing in the service account `issuer` and `signing_key` values.
502
+ # Although the private key can be passed as a string for convenience,
503
+ # creating and storing an instance of `OpenSSL::PKey::RSA` is more
504
+ # efficient when making multiple calls to `signed_url`.
558
505
  #
506
+ # A SignedUrlUnavailable is raised if the service account credentials are
507
+ # missing. Service account credentials are acquired by following the steps
508
+ # in [Service Account Authentication](
509
+ # https://cloud.google.com/storage/docs/authentication#service_accounts).
510
+ #
511
+ # @see https://cloud.google.com/storage/docs/access-control#Signed-URLs
512
+ # Access Control Signed URLs guide
513
+ #
514
+ # @param [String] method The HTTP verb to be used with the signed URL.
515
+ # Signed URLs can be used
516
+ # with `GET`, `HEAD`, `PUT`, and `DELETE` requests. Default is `GET`.
517
+ # @param [Integer] expires The number of seconds until the URL expires.
518
+ # Default is 300/5 minutes.
519
+ # @param [String] content_type When provided, the client (browser) must
520
+ # send this value in the HTTP header. e.g. `text/plain`
521
+ # @param [String] content_md5 The MD5 digest value in base64. If you
522
+ # provide this in the string, the client (usually a browser) must
523
+ # provide this HTTP header with this same value in its request.
524
+ # @param [String] issuer Service Account's Client Email.
525
+ # @param [String] client_email Service Account's Client Email.
526
+ # @param [OpenSSL::PKey::RSA, String] signing_key Service Account's
527
+ # Private Key.
528
+ # @param [OpenSSL::PKey::RSA, String] private_key Service Account's
529
+ # Private Key.
530
+ #
531
+ # @example
559
532
  # require "gcloud"
560
533
  #
561
534
  # gcloud = Gcloud.new
@@ -565,8 +538,7 @@ module Gcloud
565
538
  # file = bucket.file "avatars/heidi/400x400.png"
566
539
  # shared_url = file.signed_url
567
540
  #
568
- # Any of the option parameters may be specified:
569
- #
541
+ # @example Any of the option parameters may be specified:
570
542
  # require "gcloud"
571
543
  #
572
544
  # gcloud = Gcloud.new
@@ -577,13 +549,7 @@ module Gcloud
577
549
  # shared_url = file.signed_url method: "GET",
578
550
  # expires: 300 # 5 minutes from now
579
551
  #
580
- # Signed URLs require service account credentials. If you are not
581
- # authenticated with a service account, those credentials can be passed in
582
- # using the +issuer+ and +signing_key+ options. Although the private key
583
- # can be passed as a string for convenience, creating and storing an
584
- # instance of +OpenSSL::PKey::RSA+ is more efficient when making multiple
585
- # calls to +signed_url+.
586
- #
552
+ # @example Using the `issuer` and `signing_key` options:
587
553
  # require "gcloud/storage"
588
554
  #
589
555
  # storage = Gcloud.storage
@@ -607,20 +573,16 @@ module Gcloud
607
573
  end
608
574
 
609
575
  ##
610
- # The File::Acl instance used to control access to the file.
576
+ # The {File::Acl} instance used to control access to the file.
611
577
  #
612
578
  # A file has owners, writers, and readers. Permissions can be granted to
613
579
  # an individual user's email address, a group's email address, as well as
614
- # many predefined lists. See the
615
- # {Access Control guide
616
- # }[https://cloud.google.com/storage/docs/access-control]
617
- # for more.
580
+ # many predefined lists.
618
581
  #
619
- # === Examples
620
- #
621
- # Access to a file can be granted to a user by appending +"user-"+ to the
622
- # email address:
582
+ # @see https://cloud.google.com/storage/docs/access-control Access Control
583
+ # guide
623
584
  #
585
+ # @example Grant access to a user by pre-pending `"user-"` to an email:
624
586
  # require "gcloud"
625
587
  #
626
588
  # gcloud = Gcloud.new
@@ -632,9 +594,7 @@ module Gcloud
632
594
  # email = "heidi@example.net"
633
595
  # file.acl.add_reader "user-#{email}"
634
596
  #
635
- # Access to a file can be granted to a group by appending +"group-"+ to
636
- # the email address:
637
- #
597
+ # @example Grant access to a group by pre-pending `"group-"` to an email:
638
598
  # require "gcloud"
639
599
  #
640
600
  # gcloud = Gcloud.new
@@ -646,9 +606,7 @@ module Gcloud
646
606
  # email = "authors@example.net"
647
607
  # file.acl.add_reader "group-#{email}"
648
608
  #
649
- # Access to a file can also be granted to a predefined list of
650
- # permissions:
651
- #
609
+ # @example Or, grant access via a predefined permissions list:
652
610
  # require "gcloud"
653
611
  #
654
612
  # gcloud = Gcloud.new
@@ -677,15 +635,15 @@ module Gcloud
677
635
  alias_method :refresh!, :reload!
678
636
 
679
637
  ##
680
- # URI of the location and file name in the format of
638
+ # @private URI of the location and file name in the format of
681
639
  # <code>gs://my-bucket/file-name.json</code>.
682
- def to_gs_url #:nodoc:
640
+ def to_gs_url
683
641
  "gs://#{bucket}/#{name}"
684
642
  end
685
643
 
686
644
  ##
687
- # New File from a Google API Client object.
688
- def self.from_gapi gapi, conn #:nodoc:
645
+ # @private New File from a Google API Client object.
646
+ def self.from_gapi gapi, conn
689
647
  new.tap do |f|
690
648
  f.gapi = gapi
691
649
  f.connection = conn
@@ -733,8 +691,8 @@ module Gcloud
733
691
  end
734
692
 
735
693
  ##
736
- # Create a signed_url for a file.
737
- class Signer #:nodoc:
694
+ # @private Create a signed_url for a file.
695
+ class Signer
738
696
  def initialize file
739
697
  @file = file
740
698
  end