gcloud 0.2.0 → 0.3.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 (41) hide show
  1. checksums.yaml +8 -8
  2. data/AUTHENTICATION.md +3 -3
  3. data/CHANGELOG.md +12 -0
  4. data/OVERVIEW.md +30 -0
  5. data/lib/gcloud.rb +126 -9
  6. data/lib/gcloud/bigquery.rb +399 -0
  7. data/lib/gcloud/bigquery/connection.rb +592 -0
  8. data/lib/gcloud/bigquery/copy_job.rb +98 -0
  9. data/lib/gcloud/bigquery/credentials.rb +29 -0
  10. data/lib/gcloud/bigquery/data.rb +134 -0
  11. data/lib/gcloud/bigquery/dataset.rb +662 -0
  12. data/lib/gcloud/bigquery/dataset/list.rb +51 -0
  13. data/lib/gcloud/bigquery/errors.rb +62 -0
  14. data/lib/gcloud/bigquery/extract_job.rb +117 -0
  15. data/lib/gcloud/bigquery/insert_response.rb +80 -0
  16. data/lib/gcloud/bigquery/job.rb +283 -0
  17. data/lib/gcloud/bigquery/job/list.rb +55 -0
  18. data/lib/gcloud/bigquery/load_job.rb +199 -0
  19. data/lib/gcloud/bigquery/project.rb +512 -0
  20. data/lib/gcloud/bigquery/query_data.rb +135 -0
  21. data/lib/gcloud/bigquery/query_job.rb +151 -0
  22. data/lib/gcloud/bigquery/table.rb +827 -0
  23. data/lib/gcloud/bigquery/table/list.rb +55 -0
  24. data/lib/gcloud/bigquery/view.rb +419 -0
  25. data/lib/gcloud/credentials.rb +3 -3
  26. data/lib/gcloud/datastore.rb +15 -3
  27. data/lib/gcloud/datastore/credentials.rb +3 -2
  28. data/lib/gcloud/datastore/dataset.rb +5 -1
  29. data/lib/gcloud/datastore/transaction.rb +1 -1
  30. data/lib/gcloud/pubsub.rb +14 -3
  31. data/lib/gcloud/pubsub/credentials.rb +4 -4
  32. data/lib/gcloud/pubsub/project.rb +5 -1
  33. data/lib/gcloud/pubsub/topic.rb +5 -0
  34. data/lib/gcloud/storage.rb +14 -24
  35. data/lib/gcloud/storage/bucket.rb +10 -4
  36. data/lib/gcloud/storage/credentials.rb +3 -2
  37. data/lib/gcloud/storage/file.rb +8 -1
  38. data/lib/gcloud/storage/project.rb +5 -1
  39. data/lib/gcloud/upload.rb +54 -0
  40. data/lib/gcloud/version.rb +1 -1
  41. metadata +78 -2
@@ -29,8 +29,8 @@ module Gcloud
29
29
  TOKEN_CREDENTIAL_URI = "https://accounts.google.com/o/oauth2/token"
30
30
  AUDIENCE = "https://accounts.google.com/o/oauth2/token"
31
31
  SCOPE = []
32
- PATH_ENV_VARS = ["GOOGLE_CLOUD_KEYFILE"]
33
- JSON_ENV_VARS = ["GOOGLE_CLOUD_KEYFILE_JSON"]
32
+ PATH_ENV_VARS = %w(GCLOUD_KEYFILE GOOGLE_CLOUD_KEYFILE)
33
+ JSON_ENV_VARS = %w(GCLOUD_KEYFILE_JSON GOOGLE_CLOUD_KEYFILE_JSON)
34
34
  DEFAULT_PATHS = ["~/.config/gcloud/application_default_credentials.json"]
35
35
 
36
36
  attr_accessor :client
@@ -133,7 +133,7 @@ module Gcloud
133
133
  # client options for initializing signet client
134
134
  { token_credential_uri: options["token_credential_uri"],
135
135
  audience: options["audience"],
136
- scope: options["scope"],
136
+ scope: Array(options["scope"]),
137
137
  issuer: options["client_email"],
138
138
  signing_key: OpenSSL::PKey::RSA.new(options["private_key"]) }
