google-apis 0.1.0 → 0.1.1
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/CHANGELOG.rdoc +7 -0
- data/README.md +48 -6
- data/VERSION +1 -1
- data/lib/google_apis/api/base/class_methods.rb +9 -1
- data/lib/google_apis/connection.rb +7 -3
- data/lib/google_apis/version.rb +1 -1
- data/test/unit/test_connection.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a7e91a00208cd6eccdb174d912834823f8e1238e
|
4
|
+
data.tar.gz: dd9df318acff7c25053e606bc1d0cf89e6084b4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3938e0f06f08f049b874abebc73008781e56c33611260141517e8fc22bd81e507d0777528006218003834146dde2259a92b8f5d77b8a50feb63fbf1177e0ab2d
|
7
|
+
data.tar.gz: 028c5b6c2d45ec3de407a206462fd54320b0edae9a31667877d852a2bbb7117d3464c74f1ea62c7b8f6fb7979224c024d218f178f79cbde31e11f62340e69f4c
|
data/CHANGELOG.rdoc
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
= Google APIs CHANGELOG
|
2
2
|
|
3
|
+
== Version 0.1.1 (February 10, 2015)
|
4
|
+
|
5
|
+
* Fixed bug: made options optional when invoking `.connect`
|
6
|
+
* Overridden GoogleApis::Connection.inspect for better info
|
7
|
+
* Fixed switching APIs using one global connection
|
8
|
+
* Being able to delegate resource invocation on API class to its connection
|
9
|
+
|
3
10
|
== Version 0.1.0 (February 10, 2015)
|
4
11
|
|
5
12
|
* Initial release
|
data/README.md
CHANGED
@@ -18,11 +18,13 @@ The easiest setup is to define an application-wide Google API connection followe
|
|
18
18
|
|
19
19
|
Make sure you have created a Client ID (application type "Service account") at your projects API credentials page (https://console.developers.google.com/project/your_project_id/apiui/credential).
|
20
20
|
|
21
|
+
Enable the API at your Console API page (https://console.developers.google.com/project/your_project_id/apiui/api).
|
22
|
+
|
21
23
|
Do not forget to download the private key by generating a P12 key file.
|
22
24
|
|
23
25
|
```ruby
|
24
26
|
[1] pry(main)> GoogleApis.connect :email_address => "lorem@developer.gserviceaccount.com", :private_key => "/path/to/private/key.p12"
|
25
|
-
=>
|
27
|
+
=> #<GoogleApis::Connection:0x007fa5a4743668 [lorem@developer.gserviceaccount.com]>
|
26
28
|
[2] pry(main)> bq = Google::BigQuery.new :projectId => "your_project_id", :datasetId => "your_dataset_id"
|
27
29
|
=> #<Google::BigQuery:0x007fc5c68647a8 v2:[datasets,jobs,projects,tabledata,tables] {projectId:"your_project_id",datasetId:"your_dataset_id"}>
|
28
30
|
[3] pry(main)> bq.tables.list
|
@@ -65,7 +67,9 @@ GoogleApis quickly displays the resources and methods a certain API provides.
|
|
65
67
|
"scopes"=>["https://www.googleapis.com/auth/bigquery", "https://www.googleapis.com/auth/cloud-platform"]}
|
66
68
|
```
|
67
69
|
|
68
|
-
#### Application-wide API connections
|
70
|
+
#### Application-wide API connections
|
71
|
+
|
72
|
+
##### Google::BigQuery.connection
|
69
73
|
|
70
74
|
You can also configure an application-wide API connection. Let's say you also stored the connection configuration in `config/bigquery.yml`:
|
71
75
|
|
@@ -82,15 +86,53 @@ You can also configure an application-wide API connection. Let's say you also st
|
|
82
86
|
=> true
|
83
87
|
[2] pry(main)> Google::BigQuery.connect YAML.load_file("config/bigquery.yml")
|
84
88
|
=> #<Google::BigQuery:0x007fdc1c6823b0 v2:[datasets,jobs,projects,tabledata,tables] {projectId:"your_project_id",datasetId:"your_dataset_id"}>
|
85
|
-
[3] pry(main)> Google::BigQuery.
|
89
|
+
[3] pry(main)> Google::BigQuery.jobs
|
86
90
|
=> #<Google::BigQuery::Resource:0x007fdc1e94d5c0 v2:jobs:[get,getQueryResults,insert,list,query]>
|
87
|
-
[4] pry(main)> Google::BigQuery.
|
91
|
+
[4] pry(main)> Google::BigQuery.select_rows "SELECT * FROM [your_dataset_id.awesome_table_19820801] LIMIT 4"
|
88
92
|
=> [["1982-08-01", "Paul is awesome", "Paul", "Engel", 19],
|
89
93
|
["1982-08-01", "GoogleApis is cool", "Google", "Apis", 82],
|
90
94
|
["1982-08-01", "Hello world!", "Foo", "Bar", 8],
|
91
95
|
["1982-08-01", "Try out this gem :)", "It's", "very easy", 1]]
|
92
96
|
```
|
93
97
|
|
98
|
+
Please note that `Google::BigQuery.connection` is provided with several methods resembling ActiveRecord: `#select_rows`, `#select_values` and `#select_value`.
|
99
|
+
|
100
|
+
##### Google::Drive.connection
|
101
|
+
|
102
|
+
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).
|
103
|
+
|
104
|
+
```ruby
|
105
|
+
[1] pry(main)> Google::Drive.connect :email_address => "lorem@developer.gserviceaccount.com", :private_key => "/path/to/private/key.p12"
|
106
|
+
=> #<Google::Drive:0x007f83ee39fcc8 v2:[about,apps,changes,channels,children,comments,files,parents,permissions,properties,realtime,replies,revisions] {}>
|
107
|
+
[2] pry(main)> Google::Drive.files.list
|
108
|
+
=> {"kind"=>"drive#fileList",
|
109
|
+
"etag"=>"\"4GaIn/LoR3M-1pSuM-D0loR-s1T-AM3t\"",
|
110
|
+
"selfLink"=>"https://www.googleapis.com/drive/v2/files",
|
111
|
+
"items"=>
|
112
|
+
[{"kind"=>"drive#file",
|
113
|
+
"id"=>"12-On3Tw0w4ntO0-0neTh0",
|
114
|
+
...
|
115
|
+
```
|
116
|
+
|
117
|
+
#### One Google API connection to rule them all
|
118
|
+
|
119
|
+
If it isn't already clear, you can specify a global Google API connection and use different APIs:
|
120
|
+
|
121
|
+
```ruby
|
122
|
+
[1] pry(main)> GoogleApis.connect :email_address => "lorem@developer.gserviceaccount.com", :private_key => "/path/to/private/key.p12"
|
123
|
+
=> #<GoogleApis::Connection:0x007ffe0aa95d70 [lorem@developer.gserviceaccount.com]>
|
124
|
+
[2] pry(main)> Google::Drive.connect
|
125
|
+
=> #<Google::Drive:0x007fcfec1265b0 v2:[about,apps,changes,channels,children,comments,files,parents,permissions,properties,realtime,replies,revisions] {}>
|
126
|
+
[3] pry(main)> Google::Drive.files.list
|
127
|
+
=> {"kind"=>"drive#fileList",
|
128
|
+
...
|
129
|
+
[4] pry(main)> Google::BigQuery.connect :projectId => "your_project_id", :datasetId => "your_dataset_id"
|
130
|
+
=> #<Google::BigQuery:0x007ffe0b1fb240 v2:[datasets,jobs,projects,tabledata,tables] {projectId:"your_project_id",datasetId:"your_dataset_id"}>
|
131
|
+
[5] pry(main)> Google::BigQuery.tables.list
|
132
|
+
=> {"kind"=>"bigquery#tableList",
|
133
|
+
...
|
134
|
+
```
|
135
|
+
|
94
136
|
### Using the console
|
95
137
|
|
96
138
|
The GoogleApis repo is provided with `script/console` which you can use for development / testing purposes.
|
@@ -100,8 +142,8 @@ Run the following command in your console:
|
|
100
142
|
```ruby
|
101
143
|
$ script/console
|
102
144
|
Loading Google APIs development environment (0.1.0)
|
103
|
-
[1] pry(main)> GoogleApis.connect :email_address => "
|
104
|
-
=>
|
145
|
+
[1] pry(main)> GoogleApis.connect :email_address => "", :private_key => "/path/to/private/key.p12"
|
146
|
+
=> #<GoogleApis::Connection:0x007ff3d356cbf0 [lorem@developer.gserviceaccount.com]>
|
105
147
|
[2] pry(main)> bq = Google::BigQuery.new :projectId => "your_project_id", :datasetId => "your_dataset_id"
|
106
148
|
=> #<Google::BigQuery:0x007f8c09a05338 v2:[datasets,jobs,projects,tabledata,tables] {projectId:"your_project_id",datasetId:"your_dataset_id"}>
|
107
149
|
```
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
@@ -27,7 +27,7 @@ module GoogleApis
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
def connect(options)
|
30
|
+
def connect(options = {})
|
31
31
|
@connection = new(options)
|
32
32
|
end
|
33
33
|
|
@@ -47,6 +47,14 @@ module GoogleApis
|
|
47
47
|
name
|
48
48
|
end
|
49
49
|
|
50
|
+
def method_missing(name, *args)
|
51
|
+
if connection && (connection.class.instance_methods(false).include?(name) || connection.send(:find, name))
|
52
|
+
connection.send(name, *args)
|
53
|
+
else
|
54
|
+
super
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
50
58
|
end
|
51
59
|
end
|
52
60
|
end
|
@@ -16,7 +16,7 @@ module GoogleApis
|
|
16
16
|
|
17
17
|
@asserter = Google::APIClient::JWTAsserter.new(
|
18
18
|
options[:email_address],
|
19
|
-
|
19
|
+
"",
|
20
20
|
key
|
21
21
|
)
|
22
22
|
end
|
@@ -43,11 +43,15 @@ module GoogleApis
|
|
43
43
|
parse! @client.execute(options)
|
44
44
|
end
|
45
45
|
|
46
|
+
def inspect
|
47
|
+
"#<#{self.class}:#{object_hexid} [#{@asserter.issuer}]>"
|
48
|
+
end
|
49
|
+
|
46
50
|
private
|
47
51
|
|
48
52
|
def authenticate!(api)
|
49
|
-
if !@
|
50
|
-
@asserter.scope = api.auth_scope
|
53
|
+
if !@asserter.scope.include?(api.auth_scope) || @client.authorization.expired?
|
54
|
+
@asserter.scope = (@asserter.scope.split(" ") << api.auth_scope).uniq
|
51
55
|
@client.authorization = @asserter.authorize
|
52
56
|
end
|
53
57
|
end
|
data/lib/google_apis/version.rb
CHANGED
@@ -13,7 +13,7 @@ module Unit
|
|
13
13
|
|
14
14
|
File.expects(:open).with("< private_key >", "rb").returns("< file >")
|
15
15
|
Google::APIClient::PKCS12.expects(:load_key).with("< file >", "notasecret").returns("< key >")
|
16
|
-
Google::APIClient::JWTAsserter.expects(:new).with("< email_address >",
|
16
|
+
Google::APIClient::JWTAsserter.expects(:new).with("< email_address >", "", "< key >").returns("< asserter >")
|
17
17
|
|
18
18
|
connection = GoogleApis::Connection.new(
|
19
19
|
:email_address => "< email_address >",
|