google-apis 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5bedf6667092812f0ef8e2292a028ae8d63dd0f3
4
- data.tar.gz: 4a3d38dec4fe35449d6b0b71e397f49008d900c4
3
+ metadata.gz: 40cf27a2e19679987b6aa02d3419450df91b0cf8
4
+ data.tar.gz: c1a8dbb160c470f63784633e8a41516ccb81c51f
5
5
  SHA512:
6
- metadata.gz: 2ca597c89963a2e0464d8d30b8cea8f963f7b6163aadebc6a071eb6269951233a0c9456fb6fc9efa68f222a1e92cb676aa85b0f9425f193a9f7bfb915675b467
7
- data.tar.gz: 616f14c243a99469ade6b4a1c809f3853ae4ac95f1d3c5cfab8cd1a62c623819d4cca35a7c2ab5e346706d4526c77f6afd798c06f93b9c815d7b04b97fd738d4
6
+ metadata.gz: 9b70082d8f1a07f02c13b26ee88de8314c67862d5370cfdf1b9dabc650c311bc1055251d883d3a6e66fde309a616f7fcacc307daabb0cb5799b39413af0c767a
7
+ data.tar.gz: 8019e1af722bdce66e749725a7dbec8a02555e50c1c86891cf5728c6c2b80e728c0b67366d18b745820eb01740a98293c96adabe6cfce92efd2fa4943b764b95
data/CHANGELOG.rdoc CHANGED
@@ -1,5 +1,11 @@
1
1
  = Google APIs CHANGELOG
2
2
 
3
+ == Version 0.1.4 (April 21, 2015)
4
+
5
+ * Introduced GoogleApis.config
6
+ * Improved handling default API parameters
7
+ * Auto-connecting to API when having a GoogleApis.connection available
8
+
3
9
  == Version 0.1.3 (April 20, 2015)
4
10
 
5
11
  * Camelizing underscored default param keys
data/README.md CHANGED
@@ -99,7 +99,7 @@ Please note that `Google::BigQuery.connection` is provided with several methods
99
99
 
100
100
  ##### Google::Storage.connection
101
101
 
102
- The following example demonstrates how to download a file from Google Storage:
102
+ The following example demonstrates how to download and upload a file from Google Storage:
103
103
 
104
104
  ```ruby
105
105
  [1] pry(main)> Google::Storage.connect :email_address => "lorem@developer.gserviceaccount.com", :private_key => "/path/to/private/key.p12"
@@ -170,19 +170,30 @@ Please make sure that you also have created a "Public API access" server key and
170
170
 
171
171
  If it isn't already clear, you can specify a global Google API connection and use different APIs:
172
172
 
173
+ ```yaml
174
+ ---
175
+ email_address: lorem@developer.gserviceaccount.com
176
+ private_key: "/path/to/private/key.p12"
177
+ project_id: your_project_id
178
+ dataset_id: your_dataset_id
179
+ bucket: your_bucket
180
+ ```
181
+
173
182
  ```ruby
174
- [1] pry(main)> GoogleApis.connect :email_address => "lorem@developer.gserviceaccount.com", :private_key => "/path/to/private/key.p12"
183
+ [1] pry(main)> require "yaml"
184
+ => true
185
+ [2] pry(main)> GoogleApis.connect YAML.load_file("config/google-apis.yml")
175
186
  => #<GoogleApis::Connection:0x007ffe0aa95d70 [lorem@developer.gserviceaccount.com]>
176
- [2] pry(main)> Google::Drive.connect
177
- => #<Google::Drive:0x007fcfec1265b0 v2:[about,apps,changes,channels,children,comments,files,parents,permissions,properties,realtime,replies,revisions] {}>
178
187
  [3] pry(main)> Google::Drive.files.list