139
139
  end
@@ -33,6 +33,18 @@ module Gcloud
33
33
  # +keyfile+::
34
34
  # Keyfile downloaded from Google Cloud. If file path the file must be
35
35
  # readable. (+String+ or +Hash+)
36
+ # +options+::
37
+ # An optional Hash for controlling additional behavior. (+Hash+)
38
+ # <code>options[:scope]</code>::
39
+ # The OAuth 2.0 scopes controlling the set of resources and operations that
40
+ # the connection can access. See {Using OAuth 2.0 to Access Google
41
+ # APIs}[https://developers.google.com/identity/protocols/OAuth2]. (+String+
42
+ # or +Array+)
43
+ #
44
+ # The default scopes are:
45
+ #
46
+ # * +https://www.googleapis.com/auth/datastore+
47
+ # * +https://www.googleapis.com/auth/userinfo.email+
36
48
  #
37
49
  # === Returns
38
50
  #
@@ -52,12 +64,12 @@ module Gcloud
52
64
  #
53
65
  # dataset.save entity
54
66
  #
55
- def self.datastore project = nil, keyfile = nil
67
+ def self.datastore project = nil, keyfile = nil, options = {}
56
68
  project ||= Gcloud::Datastore::Dataset.default_project
57
69
  if keyfile.nil?
58
- credentials = Gcloud::Datastore::Credentials.default
70
+ credentials = Gcloud::Datastore::Credentials.default options
59
71
  else
60
- credentials = Gcloud::Datastore::Credentials.new keyfile
72
+ credentials = Gcloud::Datastore::Credentials.new keyfile, options
61
73
  end
62
74
  Gcloud::Datastore::Dataset.new project, credentials
63
75
  end
@@ -26,8 +26,9 @@ module Gcloud
26
26
  class Credentials < Gcloud::Credentials #:nodoc:
27
27
  SCOPE = ["https://www.googleapis.com/auth/datastore",
28
28
  "https://www.googleapis.com/auth/userinfo.email"]
29
- PATH_ENV_VARS = %w(DATASTORE_KEYFILE GOOGLE_CLOUD_KEYFILE)
30
- JSON_ENV_VARS = %w(DATASTORE_KEYFILE_JSON GOOGLE_CLOUD_KEYFILE_JSON)
29
+ PATH_ENV_VARS = %w(DATASTORE_KEYFILE GCLOUD_KEYFILE GOOGLE_CLOUD_KEYFILE)
30
+ JSON_ENV_VARS = %w(DATASTORE_KEYFILE_JSON GCLOUD_KEYFILE_JSON
31
+ GOOGLE_CLOUD_KEYFILE_JSON)
31
32
 
32
33
  ##
33
34
  # Sign OAuth 2.0 API calls.
@@ -52,6 +52,8 @@ module Gcloud
52
52
  #
53
53
  # See Gcloud#datastore
54
54
  def initialize project, credentials #:nodoc:
55
+ project = project.to_s # Always cast to a string
56
+ fail ArgumentError, "project is missing" if project.empty?
55
57
  @connection = Connection.new project, credentials
56
58
  end
57
59
 
@@ -75,7 +77,9 @@ module Gcloud
75
77
  ##
76
78
  # Default project.
77
79
  def self.default_project #:nodoc:
78
- ENV["DATASTORE_PROJECT"] || ENV["GOOGLE_CLOUD_PROJECT"]
80
+ ENV["DATASTORE_PROJECT"] ||
81
+ ENV["GCLOUD_PROJECT"] ||
82
+ ENV["GOOGLE_CLOUD_PROJECT"]
79
83
  end
80
84
 
81
85
  ##
@@ -102,7 +102,7 @@ module Gcloud
102
102
  # Transaction#start must be called afterwards.
103
103
  def reset!
104
104
  @shared_mutation = nil
105
- @id = nil
105
+ @id = nil
106
106
  @_auto_id_entities = []
107
107
  end
108
108
 
@@ -31,6 +31,17 @@ module Gcloud
31
31
  # +keyfile+::
