google-apis 0.1.7 → 0.2.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 +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.rdoc +5 -0
- data/README.md +11 -12
- data/VERSION +1 -1
- data/lib/google_apis.rb +8 -0
- data/lib/google_apis/connection.rb +6 -12
- data/lib/google_apis/version.rb +2 -2
- data/test/unit/test_connection.rb +6 -5
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b8abfe8e90b604e1864519024ff89a4202b9ff73
|
4
|
+
data.tar.gz: aee2ebae2543cba7bed7e20712be3d3d218cf249
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 773bbb888a374a15f06ef18dc6297251507d4b08e35781effd4268771c1d87ba4825fb0446563a9259a193b492125a9a718f009a6e79036270f9339cdc73a085
|
7
|
+
data.tar.gz: 7429aa5f1ca2848b5b87712c94d13a919008e771aad9200618755a35624ab2722d6a50ce8244b7b09e40b0bed5c2fa7c55ef20ef96ef76e60d5f9f6223a6d0d6
|
data/.gitignore
CHANGED
data/CHANGELOG.rdoc
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
= Google APIs CHANGELOG
|
2
2
|
|
3
|
+
== Version 0.2.0 (December 31, 2017)
|
4
|
+
|
5
|
+
* Tackle gzip error for when using Faraday >= 0.9.2
|
6
|
+
* Solve "Invalid JWT Signature" by using JSON private key
|
7
|
+
|
3
8
|
== Version 0.1.7 (July 16, 2015)
|
4
9
|
|
5
10
|
* Respecting (optionally) passed :content_type or :mime_type option when dealing with upload media
|
data/README.md
CHANGED
@@ -20,10 +20,10 @@ Make sure you have created a Client ID (application type "Service account") at y
|
|
20
20
|
|
21
21
|
Enable the API at your Console API page (https://console.developers.google.com/project/your_project_id/apiui/api).
|
22
22
|
|
23
|
-
Do not forget to download the private key by generating a
|
23
|
+
Do not forget to download the private key by generating a JSON key file.
|
24
24
|
|
25
25
|
```ruby
|
26
|
-
[1] pry(main)> GoogleApis.connect :email_address => "lorem@developer.gserviceaccount.com", :private_key => "/path/to/private/key.
|
26
|
+
[1] pry(main)> GoogleApis.connect :email_address => "lorem@developer.gserviceaccount.com", :private_key => "/path/to/private/key.json"
|
27
27
|
=> #<GoogleApis::Connection:0x007fa5a4743668 [lorem@developer.gserviceaccount.com]>
|
28
28
|
[2] pry(main)> bq = Google::BigQuery.new :project_id => "your_project_id", :dataset_id => "your_dataset_id"
|
29
29
|
=> #<Google::BigQuery:0x007fc5c68647a8 v2:[datasets,jobs,projects,tabledata,tables] {projectId:"your_project_id",datasetId:"your_dataset_id"}>
|
@@ -76,7 +76,7 @@ You can also configure an application-wide API connection. Let's say you also st
|
|
76
76
|
```yaml
|
77
77
|
---
|
78
78
|
email_address: lorem@developer.gserviceaccount.com
|
79
|
-
private_key: "/path/to/private/key.
|
79
|
+
private_key: "/path/to/private/key.json"
|
80
80
|
project_id: your_project_id
|
81
81
|
dataset_id: your_dataset_id
|
82
82
|
```
|
@@ -102,7 +102,7 @@ Please note that `Google::BigQuery.connection` is provided with several methods
|
|
102
102
|
The following example demonstrates how to download and upload a file from Google Storage:
|
103
103
|
|
104
104
|
```ruby
|
105
|
-
[1] pry(main)> Google::Storage.connect :email_address => "lorem@developer.gserviceaccount.com", :private_key => "/path/to/private/key.
|
105
|
+
[1] pry(main)> Google::Storage.connect :email_address => "lorem@developer.gserviceaccount.com", :private_key => "/path/to/private/key.json"
|
106
106
|
=> #<Google::Storage:0x007fe522024f68 v1:[bucketAccessControls,buckets,channels,defaultObjectAccessControls,objectAccessControls,objects] {}>
|
107
107
|
[2] pry(main)> metadata = Google::Storage.objects.list :bucket => "your-bucket", :prefix => "path/to/your/file/awesome.tsv"
|
108
108
|
=> {"kind"=>"storage#objects",
|
@@ -154,7 +154,7 @@ Easy, huh? :)
|
|
154
154
|
Please make sure that you also have created a "Public API access" server key and added your IP to the allowed IPs at the [API credentials page](https://console.developers.google.com/project/your_project_id/apiui/credential).
|
155
155
|
|
156
156
|
```ruby
|
157
|
-
[1] pry(main)> Google::Drive.connect :email_address => "lorem@developer.gserviceaccount.com", :private_key => "/path/to/private/key.
|
157
|
+
[1] pry(main)> Google::Drive.connect :email_address => "lorem@developer.gserviceaccount.com", :private_key => "/path/to/private/key.json"
|
158
158
|
=> #<Google::Drive:0x007f83ee39fcc8 v2:[about,apps,changes,channels,children,comments,files,parents,permissions,properties,realtime,replies,revisions] {}>
|
159
159
|
[2] pry(main)> Google::Drive.files.list
|
160
160
|
=> {"kind"=>"drive#fileList",
|
@@ -173,7 +173,7 @@ If it isn't already clear, you can specify a global Google API connection and us
|
|
173
173
|
```yaml
|
174
174
|
---
|
175
175
|
email_address: lorem@developer.gserviceaccount.com
|
176
|
-
private_key: "/path/to/private/key.
|
176
|
+
private_key: "/path/to/private/key.json"
|
177
177
|
project_id: your_project_id
|
178
178
|
dataset_id: your_dataset_id
|
179
179
|
bucket: your_bucket
|
@@ -205,8 +205,8 @@ Run the following command in your console:
|
|
205
205
|
|
206
206
|
```ruby
|
207
207
|
$ script/console
|
208
|
-
Loading Google APIs development environment (0.
|
209
|
-
[1] pry(main)> GoogleApis.connect :email_address => "lorem@developer.gserviceaccount.com", :private_key => "/path/to/private/key.
|
208
|
+
Loading Google APIs development environment (0.2.0)
|
209
|
+
[1] pry(main)> GoogleApis.connect :email_address => "lorem@developer.gserviceaccount.com", :private_key => "/path/to/private/key.json"
|
210
210
|
=> #<GoogleApis::Connection:0x007ff3d356cbf0 [lorem@developer.gserviceaccount.com]>
|
211
211
|
[2] pry(main)> bq = Google::BigQuery.new :project_id => "your_project_id", :dataset_id => "your_dataset_id"
|
212
212
|
=> #<Google::BigQuery:0x007f8c09a05338 v2:[datasets,jobs,projects,tabledata,tables] {projectId:"your_project_id",datasetId:"your_dataset_id"}>
|
@@ -217,7 +217,7 @@ You can also define `script/config.yml` containing the connection config:
|
|
217
217
|
```yaml
|
218
218
|
---
|
219
219
|
email_address: lorem@developer.gserviceaccount.com
|
220
|
-
private_key: "/path/to/private/key.
|
220
|
+
private_key: "/path/to/private/key.json"
|
221
221
|
project_id: your_project_id
|
222
222
|
dataset_id: your_dataset_id
|
223
223
|
```
|
@@ -226,7 +226,7 @@ And immediately start instantiating a Google API:
|
|
226
226
|
|
227
227
|
```ruby
|
228
228
|
$ script/console
|
229
|
-
Loading Google APIs development environment (0.
|
229
|
+
Loading Google APIs development environment (0.2.0)
|
230
230
|
[1] pry(main)> Google::BigQuery.connection
|
231
231
|
=> #<Google::BigQuery:0x007fa6c9cc3450 v2:[datasets,jobs,projects,tabledata,tables] {projectId:"your_project_id",datasetId:"your_dataset_id"}>
|
232
232
|
```
|
@@ -248,11 +248,10 @@ Please feel free to fork this repository and send in pull requests to help impro
|
|
248
248
|
### TODO
|
249
249
|
|
250
250
|
* Add more Google API definitions (see [google-apis/lib/google_apis/api](https://github.com/archan937/google-apis/tree/master/lib/google_apis/api))
|
251
|
-
* Add more tests
|
252
251
|
|
253
252
|
### License
|
254
253
|
|
255
|
-
Copyright (c)
|
254
|
+
Copyright (c) 2017 Paul Engel, released under the MIT License
|
256
255
|
|
257
256
|
http://github.com/archan937 – http://twitter.com/archan937 – http://gettopup.com – pm_engel@icloud.com
|
258
257
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/google_apis.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "google/api_client"
|
2
|
+
require "googleauth"
|
2
3
|
|
3
4
|
require "google_apis/core_ext"
|
4
5
|
require "google_apis/connection"
|
@@ -24,4 +25,11 @@ module GoogleApis
|
|
24
25
|
|
25
26
|
end
|
26
27
|
|
28
|
+
# Use httpclient to avoid broken pipe errors with large uploads
|
27
29
|
Faraday.default_adapter = :httpclient
|
30
|
+
|
31
|
+
# Only add the following statement if using Faraday >= 0.9.2
|
32
|
+
# Override gzip middleware with no-op for httpclient
|
33
|
+
if (Faraday::VERSION.split(".").collect(&:to_i) <=> [0, 9, 2]) > -1
|
34
|
+
Faraday::Response.register_middleware :gzip => Faraday::Response::Middleware
|
35
|
+
end
|
@@ -12,15 +12,9 @@ module GoogleApis
|
|
12
12
|
:application_version => GoogleApis::VERSION
|
13
13
|
)
|
14
14
|
|
15
|
-
|
16
|
-
File.open(options[:private_key], "rb"),
|
17
|
-
|
18
|
-
)
|
19
|
-
|
20
|
-
@asserter = Google::APIClient::JWTAsserter.new(
|
21
|
-
options[:email_address],
|
22
|
-
"",
|
23
|
-
key
|
15
|
+
@client.authorization = Google::Auth::ServiceAccountCredentials.make_creds(
|
16
|
+
json_key_io: File.open(options[:private_key], "rb"),
|
17
|
+
scope: []
|
24
18
|
)
|
25
19
|
end
|
26
20
|
|
@@ -79,9 +73,9 @@ module GoogleApis
|
|
79
73
|
end
|
80
74
|
|
81
75
|
def authenticate!(api)
|
82
|
-
if !@
|
83
|
-
@
|
84
|
-
@client.authorization
|
76
|
+
if !@client.authorization.scope.include?(api.auth_scope) || @client.authorization.expired?
|
77
|
+
@client.authorization.scope.push(api.auth_scope).uniq!
|
78
|
+
@client.authorization.fetch_access_token!
|
85
79
|
end
|
86
80
|
end
|
87
81
|
|
data/lib/google_apis/version.rb
CHANGED
@@ -6,22 +6,23 @@ module Unit
|
|
6
6
|
describe GoogleApis::Connection do
|
7
7
|
describe "#initialize" do
|
8
8
|
it "instantiates a Google::APIClient and Google::APIClient::JWTAsserter" do
|
9
|
+
client = mock()
|
10
|
+
client.expects(:authorization=).with("< authorization >")
|
11
|
+
|
9
12
|
Google::APIClient.expects(:new).with({
|
10
13
|
:application_name => "rubygem:google-apis",
|
11
14
|
:application_version => GoogleApis::VERSION
|
12
|
-
}).returns(
|
15
|
+
}).returns(client)
|
13
16
|
|
14
17
|
File.expects(:open).with("< private_key >", "rb").returns("< file >")
|
15
|
-
Google::
|
16
|
-
Google::APIClient::JWTAsserter.expects(:new).with("< email_address >", "", "< key >").returns("< asserter >")
|
18
|
+
Google::Auth::ServiceAccountCredentials.expects(:make_creds).returns("< authorization >")
|
17
19
|
|
18
20
|
connection = GoogleApis::Connection.new(
|
19
21
|
:email_address => "< email_address >",
|
20
22
|
:private_key => "< private_key >"
|
21
23
|
)
|
22
24
|
|
23
|
-
assert_equal
|
24
|
-
assert_equal "< asserter >", connection.instance_variable_get(:@asserter)
|
25
|
+
assert_equal client, connection.instance_variable_get(:@client)
|
25
26
|
end
|
26
27
|
end
|
27
28
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-apis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Engel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-12-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-api-client
|
@@ -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.
|
187
|
+
rubygems_version: 2.4.5.1
|
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
|
@@ -200,4 +200,3 @@ test_files:
|
|
200
200
|
- test/unit/core_ext/test_kernel.rb
|
201
201
|
- test/unit/test_connection.rb
|
202
202
|
- test/unit/test_google_apis.rb
|
203
|
-
has_rdoc:
|