@@ -21,53 +21,63 @@ Be sure `http://rubygems.org/` is in your gem sources.
21
21
22
22
For normal client usage, this is sufficient:
23
23
24
- $ gem install google-api-client
24
+ ``` bash
25
+ $ gem install google-api-client
26
+ ```
25
27
26
28
## Example Usage
27
29
28
- # Initialize the client & Google+ API
29
- require 'google/api_client'
30
- client = Google::APIClient.new
31
- plus = client.discovered_api('plus')
30
+ ``` ruby
31
+ # Initialize the client & Google+ API
32
+ require ' google/api_client'
33
+ client = Google ::APIClient .new
34
+ plus = client.discovered_api(' plus' )
32
35
33
- # Initialize OAuth 2.0 client
34
- client.authorization.client_id = '<CLIENT_ID_FROM_API_CONSOLE>'
35
- client.authorization.client_secret = '<CLIENT_SECRET>'
36
- client.authorization.redirect_uri = '<YOUR_REDIRECT_URI>'
36
+ # Initialize OAuth 2.0 client
37
+ client.authorization.client_id = ' <CLIENT_ID_FROM_API_CONSOLE>'
38
+ client.authorization.client_secret = ' <CLIENT_SECRET>'
39
+ client.authorization.redirect_uri = ' <YOUR_REDIRECT_URI>'
37
40
38
- client.authorization.scope = 'https://www.googleapis.com/auth/plus.me'
41
+ client.authorization.scope = ' https://www.googleapis.com/auth/plus.me'
39
42
40
- # Request authorization
41
- redirect_uri = client.authorization.authorization_uri
43
+ # Request authorization
44
+ redirect_uri = client.authorization.authorization_uri
42
45
43
- # Wait for authorization code then exchange for token
44
- client.authorization.code = '....'
45
- client.authorization.fetch_access_token!
46
+ # Wait for authorization code then exchange for token
47
+ client.authorization.code = ' ....'
48
+ client.authorization.fetch_access_token!
46
49
47
- # Make an API call
48
- result = client.execute(
49
- :api_method => plus.activities.list,
50
- :parameters => {'collection' => 'public', 'userId' => 'me'}
51
- )
50
+ # Make an API call
51
+ result = client.execute(
52
+ :api_method => plus.activities.list,
53
+ :parameters => {' collection' => ' public' , ' userId' => ' me' }
54
+ )
52
55
53
- puts result.data
56
+ puts result.data
57
+ ```
54
58
55
59
## API Features
56
60
57
61
### API Discovery
58
62
59
63
To take full advantage of the client, load API definitions prior to use. To load an API:
60
64
61
- urlshortener = client.discovered_api('urlshortener')
65
+ ``` ruby
66
+ urlshortener = client.discovered_api(' urlshortener' )
67
+ ```
62
68
63
69
Specific versions of the API can be loaded as well:
64
70
65
- drive = client.discovered_api('drive', 'v2')
71
+ ``` ruby
72
+ drive = client.discovered_api(' drive' , ' v2' )
73
+ ```
66
74
67
75
Locally cached discovery documents may be used as well. To load an API from a local file:
68
76
69
- doc = File.read('my-api.json')
70
- my_api = client.register_discovery_document('myapi', 'v1', doc)
77
+ ``` ruby
78
+ doc = File .read(' my-api.json' )
79
+ my_api = client.register_discovery_document(' myapi' , ' v1' , doc)
80
+ ```
71
81
72
82
### Authorization
73
83
@@ -77,16 +87,17 @@ Credentials can be managed at the connection level, as shown, or supplied on a p
77
87
78
88
For server-to-server interactions, like those between a web application and Google Cloud Storage, Prediction, or BigQuery APIs, use service accounts.
79
89
80
- key = Google::APIClient::KeyUtils.load_from_pkcs12('client.p12', 'notasecret')
81
- client.authorization = Signet::OAuth2::Client.new(
82
- :token_credential_uri => 'https://accounts.google.com/o/oauth2/token',
83
- :audience => 'https://accounts.google.com/o/oauth2/token',
84
- :scope => 'https://www.googleapis.com/auth/prediction',
85
- :issuer => '123456-abcdef@developer.gserviceaccount.com',
86
- :signing_key => key)
87
- client.authorization.fetch_access_token!
88
- client.execute(...)
89
-
90
+ ``` ruby
91
+ key = Google ::APIClient ::KeyUtils .load_from_pkcs12(' client.p12' , ' notasecret' )
92
+ client.authorization = Signet ::OAuth2 ::Client .new (
93
+ :token_credential_uri => ' https://accounts.google.com/o/oauth2/token' ,
94
+ :audience => ' https://accounts.google.com/o/oauth2/token' ,
95
+ :scope => ' https://www.googleapis.com/auth/prediction' ,
96
+ :issuer => ' 123456-abcdef@developer.gserviceaccount.com' ,
97
+ :signing_key => key)
98
+ client.authorization.fetch_access_token!
99
+ client.execute(...)
100
+ ```
90
101
91
102
### Batching Requests
92
103
@@ -95,71 +106,81 @@ to bundle multiple requests together.
95
106
96
107
Example:
97
108
98
- client = Google::APIClient.new
99
- urlshortener = client.discovered_api('urlshortner')
109
+ ``` ruby
110
+ client = Google ::APIClient .new
111
+ urlshortener = client.discovered_api(' urlshortner' )
100
112
101
- batch = Google::APIClient::BatchRequest.new do |result|
102
- puts result.data
103
- end
113
+ batch = Google ::APIClient ::BatchRequest .new do |result |
114
+ puts result.data
115
+ end
104
116
105
- batch.add(:api_method => urlshortener.url.insert,
106
- :body_object => { 'longUrl' => 'http://example.com/foo' })
107
- batch.add(:api_method => urlshortener.url.insert,
108
- :body_object => { 'longUrl' => 'http://example.com/bar' })
109
- client.execute(batch)
117
+ batch.add(:api_method => urlshortener.url.insert,
118
+ :body_object => { ' longUrl' => ' http://example.com/foo' })
119
+ batch.add(:api_method => urlshortener.url.insert,
120
+ :body_object => { ' longUrl' => ' http://example.com/bar' })
121
+ client.execute(batch)
122
+ ```
110
123
111
124
Blocks for handling responses can be specified either at the batch level or when adding an individual API call. For example:
112
125
113
- batch.add(:api_method=>urlshortener.url.insert, :body_object => { 'longUrl' => 'http://example.com/bar' }) do |result|
114
- puts result.data
115
- end
126
+ ``` ruby
127
+ batch.add(:api_method =>urlshortener.url.insert, :body_object => { ' longUrl' => ' http://example.com/bar' }) do |result |
128
+ puts result.data
129
+ end
130
+ ```
116
131
117
132
### Media Upload
118
133
119
134
For APIs that support file uploads, use ` Google::APIClient::UploadIO ` to load the stream. Both multipart and resumable
120
135
uploads can be used. For example, to upload a file to Google Drive using multipart
121
136
122
- drive = client.discovered_api('drive', 'v2')
137
+ ``` ruby
138
+ drive = client.discovered_api(' drive' , ' v2' )
123
139
124
- media = Google::APIClient::UploadIO.new('mymovie.m4v', 'video/mp4')
125
- metadata = {
126
- 'title' => 'My movie',
127
- 'description' => 'The best home movie ever made'
128
- }
129
- client.execute(:api_method => drive.files.insert,
130
- :parameters => { 'uploadType' => 'multipart' },
131
- :body_object => metadata,
132
- :media => media )
140
+ media = Google ::APIClient ::UploadIO .new (' mymovie.m4v' , ' video/mp4' )
141
+ metadata = {
142
+ ' title' => ' My movie' ,
143
+ ' description' => ' The best home movie ever made'
144
+ }
145
+ client.execute(:api_method => drive.files.insert,
146
+ :parameters => { ' uploadType' => ' multipart' },
147
+ :body_object => metadata,
148
+ :media => media )
149
+ ```
133
150
134
151
To use resumable uploads, change the ` uploadType ` parameter to ` resumable ` . To check the status of the upload
135
152
and continue if necessary, check ` result.resumable_upload ` .
136
153
137
- client.execute(:api_method => drive.files.insert,
138
- :parameters => { 'uploadType' => 'resumable' },
139
- :body_object => metadata,
140
- :media => media )
141
- upload = result.resumable_upload
154
+ ``` ruby
155
+ client.execute(:api_method => drive.files.insert,
156
+ :parameters => { ' uploadType' => ' resumable' },
157
+ :body_object => metadata,
158
+ :media => media )
159
+ upload = result.resumable_upload
142
160
143
- # Resume if needed
144
- if upload.resumable?
145
- client.execute(upload)
146
- end
161
+ # Resume if needed
162
+ if upload.resumable?
163
+ client.execute(upload)
164
+ end
165
+ ```
147
166
148
167
## Command Line
149
168
150
169
Included with the gem is a command line interface for working with Google APIs.
151
170
152
- # Log in
153
- google-api oauth-2-login --client-id='...' --client-secret='...' --scope="https://www.googleapis.com/auth/plus.me"
171
+ ``` bash
172
+ # Log in
173
+ google-api oauth-2-login --client-id=' ...' --client-secret=' ...' --scope=" https://www.googleapis.com/auth/plus.me"
154
174
155
- # List the signed-in user's activities
156
- google-api execute plus.activities.list --api=plus -- userId="me" collection="public"
175
+ # List the signed-in user's activities
176
+ google-api execute plus.activities.list --api=plus -- userId=" me" collection=" public"
157
177
158
- # Start an interactive API session
159
- google-api irb
160
- >> plus = $client.discovered_api('plus')
161
- >> $client.execute(plus.activities.list, {'userId' => 'me', 'collection' => 'public'})
162
- => # returns a response from the API
178
+ # Start an interactive API session
179
+ google-api irb
180
+ >> plus = $client .discovered_api(' plus' )
181
+ >> $client .execute(plus.activities.list, {' userId' => ' me' , ' collection' => ' public' })
182
+ => # returns a response from the API
183
+ ```
163
184
164
185
For more information, use ` google-api --help `
165
186
@@ -171,6 +192,3 @@ See the full list of [samples on Google Code](http://code.google.com/p/google-ap
171
192
## Support
172
193
173
194
Please [ report bugs at the project on Google Code] ( http://code.google.com/p/google-api-ruby-client/issues/entry ) . Don't hesitate to [ ask questions] ( http://stackoverflow.com/questions/tagged/google-api-ruby-client ) about the client or APIs on [ StackOverflow] ( http://stackoverflow.com ) .
174
-
175
-
176
-
0 commit comments