32
32
  # Keyfile downloaded from Google Cloud. If file path the file must be
33
33
  # readable. (+String+ or +Hash+)
34
+ # +options+::
35
+ # An optional Hash for controlling additional behavior. (+Hash+)
36
+ # <code>options[:scope]</code>::
37
+ # The OAuth 2.0 scopes controlling the set of resources and operations that
38
+ # the connection can access. See {Using OAuth 2.0 to Access Google
39
+ # APIs}[https://developers.google.com/identity/protocols/OAuth2]. (+String+
40
+ # or +Array+)
41
+ #
42
+ # The default scope is:
43
+ #
44
+ # * +https://www.googleapis.com/auth/pubsub+
34
45
  #
35
46
  # === Returns
36
47
  #
@@ -45,12 +56,12 @@ module Gcloud
45
56
  # topic = pubsub.topic "my-topic"
46
57
  # topic.publish "task completed"
47
58
  #
48
- def self.pubsub project = nil, keyfile = nil
59
+ def self.pubsub project = nil, keyfile = nil, options = {}
49
60
  project ||= Gcloud::Pubsub::Project.default_project
50
61
  if keyfile.nil?
51
- credentials = Gcloud::Pubsub::Credentials.default
62
+ credentials = Gcloud::Pubsub::Credentials.default options
52
63
  else
53
- credentials = Gcloud::Pubsub::Credentials.new keyfile
64
+ credentials = Gcloud::Pubsub::Credentials.new keyfile, options
54
65
  end
55
66
  Gcloud::Pubsub::Project.new project, credentials
56
67
  end
@@ -20,10 +20,10 @@ module Gcloud
20
20
  ##
21
21
  # Represents the OAuth 2.0 signing logic for Pub/Sub.
22
22
  class Credentials < Gcloud::Credentials #:nodoc:
23
- SCOPE = ["https://www.googleapis.com/auth/pubsub",
24
- "https://www.googleapis.com/auth/cloud-platform"]
25
- PATH_ENV_VARS = %w(PUBSUB_KEYFILE GOOGLE_CLOUD_KEYFILE)
26
- JSON_ENV_VARS = %w(PUBSUB_KEYFILE_JSON GOOGLE_CLOUD_KEYFILE_JSON)
23
+ SCOPE = ["https://www.googleapis.com/auth/pubsub"]
24
+ PATH_ENV_VARS = %w(PUBSUB_KEYFILE GCLOUD_KEYFILE GOOGLE_CLOUD_KEYFILE)
25
+ JSON_ENV_VARS = %w(PUBSUB_KEYFILE_JSON GCLOUD_KEYFILE_JSON
26
+ GOOGLE_CLOUD_KEYFILE_JSON)
27
27
  end
28
28
  end
29
29
  end
@@ -47,6 +47,8 @@ module Gcloud
47
47
  ##
48
48
  # Creates a new Connection instance.
49
49
  def initialize project, credentials #:nodoc:
50
+ project = project.to_s # Always cast to a string
51
+ fail ArgumentError, "project is missing" if project.empty?
50
52
  @connection = Connection.new project, credentials
51
53
  end
52
54
 
@@ -69,7 +71,9 @@ module Gcloud
69
71
  ##
70
72
  # Default project.
71
73
  def self.default_project #:nodoc:
72
- ENV["PUBSUB_PROJECT"] || ENV["GOOGLE_CLOUD_PROJECT"]
74
+ ENV["PUBSUB_PROJECT"] ||
75
+ ENV["GCLOUD_PROJECT"] ||
76
+ ENV["GOOGLE_CLOUD_PROJECT"]
73
77
  end
74
78
 
75
79
  ##
@@ -512,6 +512,9 @@ module Gcloud
512
512
  @gapi.nil?
513
513
  end
514
514
 
515
+ # rubocop:disable Style/TrivialAccessors
516
+ # Disabled rubocop because you can't use "?" in an attr.
517
+
515
518
  ##
516
519
  # Determines whether the lazy topic object should create a topic on the
517
520
  # Pub/Sub service.