179
188
  => {"kind"=>"drive#fileList",
180
189
  ...
181
- [4] pry(main)> Google::BigQuery.connect :project_id => "your_project_id", :dataset_id => "your_dataset_id"
190
+ [4] pry(main)> Google::BigQuery.connection
182
191
  => #<Google::BigQuery:0x007ffe0b1fb240 v2:[datasets,jobs,projects,tabledata,tables] {projectId:"your_project_id",datasetId:"your_dataset_id"}>
183
192
  [5] pry(main)> Google::BigQuery.tables.list
184
193
  => {"kind"=>"bigquery#tableList",
185
194
  ...
195
+ [6] pry(main)> Google::Storage.objects.list :prefix => "path/to/your/file/awesome.txt"
196
+ => {"kind"=>"storage#objects",
186
197
  ```
187
198
 
188
199
  ### Using the console
@@ -193,7 +204,7 @@ Run the following command in your console:
193
204
 
194
205
  ```ruby
195
206
  $ script/console
196
- Loading Google APIs development environment (0.1.3)
207
+ Loading Google APIs development environment (0.1.4)
197
208
  [1] pry(main)> GoogleApis.connect :email_address => "", :private_key => "/path/to/private/key.p12"
198
209
  => #<GoogleApis::Connection:0x007ff3d356cbf0 [lorem@developer.gserviceaccount.com]>
199
210
  [2] pry(main)> bq = Google::BigQuery.new :project_id => "your_project_id", :dataset_id => "your_dataset_id"
@@ -206,14 +217,16 @@ You can also define `script/config.yml` containing the connection config:
206
217
  ---
207
218
  email_address: lorem@developer.gserviceaccount.com
208
219
  private_key: "/path/to/private/key.p12"
220
+ project_id: your_project_id
221
+ dataset_id: your_dataset_id
209
222
  ```
210
223
 
211
224
  And immediately start instantiating a Google API:
212
225
 
213
226
  ```ruby
214
227
  $ script/console
215
- Loading Google APIs development environment (0.1.3)
216
- [1] pry(main)> bq = Google::BigQuery.new :project_id => "your_project_id", :dataset_id => "your_dataset_id"
228
+ Loading Google APIs development environment (0.1.4)
229
+ [1] pry(main)> Google::BigQuery.connection
217
230
  => #<Google::BigQuery:0x007fa6c9cc3450 v2:[datasets,jobs,projects,tabledata,tables] {projectId:"your_project_id",datasetId:"your_dataset_id"}>
218
231
  ```
219
232
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.1.4
data/lib/google_apis.rb CHANGED
@@ -10,7 +10,12 @@ module GoogleApis
10
10
  class Error < StandardError; end
11
11
 
12
12
  def self.connect(options)
13
- @connection = Connection.new options
13
+ @config = options.symbolize_keys
14
+ @connection = Connection.new config
15
+ end
16
+
17
+ def self.config
18
+ @config || {}
14
19
  end
15
20
 
16
21
  def self.connection
@@ -27,12 +27,20 @@ module GoogleApis
27
27
  end
28
28
  end
29
29
 
30
+ def default_parameters(*keys)
31
+ if keys.any?
32
+ @default_parameters = keys
33
+ else
34
+ @default_parameters || []
35
+ end
36
+ end
37
+
30
38
  def connect(options = {})
31
39
  @instance = new(options)
32
40
  end
33
41
 
34
42
  def instance
35
- @instance
43
+ @instance || (connect if GoogleApis.connection)
36
44
  end
37
45
 
38
46
  def connection
@@ -6,14 +6,15 @@ module GoogleApis
6
6
  attr_accessor :connection, :discovered_api
7
7
 
8
8
  def initialize(options = {})
9
- options = options.symbolize_keys
9
+ config, params = options.symbolize_keys.partition{|(k, v)| [:email_address, :private_key].include?(k)}.collect{|x| Hash[x]}
10
10
 
11
- config, default_params = options.partition{|(k, v)| [:email_address, :private_key].include?(k)}.collect{|x| Hash[x] unless x.empty?}
12
- @connection = config ? GoogleApis::Connection.new(config) : GoogleApis.connection
11
+ @connection = config.empty? ? GoogleApis.connection : GoogleApis::Connection.new(config)
13
12
  raise Error, "Please ensure a Google API connection" unless @connection
14
13
 
14
+ params = GoogleApis.config.merge(params).inject({}){|h, (k, v)| h[k.to_s.gsub(/_(.)/){$1.upcase}.to_sym] = v if v; h}
15
+
15
16
  @discovered_api = connection.discover_api self.class.api, self.class.version
16
- @default_params = (default_params || {}).inject({}){|h, (k, v)| h[k.to_s.gsub(/_(.)/){$1.upcase}.to_sym] = v; h}
17
+ @default_params = params.select{|k, v| self.class.default_parameters.include?(k)}
17
18
  end
18
19
 
19
20
  def execute(api_method, *params)
@@ -6,6 +6,7 @@ module GoogleApis
6
6
  api "bigquery"
7
7
  version 2
8
8
  auth_scope "https://www.googleapis.com/auth/bigquery"
9
+ default_parameters :projectId, :datasetId
9
10
 
10
11
  def project
11
12
  default_params[:projectId]
@@ -6,6 +6,7 @@ module GoogleApis
6
6
  api "storage"
7
7
  version 1
8
8
  auth_scope "https://www.googleapis.com/auth/devstorage.read_write"
9
+ default_parameters :bucket
9
10
 
10
11
  end
11
12
  end
@@ -1,7 +1,7 @@
1
1
  module GoogleApis
2
2
  MAJOR = 0
3
3
  MINOR = 1
4
- TINY = 3
4
+ TINY = 4
5
5
 
6
6
  VERSION = [MAJOR, MINOR, TINY].join(".")
7
7
  end
@@ -22,6 +22,12 @@ module Unit
22
22
  assert_equal "https://www.googleapis.com/auth/bigquery", GoogleApis::Api::BigQuery.auth_scope
23
23
  end
24
24
  end
25
+
26
+ describe ".default_parameters" do
27
+ it "returns the default API parameters" do
28
+ assert_equal [:projectId, :datasetId], GoogleApis::Api::BigQuery.default_parameters
29
+ end
30
+ end
25
31
  end
26
32
 
27
33
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-apis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Engel
@@ -184,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
184
  version: '0'
185
185
  requirements: []
186
186
  rubyforge_project:
187
- rubygems_version: 2.4.3
187
+ rubygems_version: 2.2.2
188
188
  signing_key:
189
189
  specification_version: 4
190
190
  summary: A thin layer on top of Google::APIClient (google-api-client) for a more intuitive