@@ -530,6 +533,8 @@ module Gcloud
530
533
  @autocreate
531
534
  end
532
535
 
536
+ # rubocop:enable Style/TrivialAccessors
537
+
533
538
  ##
534
539
  # New Topic from a Google API Client object.
535
540
  def self.from_gapi gapi, conn #:nodoc:
@@ -31,6 +31,17 @@ module Gcloud
31
31
  # +keyfile+::
32
32
  # Keyfile downloaded from Google Cloud. If file path the file must be
33
33
  # readable. (+String+ or +Hash+)
34
+ # +options+::
35
+ # An optional Hash for controlling additional behavior. (+Hash+)
36
+ # <code>options[:scope]</code>::
37
+ # The OAuth 2.0 scopes controlling the set of resources and operations that
38
+ # the connection can access. See {Using OAuth 2.0 to Access Google
39
+ # APIs}[https://developers.google.com/identity/protocols/OAuth2]. (+String+
40
+ # or +Array+)
41
+ #
42
+ # The default scope is:
43
+ #
44
+ # * +https://www.googleapis.com/auth/devstorage.full_control+
34
45
  #
35
46
  # === Returns
36
47
  #
@@ -46,12 +57,12 @@ module Gcloud
46
57
  # bucket = storage.bucket "my-bucket"
47
58
  # file = bucket.file "path/to/my-file.ext"
48
59
  #
49
- def self.storage project = nil, keyfile = nil
60
+ def self.storage project = nil, keyfile = nil, options = {}
50
61
  project ||= Gcloud::Storage::Project.default_project
51
62
  if keyfile.nil?
52
- credentials = Gcloud::Storage::Credentials.default
63
+ credentials = Gcloud::Storage::Credentials.default options
53
64
  else
54
- credentials = Gcloud::Storage::Credentials.new keyfile
65
+ credentials = Gcloud::Storage::Credentials.new keyfile, options
55
66
  end
56
67
  Gcloud::Storage::Project.new project, credentials
57
68
  end
@@ -338,26 +349,5 @@ module Gcloud
338
349
  # file.acl.public!
339
350
  #
340
351
  module Storage
341
- ##
342
- # Retrieve resumable threshold.
343
- # If uploads are larger in size than this value then
344
- # resumable uploads are used.
345
- #
346
- # The default value is 5 MiB (5,000,000 bytes).
347
- def self.resumable_threshold
348
- @@resumable_threshold
349
- end
350
-
351
- ##
352
- # Sets a new resumable threshold value.
353
- def self.resumable_threshold= new_resumable_threshold
354
- # rubocop:disable Style/ClassVars
355
- # Disabled rubocop because this is the best option.
356
- @@resumable_threshold = new_resumable_threshold.to_i
357
- # rubocop:enable Style/ClassVars
358
- end
359
-
360
- # Set the default threshold to 5 MiB.
361
- self.resumable_threshold = 5_000_000
362
352
  end
363
353
  end
@@ -16,6 +16,7 @@
16
16
  require "gcloud/storage/bucket/acl"
17
17
  require "gcloud/storage/bucket/list"
18
18
  require "gcloud/storage/file"
19
+ require "gcloud/upload"
19
20
 
20
21
  module Gcloud
21
22
  module Storage
@@ -325,9 +326,7 @@ module Gcloud
325
326
  #
326
327
  def create_file file, path = nil, options = {}
327
328
  ensure_connection!
328
- # TODO: Raise if file doesn't exist
329
- # ensure_file_exists!
330
- fail unless ::File.file? file
329
+ ensure_file_exists! file
331
330
 
332
331
  options[:acl] = File::Acl.predefined_rule_for options[:acl]
333
332
 
@@ -465,10 +464,17 @@ module Gcloud
465
464
  fail "Must have active connection" unless connection
466
465
  end
467
466
 
467
+ ##
468
+ # Raise an error if the file is not found.
469
+ def ensure_file_exists! file
470
+ return if ::File.file? file
471
+ fail ArgumentError, "cannot find file #{file}"
472
+ end
473
+
468
474
  ##
469
475
  # Determines if a resumable upload should be used.
470
476
  def resumable_upload? file #:nodoc:
471
- ::File.size?(file).to_i > Storage.resumable_threshold
477
+ ::File.size?(file).to_i > Upload.resumable_threshold
472
478
  end
473
479
 
474
480
  def upload_multipart file, path, options = {}
@@ -21,8 +21,9 @@ module Gcloud
21
21
  # Represents the OAuth 2.0 signing logic for Storage.
22
22
  class Credentials < Gcloud::Credentials #:nodoc:
23
23
  SCOPE = ["https://www.googleapis.com/auth/devstorage.full_control"]
24
- PATH_ENV_VARS = %w(STORAGE_KEYFILE GOOGLE_CLOUD_KEYFILE)
25
- JSON_ENV_VARS = %w(STORAGE_KEYFILE_JSON GOOGLE_CLOUD_KEYFILE_JSON)
24
+ PATH_ENV_VARS = %w(STORAGE_KEYFILE GCLOUD_KEYFILE GOOGLE_CLOUD_KEYFILE)
25
+ JSON_ENV_VARS = %w(STORAGE_KEYFILE_JSON GCLOUD_KEYFILE_JSON
26
+ GOOGLE_CLOUD_KEYFILE_JSON)
26
27
  end
27
28
  end
28
29
  end
@@ -463,6 +463,13 @@ module Gcloud
463
463
  @acl ||= File::Acl.new self
464
464
  end
465
465
 
466
+ ##
467
+ # URI of the location and file name in the format of
468
+ # <code>gs://my-bucket/file-name.json</code>.
469
+ def to_gs_url #:nodoc:
470
+ "gs://#{bucket}/#{name}"
471
+ end
472
+
466
473
  ##
467
474
  # New File from a Google API Client object.
468
475
  def self.from_gapi gapi, conn #:nodoc:
@@ -561,7 +568,7 @@ module Gcloud
561
568
  end
562
569
 
563
570
  def generate_signed_url issuer, signed_string, expires
564
- signature = Base64.encode64(signed_string).gsub("\n", "")
571
+ signature = Base64.encode64(signed_string).delete("\n")
565
572
  "#{ext_url}?GoogleAccessId=#{CGI.escape issuer}" \
566
573
  "&Expires=#{expires}" \
567
574
  "&Signature=#{CGI.escape signature}"
@@ -52,6 +52,8 @@ module Gcloud
52
52
  #
53
53
  # See Gcloud#storage
54
54
  def initialize project, credentials #:nodoc:
55
+ project = project.to_s # Always cast to a string
56
+ fail ArgumentError, "project is missing" if project.empty?
55
57
  @connection = Connection.new project, credentials
56
58
  end
57
59
 
@@ -75,7 +77,9 @@ module Gcloud
75
77
  ##
76
78
  # Default project.
77
79
  def self.default_project #:nodoc:
78
- ENV["STORAGE_PROJECT"] || ENV["GOOGLE_CLOUD_PROJECT"]
80
+ ENV["STORAGE_PROJECT"] ||
81
+ ENV["GCLOUD_PROJECT"] ||
82
+ ENV["GOOGLE_CLOUD_PROJECT"]
79
83
  end
80
84
 
81
85
  ##
@@ -0,0 +1,54 @@
1
+ #--
2
+ # Copyright 2014 Google Inc. All rights reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ require "gcloud"
17
+
18
+ #--
19
+ # Google Cloud Upload
20
+ module Gcloud
21
+ ##
22
+ # = Upload Settings
23
+ #
24
+ # Upload allows users to configure how files are uploaded to the Google Cloud
25
+ # Service APIs.
26
+ #
27
+ # require "gcloud/upload"
28
+ #
29
+ # # Set the default threshold to 10 MiB.
30
+ # Gcloud::Upload.resumable_threshold = 10_000_000
31
+ module Upload
32
+ ##
33
+ # Retrieve resumable threshold.
34
+ # If uploads are larger in size than this value then
35
+ # resumable uploads are used.
36
+ #
37
+ # The default value is 5 MiB (5,000,000 bytes).
38
+ def self.resumable_threshold
39
+ @@resumable_threshold
40
+ end
41
+
42
+ ##
43
+ # Sets a new resumable threshold value.
44
+ def self.resumable_threshold= new_resumable_threshold
45
+ # rubocop:disable Style/ClassVars
46
+ # Disabled rubocop because this is the best option.
47
+ @@resumable_threshold = new_resumable_threshold.to_i
48
+ # rubocop:enable Style/ClassVars
49
+ end
50
+
51
+ # Set the default threshold to 5 MiB.
52
+ self.resumable_threshold = 5_000_000
53
+ end
54
+ end
@@ -16,5 +16,5 @@
16
16
  #--
17
17
  # Google Cloud Version
18
18
  module Gcloud
19
- VERSION = "0.2.0"
19
+ VERSION = "0.3.0"
20
20
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gcloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Silvano Luciani
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-07-22 00:00:00.000000000 Z
12
+ date: 2015-08-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: beefcake
@@ -81,6 +81,62 @@ dependencies:
81
81
  - - ~>
82
82
  - !ruby/object:Gem::Version
83
83
  version: '5.7'
84
+ - !ruby/object:Gem::Dependency
85
+ name: minitest-autotest
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
90
+ version: '1.0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ~>
96
+ - !ruby/object:Gem::Version
97
+ version: '1.0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: minitest-focus
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ~>
103
+ - !ruby/object:Gem::Version
104
+ version: '1.1'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ~>
110
+ - !ruby/object:Gem::Version
111
+ version: '1.1'
112
+ - !ruby/object:Gem::Dependency
113
+ name: minitest-rg
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ~>
117
+ - !ruby/object:Gem::Version
118
+ version: '5.2'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: '5.2'
126
+ - !ruby/object:Gem::Dependency
127
+ name: autotest-suffix
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ~>
131
+ - !ruby/object:Gem::Version
132
+ version: '1.1'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ~>
138
+ - !ruby/object:Gem::Version
139
+ version: '1.1'
84
140
  - !ruby/object:Gem::Dependency
85
141
  name: rdoc
86
142
  requirement: !ruby/object:Gem::Requirement
@@ -167,6 +223,25 @@ files:
167
223
  - OVERVIEW.md
168
224
  - lib/gcloud.rb
169
225
  - lib/gcloud/backoff.rb
226
+ - lib/gcloud/bigquery.rb
227
+ - lib/gcloud/bigquery/connection.rb
228
+ - lib/gcloud/bigquery/copy_job.rb
229
+ - lib/gcloud/bigquery/credentials.rb
230
+ - lib/gcloud/bigquery/data.rb
231
+ - lib/gcloud/bigquery/dataset.rb
232
+ - lib/gcloud/bigquery/dataset/list.rb
233
+ - lib/gcloud/bigquery/errors.rb
234
+ - lib/gcloud/bigquery/extract_job.rb
235
+ - lib/gcloud/bigquery/insert_response.rb
236
+ - lib/gcloud/bigquery/job.rb
237
+ - lib/gcloud/bigquery/job/list.rb
238
+ - lib/gcloud/bigquery/load_job.rb
239
+ - lib/gcloud/bigquery/project.rb
240
+ - lib/gcloud/bigquery/query_data.rb
241
+ - lib/gcloud/bigquery/query_job.rb
242
+ - lib/gcloud/bigquery/table.rb
243
+ - lib/gcloud/bigquery/table/list.rb
244
+ - lib/gcloud/bigquery/view.rb
170
245
  - lib/gcloud/credentials.rb
171
246
  - lib/gcloud/datastore.rb
172
247
  - lib/gcloud/datastore/connection.rb
@@ -205,6 +280,7 @@ files:
205
280
  - lib/gcloud/storage/file/list.rb
206
281
  - lib/gcloud/storage/file/verifier.rb
207
282
  - lib/gcloud/storage/project.rb
283
+ - lib/gcloud/upload.rb
208
284
  - lib/gcloud/version.rb
209
285
  homepage: http://googlecloudplatform.github.io/gcloud-ruby/
210
286
  licenses: