google-api-client 0.9.8 → 0.9.15

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 (197) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -0
  3. data/Gemfile +9 -1
  4. data/README.md +10 -2
  5. data/api_names.yaml +61 -110
  6. data/generated/google/apis/adexchangebuyer_v1_4.rb +1 -1
  7. data/generated/google/apis/adexchangebuyer_v1_4/classes.rb +160 -9
  8. data/generated/google/apis/adexchangebuyer_v1_4/representations.rb +46 -0
  9. data/generated/google/apis/adexchangebuyer_v1_4/service.rb +22 -8
  10. data/generated/google/apis/adexchangeseller_v2_0.rb +2 -3
  11. data/generated/google/apis/adexchangeseller_v2_0/service.rb +1 -2
  12. data/generated/google/apis/admin_directory_v1.rb +1 -1
  13. data/generated/google/apis/admin_directory_v1/classes.rb +6 -0
  14. data/generated/google/apis/admin_directory_v1/representations.rb +1 -0
  15. data/generated/google/apis/admin_directory_v1/service.rb +2 -2
  16. data/generated/google/apis/admin_reports_v1.rb +3 -3
  17. data/generated/google/apis/admin_reports_v1/service.rb +2 -2
  18. data/generated/google/apis/adsense_v1_4.rb +1 -1
  19. data/generated/google/apis/adsensehost_v4_1.rb +1 -1
  20. data/generated/google/apis/analytics_v3.rb +1 -1
  21. data/generated/google/apis/analytics_v3/classes.rb +371 -1
  22. data/generated/google/apis/analytics_v3/representations.rb +135 -0
  23. data/generated/google/apis/analytics_v3/service.rb +218 -0
  24. data/generated/google/apis/analyticsreporting_v4.rb +1 -1
  25. data/generated/google/apis/analyticsreporting_v4/classes.rb +50 -22
  26. data/generated/google/apis/androidenterprise_v1.rb +1 -1
  27. data/generated/google/apis/androidenterprise_v1/classes.rb +722 -48
  28. data/generated/google/apis/androidenterprise_v1/representations.rb +305 -0
  29. data/generated/google/apis/androidenterprise_v1/service.rb +1180 -146
  30. data/generated/google/apis/androidpublisher_v2.rb +1 -1
  31. data/generated/google/apis/androidpublisher_v2/classes.rb +9 -8
  32. data/generated/google/apis/appengine_v1beta5.rb +1 -1
  33. data/generated/google/apis/appengine_v1beta5/classes.rb +430 -288
  34. data/generated/google/apis/appengine_v1beta5/representations.rb +84 -10
  35. data/generated/google/apis/appengine_v1beta5/service.rb +285 -25
  36. data/generated/google/apis/appsactivity_v1.rb +1 -1
  37. data/generated/google/apis/appstate_v1.rb +1 -1
  38. data/generated/google/apis/bigquery_v2.rb +1 -1
  39. data/generated/google/apis/bigquery_v2/classes.rb +254 -6
  40. data/generated/google/apis/bigquery_v2/representations.rb +85 -0
  41. data/generated/google/apis/bigquery_v2/service.rb +8 -2
  42. data/generated/google/apis/books_v1.rb +2 -2
  43. data/generated/google/apis/books_v1/classes.rb +77 -0
  44. data/generated/google/apis/books_v1/representations.rb +34 -0
  45. data/generated/google/apis/books_v1/service.rb +7 -3
  46. data/generated/google/apis/calendar_v3.rb +1 -1
  47. data/generated/google/apis/civicinfo_v2.rb +3 -2
  48. data/generated/google/apis/civicinfo_v2/classes.rb +16 -4
  49. data/generated/google/apis/civicinfo_v2/representations.rb +2 -0
  50. data/generated/google/apis/civicinfo_v2/service.rb +8 -2
  51. data/generated/google/apis/classroom_v1.rb +1 -1
  52. data/generated/google/apis/classroom_v1/classes.rb +176 -37
  53. data/generated/google/apis/classroom_v1/representations.rb +73 -9
  54. data/generated/google/apis/classroom_v1/service.rb +392 -37
  55. data/generated/google/apis/cloudbuild_v1.rb +1 -1
  56. data/generated/google/apis/cloudbuild_v1/classes.rb +320 -12
  57. data/generated/google/apis/cloudbuild_v1/representations.rb +136 -2
  58. data/generated/google/apis/cloudbuild_v1/service.rb +174 -1
  59. data/generated/google/apis/clouddebugger_v2.rb +3 -6
  60. data/generated/google/apis/clouddebugger_v2/service.rb +4 -4
  61. data/generated/google/apis/cloudmonitoring_v2beta2.rb +1 -1
  62. data/generated/google/apis/cloudresourcemanager_v1.rb +1 -1
  63. data/generated/google/apis/cloudresourcemanager_v1/classes.rb +157 -3
  64. data/generated/google/apis/cloudresourcemanager_v1/representations.rb +33 -0
  65. data/generated/google/apis/cloudresourcemanager_v1/service.rb +60 -21
  66. data/generated/google/apis/cloudresourcemanager_v1beta1.rb +1 -1
  67. data/generated/google/apis/cloudresourcemanager_v1beta1/classes.rb +22 -5
  68. data/generated/google/apis/cloudresourcemanager_v1beta1/representations.rb +2 -0
  69. data/generated/google/apis/cloudresourcemanager_v1beta1/service.rb +61 -39
  70. data/generated/google/apis/compute_beta.rb +1 -1
  71. data/generated/google/apis/compute_beta/classes.rb +1620 -199
  72. data/generated/google/apis/compute_beta/representations.rb +563 -0
  73. data/generated/google/apis/compute_beta/service.rb +5123 -2690
  74. data/generated/google/apis/compute_v1.rb +1 -1
  75. data/generated/google/apis/compute_v1/classes.rb +1717 -295
  76. data/generated/google/apis/compute_v1/representations.rb +536 -0
  77. data/generated/google/apis/compute_v1/service.rb +2038 -1041
  78. data/generated/google/apis/content_v2.rb +1 -1
  79. data/generated/google/apis/content_v2/classes.rb +709 -1
  80. data/generated/google/apis/content_v2/representations.rb +319 -0
  81. data/generated/google/apis/content_v2/service.rb +244 -0
  82. data/generated/google/apis/datastore_v1.rb +38 -0
  83. data/generated/google/apis/datastore_v1/classes.rb +1284 -0
  84. data/generated/google/apis/datastore_v1/representations.rb +572 -0
  85. data/generated/google/apis/datastore_v1/service.rb +259 -0
  86. data/generated/google/apis/datastore_v1beta3.rb +38 -0
  87. data/generated/google/apis/datastore_v1beta3/classes.rb +1284 -0
  88. data/generated/google/apis/datastore_v1beta3/representations.rb +572 -0
  89. data/generated/google/apis/datastore_v1beta3/service.rb +259 -0
  90. data/generated/google/apis/deploymentmanager_v2.rb +1 -1
  91. data/generated/google/apis/deploymentmanager_v2/classes.rb +384 -2
  92. data/generated/google/apis/deploymentmanager_v2/representations.rb +161 -0
  93. data/generated/google/apis/deploymentmanager_v2/service.rb +162 -50
  94. data/generated/google/apis/dfareporting_v2_5.rb +40 -0
  95. data/generated/google/apis/dfareporting_v2_5/classes.rb +11225 -0
  96. data/generated/google/apis/dfareporting_v2_5/representations.rb +3982 -0
  97. data/generated/google/apis/dfareporting_v2_5/service.rb +8755 -0
  98. data/generated/google/apis/dfareporting_v2_6.rb +40 -0
  99. data/generated/google/apis/dfareporting_v2_6/classes.rb +11585 -0
  100. data/generated/google/apis/dfareporting_v2_6/representations.rb +4119 -0
  101. data/generated/google/apis/dfareporting_v2_6/service.rb +9006 -0
  102. data/generated/google/apis/dns_v1.rb +1 -1
  103. data/generated/google/apis/dns_v1/classes.rb +1 -1
  104. data/generated/google/apis/doubleclickbidmanager_v1.rb +1 -1
  105. data/generated/google/apis/doubleclicksearch_v2.rb +1 -1
  106. data/generated/google/apis/drive_v2.rb +1 -1
  107. data/generated/google/apis/drive_v2/classes.rb +11 -3
  108. data/generated/google/apis/drive_v2/representations.rb +2 -0
  109. data/generated/google/apis/drive_v2/service.rb +8 -2
  110. data/generated/google/apis/drive_v3.rb +1 -1
  111. data/generated/google/apis/drive_v3/classes.rb +36 -16
  112. data/generated/google/apis/drive_v3/representations.rb +2 -0
  113. data/generated/google/apis/drive_v3/service.rb +4 -1
  114. data/generated/google/apis/fitness_v1.rb +8 -2
  115. data/generated/google/apis/fitness_v1/classes.rb +64 -6
  116. data/generated/google/apis/fitness_v1/representations.rb +20 -0
  117. data/generated/google/apis/fitness_v1/service.rb +17 -18
  118. data/generated/google/apis/fusiontables_v2.rb +1 -1
  119. data/generated/google/apis/fusiontables_v2/classes.rb +4 -3
  120. data/generated/google/apis/games_configuration_v1configuration.rb +1 -1
  121. data/generated/google/apis/games_management_v1management.rb +1 -1
  122. data/generated/google/apis/games_v1.rb +1 -1
  123. data/generated/google/apis/genomics_v1.rb +2 -4
  124. data/generated/google/apis/genomics_v1/classes.rb +111 -9
  125. data/generated/google/apis/genomics_v1/representations.rb +36 -0
  126. data/generated/google/apis/genomics_v1/service.rb +4 -7
  127. data/generated/google/apis/gmail_v1.rb +7 -1
  128. data/generated/google/apis/gmail_v1/classes.rb +540 -0
  129. data/generated/google/apis/gmail_v1/representations.rb +213 -0
  130. data/generated/google/apis/gmail_v1/service.rb +898 -1
  131. data/generated/google/apis/groupssettings_v1.rb +1 -1
  132. data/generated/google/apis/groupssettings_v1/classes.rb +12 -0
  133. data/generated/google/apis/groupssettings_v1/representations.rb +2 -0
  134. data/generated/google/apis/identitytoolkit_v3.rb +1 -1
  135. data/generated/google/apis/identitytoolkit_v3/classes.rb +154 -1
  136. data/generated/google/apis/identitytoolkit_v3/representations.rb +35 -0
  137. data/generated/google/apis/language_v1beta1.rb +36 -0
  138. data/generated/google/apis/language_v1beta1/classes.rb +596 -0
  139. data/generated/google/apis/language_v1beta1/representations.rb +289 -0
  140. data/generated/google/apis/language_v1beta1/service.rb +154 -0
  141. data/generated/google/apis/mirror_v1.rb +2 -2
  142. data/generated/google/apis/mirror_v1/service.rb +1 -1
  143. data/generated/google/apis/monitoring_v3.rb +45 -0
  144. data/generated/google/apis/monitoring_v3/classes.rb +1328 -0
  145. data/generated/google/apis/monitoring_v3/representations.rb +516 -0
  146. data/generated/google/apis/monitoring_v3/service.rb +711 -0
  147. data/generated/google/apis/oauth2_v2.rb +1 -1
  148. data/generated/google/apis/pagespeedonline_v2.rb +1 -1
  149. data/generated/google/apis/plus_domains_v1.rb +1 -1
  150. data/generated/google/apis/plus_v1.rb +1 -1
  151. data/generated/google/apis/qpx_express_v1.rb +1 -1
  152. data/generated/google/apis/qpx_express_v1/classes.rb +6 -0
  153. data/generated/google/apis/qpx_express_v1/representations.rb +1 -0
  154. data/generated/google/apis/replicapool_v1beta2.rb +1 -1
  155. data/generated/google/apis/script_v1.rb +1 -1
  156. data/generated/google/apis/script_v1/classes.rb +6 -0
  157. data/generated/google/apis/script_v1/representations.rb +1 -0
  158. data/generated/google/apis/sheets_v4.rb +1 -1
  159. data/generated/google/apis/sheets_v4/classes.rb +35 -0
  160. data/generated/google/apis/sheets_v4/representations.rb +16 -0
  161. data/generated/google/apis/sheets_v4/service.rb +55 -0
  162. data/generated/google/apis/speech_v1beta1.rb +34 -0
  163. data/generated/google/apis/speech_v1beta1/classes.rb +521 -0
  164. data/generated/google/apis/speech_v1beta1/representations.rb +219 -0
  165. data/generated/google/apis/speech_v1beta1/service.rb +268 -0
  166. data/generated/google/apis/sqladmin_v1beta4.rb +1 -1
  167. data/generated/google/apis/sqladmin_v1beta4/classes.rb +26 -8
  168. data/generated/google/apis/sqladmin_v1beta4/representations.rb +2 -0
  169. data/generated/google/apis/sqladmin_v1beta4/service.rb +42 -0
  170. data/generated/google/apis/storage_v1.rb +1 -1
  171. data/generated/google/apis/storage_v1/classes.rb +19 -10
  172. data/generated/google/apis/translate_v2.rb +2 -2
  173. data/generated/google/apis/translate_v2/service.rb +1 -1
  174. data/generated/google/apis/vision_v1.rb +1 -1
  175. data/generated/google/apis/vision_v1/classes.rb +10 -9
  176. data/generated/google/apis/youtube_partner_v1.rb +1 -1
  177. data/generated/google/apis/youtube_partner_v1/classes.rb +6 -0
  178. data/generated/google/apis/youtube_partner_v1/representations.rb +2 -0
  179. data/generated/google/apis/youtube_partner_v1/service.rb +15 -3
  180. data/generated/google/apis/youtube_v3.rb +1 -1
  181. data/generated/google/apis/youtube_v3/classes.rb +163 -2
  182. data/generated/google/apis/youtube_v3/representations.rb +82 -0
  183. data/generated/google/apis/youtube_v3/service.rb +6 -2
  184. data/generated/google/apis/youtubereporting_v1.rb +1 -1
  185. data/google-api-client.gemspec +2 -1
  186. data/lib/google/apis/core/api_command.rb +4 -0
  187. data/lib/google/apis/core/base_service.rb +10 -4
  188. data/lib/google/apis/core/download.rb +7 -2
  189. data/lib/google/apis/core/http_command.rb +5 -1
  190. data/lib/google/apis/core/upload.rb +7 -1
  191. data/lib/google/apis/errors.rb +2 -2
  192. data/lib/google/apis/generator/annotator.rb +6 -0
  193. data/lib/google/apis/version.rb +1 -1
  194. data/samples/cli/lib/samples/bigquery.rb +101 -0
  195. data/samples/cli/lib/samples/sheets.rb +61 -0
  196. data/sync.rb +71 -0
  197. metadata +43 -13
@@ -574,6 +574,36 @@ module Google
574
574
  include Google::Apis::Core::JsonObjectSupport
575
575
  end
576
576
 
577
+ class LiveChatPollClosedDetails
578
+ class Representation < Google::Apis::Core::JsonRepresentation; end
579
+
580
+ include Google::Apis::Core::JsonObjectSupport
581
+ end
582
+
583
+ class LiveChatPollEditedDetails
584
+ class Representation < Google::Apis::Core::JsonRepresentation; end
585
+
586
+ include Google::Apis::Core::JsonObjectSupport
587
+ end
588
+
589
+ class LiveChatPollItem
590
+ class Representation < Google::Apis::Core::JsonRepresentation; end
591
+
592
+ include Google::Apis::Core::JsonObjectSupport
593
+ end
594
+
595
+ class LiveChatPollOpenedDetails
596
+ class Representation < Google::Apis::Core::JsonRepresentation; end
597
+
598
+ include Google::Apis::Core::JsonObjectSupport
599
+ end
600
+
601
+ class LiveChatPollVotedDetails
602
+ class Representation < Google::Apis::Core::JsonRepresentation; end
603
+
604
+ include Google::Apis::Core::JsonObjectSupport
605
+ end
606
+
577
607
  class LiveChatTextMessageDetails
578
608
  class Representation < Google::Apis::Core::JsonRepresentation; end
579
609
 
@@ -1689,6 +1719,7 @@ module Google
1689
1719
  property :fco_rating, as: 'fcoRating'
1690
1720
  property :fmoc_rating, as: 'fmocRating'
1691
1721
  property :fpb_rating, as: 'fpbRating'
1722
+ collection :fpb_rating_reasons, as: 'fpbRatingReasons'
1692
1723
  property :fsk_rating, as: 'fskRating'
1693
1724
  property :grfilm_rating, as: 'grfilmRating'
1694
1725
  property :icaa_rating, as: 'icaaRating'
@@ -2202,6 +2233,14 @@ module Google
2202
2233
 
2203
2234
  property :message_retracted_details, as: 'messageRetractedDetails', class: Google::Apis::YoutubeV3::LiveChatMessageRetractedDetails, decorator: Google::Apis::YoutubeV3::LiveChatMessageRetractedDetails::Representation
2204
2235
 
2236
+ property :poll_closed_details, as: 'pollClosedDetails', class: Google::Apis::YoutubeV3::LiveChatPollClosedDetails, decorator: Google::Apis::YoutubeV3::LiveChatPollClosedDetails::Representation
2237
+
2238
+ property :poll_edited_details, as: 'pollEditedDetails', class: Google::Apis::YoutubeV3::LiveChatPollEditedDetails, decorator: Google::Apis::YoutubeV3::LiveChatPollEditedDetails::Representation
2239
+
2240
+ property :poll_opened_details, as: 'pollOpenedDetails', class: Google::Apis::YoutubeV3::LiveChatPollOpenedDetails, decorator: Google::Apis::YoutubeV3::LiveChatPollOpenedDetails::Representation
2241
+
2242
+ property :poll_voted_details, as: 'pollVotedDetails', class: Google::Apis::YoutubeV3::LiveChatPollVotedDetails, decorator: Google::Apis::YoutubeV3::LiveChatPollVotedDetails::Representation
2243
+
2205
2244
  property :published_at, as: 'publishedAt', type: DateTime
2206
2245
 
2207
2246
  property :text_message_details, as: 'textMessageDetails', class: Google::Apis::YoutubeV3::LiveChatTextMessageDetails, decorator: Google::Apis::YoutubeV3::LiveChatTextMessageDetails::Representation
@@ -2250,6 +2289,49 @@ module Google
2250
2289
  end
2251
2290
  end
2252
2291
 
2292
+ class LiveChatPollClosedDetails
2293
+ # @private
2294
+ class Representation < Google::Apis::Core::JsonRepresentation
2295
+ property :poll_id, as: 'pollId'
2296
+ end
2297
+ end
2298
+
2299
+ class LiveChatPollEditedDetails
2300
+ # @private
2301
+ class Representation < Google::Apis::Core::JsonRepresentation
2302
+ property :id, as: 'id'
2303
+ collection :items, as: 'items', class: Google::Apis::YoutubeV3::LiveChatPollItem, decorator: Google::Apis::YoutubeV3::LiveChatPollItem::Representation
2304
+
2305
+ property :prompt, as: 'prompt'
2306
+ end
2307
+ end
2308
+
2309
+ class LiveChatPollItem
2310
+ # @private
2311
+ class Representation < Google::Apis::Core::JsonRepresentation
2312
+ property :description, as: 'description'
2313
+ property :item_id, as: 'itemId'
2314
+ end
2315
+ end
2316
+
2317
+ class LiveChatPollOpenedDetails
2318
+ # @private
2319
+ class Representation < Google::Apis::Core::JsonRepresentation
2320
+ property :id, as: 'id'
2321
+ collection :items, as: 'items', class: Google::Apis::YoutubeV3::LiveChatPollItem, decorator: Google::Apis::YoutubeV3::LiveChatPollItem::Representation
2322
+
2323
+ property :prompt, as: 'prompt'
2324
+ end
2325
+ end
2326
+
2327
+ class LiveChatPollVotedDetails
2328
+ # @private
2329
+ class Representation < Google::Apis::Core::JsonRepresentation
2330
+ property :item_id, as: 'itemId'
2331
+ property :poll_id, as: 'pollId'
2332
+ end
2333
+ end
2334
+
2253
2335
  class LiveChatTextMessageDetails
2254
2336
  # @private
2255
2337
  class Representation < Google::Apis::Core::JsonRepresentation
@@ -3622,9 +3622,12 @@ module Google
3622
3622
  # @param [Boolean] mine
3623
3623
  # Set this parameter's value to true to retrieve a feed of the authenticated
3624
3624
  # user's subscriptions.
3625
+ # @param [Boolean] my_recent_subscribers
3626
+ # Set this parameter's value to true to retrieve a feed of the subscribers of
3627
+ # the authenticated user in reverse chronological order (newest first).
3625
3628
  # @param [Boolean] my_subscribers
3626
3629
  # Set this parameter's value to true to retrieve a feed of the subscribers of
3627
- # the authenticated user.
3630
+ # the authenticated user in no particular order.
3628
3631
  # @param [String] on_behalf_of_content_owner
3629
3632
  # Note: This parameter is intended exclusively for YouTube content partners.
3630
3633
  # The onBehalfOfContentOwner parameter indicates that the request's
@@ -3679,7 +3682,7 @@ module Google
3679
3682
  # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
3680
3683
  # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
3681
3684
  # @raise [Google::Apis::AuthorizationError] Authorization is required
3682
- def list_subscriptions(part, channel_id: nil, for_channel_id: nil, id: nil, max_results: nil, mine: nil, my_subscribers: nil, on_behalf_of_content_owner: nil, on_behalf_of_content_owner_channel: nil, order: nil, page_token: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
3685
+ def list_subscriptions(part, channel_id: nil, for_channel_id: nil, id: nil, max_results: nil, mine: nil, my_recent_subscribers: nil, my_subscribers: nil, on_behalf_of_content_owner: nil, on_behalf_of_content_owner_channel: nil, order: nil, page_token: nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
3683
3686
  command = make_simple_command(:get, 'subscriptions', options)
3684
3687
  command.response_representation = Google::Apis::YoutubeV3::ListSubscriptionResponse::Representation
3685
3688
  command.response_class = Google::Apis::YoutubeV3::ListSubscriptionResponse
@@ -3688,6 +3691,7 @@ module Google
3688
3691
  command.query['id'] = id unless id.nil?
3689
3692
  command.query['maxResults'] = max_results unless max_results.nil?
3690
3693
  command.query['mine'] = mine unless mine.nil?
3694
+ command.query['myRecentSubscribers'] = my_recent_subscribers unless my_recent_subscribers.nil?
3691
3695
  command.query['mySubscribers'] = my_subscribers unless my_subscribers.nil?
3692
3696
  command.query['onBehalfOfContentOwner'] = on_behalf_of_content_owner unless on_behalf_of_content_owner.nil?
3693
3697
  command.query['onBehalfOfContentOwnerChannel'] = on_behalf_of_content_owner_channel unless on_behalf_of_content_owner_channel.nil?
@@ -26,7 +26,7 @@ module Google
26
26
  # @see https://developers.google.com/youtube/reporting/v1/reports/
27
27
  module YoutubereportingV1
28
28
  VERSION = 'V1'
29
- REVISION = '20160517'
29
+ REVISION = '20160719'
30
30
 
31
31
  # View monetary and non-monetary YouTube Analytics reports for your YouTube content
32
32
  AUTH_YT_ANALYTICS_MONETARY_READONLY = 'https://www.googleapis.com/auth/yt-analytics-monetary.readonly'
@@ -26,7 +26,8 @@ Gem::Specification.new do |spec|
26
26
  spec.add_runtime_dependency 'mime-types', '>= 1.6'
27
27
  spec.add_runtime_dependency 'hurley', '~> 0.1'
28
28
  spec.add_runtime_dependency 'googleauth', '~> 0.5'
29
- spec.add_runtime_dependency 'thor', '~> 0.19'
30
29
  spec.add_runtime_dependency 'httpclient', '~> 2.7'
31
30
  spec.add_runtime_dependency 'memoist', '~> 0.11'
31
+
32
+ spec.add_development_dependency 'thor', '~> 0.19'
32
33
  end
@@ -105,6 +105,10 @@ module Google
105
105
  end
106
106
  end
107
107
 
108
+ def allow_form_encoding?
109
+ request_representation.nil? && super
110
+ end
111
+
108
112
  private
109
113
 
110
114
  # Attempt to parse a JSON error message, returning the first found error
@@ -63,10 +63,16 @@ module Google
63
63
  item_count = 0
64
64
  loop do
65
65
  @last_result = @fetch_proc.call(page_token)
66
- for item in @last_result.send(@items_field)
67
- item_count = item_count + 1
68
- break if @max && item_count > @max
69
- yield item
66
+ items = @last_result.send(@items_field)
67
+ if items.kind_of?(Array)
68
+ for item in items
69
+ item_count = item_count + 1
70
+ break if @max && item_count > @max
71
+ yield item
72
+ end
73
+ elsif items
74
+ # yield singular non-nil items (for genomics API)
75
+ yield items
70
76
  end
71
77
  break if @max && item_count >= @max
72
78
  break if @last_result.next_page_token.nil? || @last_result.next_page_token == page_token
@@ -23,6 +23,7 @@ module Google
23
23
  # Streaming/resumable media download support
24
24
  class DownloadCommand < ApiCommand
25
25
  RANGE_HEADER = 'range'
26
+ OK_STATUS = [200, 201, 206]
26
27
 
27
28
  # File or IO to write content to
28
29
  # @return [String, File, #write]
@@ -65,7 +66,7 @@ module Google
65
66
  # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
66
67
  # @raise [Google::Apis::AuthorizationError] Authorization is required
67
68
  def execute_once(client, &block)
68
- client.get(@download_url || url) do |req|
69
+ response = client.get(@download_url || url) do |req|
69
70
  apply_request_options(req)
70
71
  check_if_rewind_needed = false
71
72
  if @offset > 0
@@ -73,7 +74,7 @@ module Google
73
74
  req.header[RANGE_HEADER] = sprintf('bytes=%d-', @offset)
74
75
  check_if_rewind_needed = true
75
76
  end
76
- req.on_body(200, 201, 206) do |res, chunk|
77
+ req.on_body(*OK_STATUS) do |res, chunk|
77
78
  check_status(res.status_code, chunk) unless res.status_code.nil?
78
79
  if check_if_rewind_needed && res.status_code != 206
79
80
  # Oh no! Requested a chunk, but received the entire content
@@ -88,6 +89,10 @@ module Google
88
89
  @download_io.flush
89
90
  end
90
91
  end
92
+
93
+ # Since the on_body block only runs on success, check status again just in case it failed
94
+ check_status(response.status_code, response.body) unless OK_STATUS.include?(response.status_code.to_i)
95
+
91
96
  if @close_io_on_finish
92
97
  result = nil
93
98
  else
@@ -146,7 +146,7 @@ module Google
146
146
  self.url = url.expand(params) if url.is_a?(Addressable::Template)
147
147
  url.query_values = query.merge(url.query_values || {})
148
148
 
149
- if [:post, :put].include?(method) && body.nil?
149
+ if allow_form_encoding?
150
150
  @form_encoded = true
151
151
  self.body = Addressable::URI.form_encode(url.query_values(Array))
152
152
  self.header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'
@@ -306,6 +306,10 @@ module Google
306
306
  req.options.open_timeout = options.open_timeout_sec
307
307
  end
308
308
 
309
+ def allow_form_encoding?
310
+ [:post, :put].include?(method) && body.nil?
311
+ end
312
+
309
313
  private
310
314
 
311
315
  def form_encoded?
@@ -17,8 +17,14 @@ require 'google/apis/core/http_command'
17
17
  require 'google/apis/core/api_command'
18
18
  require 'google/apis/errors'
19
19
  require 'addressable/uri'
20
- require 'mime-types'
21
20
  require 'tempfile'
21
+ begin
22
+ require 'mime/types/columnar'
23
+ rescue LoadError
24
+ # Temporary until next major bump when we can tighten
25
+ # dependency to mime-types >-=3.0
26
+ require 'mime-types'
27
+ end
22
28
 
23
29
  module Google
24
30
  module Apis
@@ -19,7 +19,7 @@ module Google
19
19
  attr_reader :status_code
20
20
  attr_reader :header
21
21
  attr_reader :body
22
-
22
+
23
23
  def initialize(err, status_code: nil, header: nil, body: nil)
24
24
  @cause = nil
25
25
 
@@ -42,7 +42,7 @@ module Google
42
42
  end
43
43
  end
44
44
  end
45
-
45
+
46
46
  # An error which is raised when there is an unexpected response or other
47
47
  # transport error that prevents an operation from succeeding.
48
48
  class TransmissionError < Error
@@ -25,12 +25,18 @@ require 'addressable/uri'
25
25
 
26
26
  module Google
27
27
  module Apis
28
+
28
29
  # @private
29
30
  class Generator
31
+
30
32
  # Helper for picking names for methods, properties, types, etc. Performs various normaliations
31
33
  # as well as allows for overriding individual names from a configuration file for cases
32
34
  # where algorithmic approaches produce poor APIs.
33
35
  class Names
36
+ ActiveSupport::Inflector.inflections do |inflections|
37
+ u = inflections.uncountable('send_as', 'as')
38
+ end
39
+
34
40
  include Google::Apis::Core::Logging
35
41
  include NameHelpers
36
42
 
@@ -15,7 +15,7 @@
15
15
  module Google
16
16
  module Apis
17
17
  # Client library version
18
- VERSION = '0.9.8'
18
+ VERSION = '0.9.15'
19
19
 
20
20
  # Current operating system
21
21
  # @private
@@ -0,0 +1,101 @@
1
+ # Copyright 2016 Google Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'google/apis/bigquery_v2'
16
+ require 'base_cli'
17
+
18
+
19
+ module Samples
20
+ # Examples for the Google BigQuery API
21
+ #
22
+ # Sample usage:
23
+ #
24
+ # $ ./google-api-samples bigquery list_datasets --project_id=publicdata
25
+ # $ ./google-api-samples bigquery list_tables --project_id=publicdata --dataset_id=samples
26
+ # $ ./google-api-samples bigquery list_table_data --project_id=publicdata --dataset_id=samples --table_id=wikipedia --max_results=10
27
+ class Bigquery < BaseCli
28
+ Bigquery = Google::Apis::BigqueryV2
29
+
30
+ desc 'list datasets', 'List datasets'
31
+ method_option :project_id, type: :string
32
+ def list_datasets
33
+ bigquery = Bigquery::BigqueryService.new
34
+ bigquery.authorization = user_credentials_for(Bigquery::AUTH_BIGQUERY)
35
+
36
+ begin
37
+ project_id = options[:project_id] || 'publicdata'
38
+ result = bigquery.list_datasets(project_id)
39
+ data = []
40
+ data << ['id','kind']
41
+ result.datasets.each do |dataset|
42
+ data << [
43
+ dataset.id,
44
+ dataset.kind,
45
+ ]
46
+ end
47
+ print_table(data)
48
+ end
49
+ end
50
+
51
+ desc 'list tables', 'List tables'
52
+ method_option :project_id, type: :string
53
+ method_option :dataset_id, type: :string
54
+ def list_tables
55
+ bigquery = Bigquery::BigqueryService.new
56
+ bigquery.authorization = user_credentials_for(Bigquery::AUTH_BIGQUERY)
57
+
58
+ begin
59
+ project_id = options[:project_id] || 'publicdata'
60
+ dataset_id = options[:dataset_id] || 'samples'
61
+ result = bigquery.list_tables(project_id, dataset_id)
62
+ data = []
63
+ data << ['id','kind']
64
+ result.tables.each do |table|
65
+ data << [
66
+ table.id,
67
+ table.kind,
68
+ ]
69
+ end
70
+ print_table(data)
71
+ end
72
+ end
73
+
74
+ desc 'list table data', 'List table data'
75
+ method_option :project_id, type: :string
76
+ method_option :dataset_id, type: :string
77
+ method_option :table_id, type: :string
78
+ def list_table_data
79
+ bigquery = Bigquery::BigqueryService.new
80
+ bigquery.authorization = user_credentials_for(Bigquery::AUTH_BIGQUERY)
81
+
82
+ begin
83
+ project_id = options[:project_id] || 'publicdata'
84
+ dataset_id = options[:dataset_id] || 'samples'
85
+ table_id = options[:table_id] || 'wikipedia'
86
+ max_results = options[:max_results] || 10
87
+ result = bigquery.list_table_data(project_id, dataset_id, table_id, max_results: max_results)
88
+
89
+ datas = []
90
+ result.rows.each do |row|
91
+ data = []
92
+ row.f.each do |field|
93
+ data << field.v
94
+ end
95
+ datas << data
96
+ end
97
+ print_table(datas)
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,61 @@
1
+ # Copyright 2016 Google Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'google/apis/sheets_v4'
16
+ require 'base_cli'
17
+
18
+
19
+ module Samples
20
+ # Examples for the Google Sheets API
21
+ #
22
+ # Sample usage:
23
+ #
24
+ # $ ./google-api-samples sheets get_values --spreadsheet_key='1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms' --range='Class Data!A1:F'
25
+ #
26
+ # Student Name Gender Class Level Home State Major Extracurricular Activity
27
+ # Alexandra Female 4. Senior CA English Drama Club
28
+ # Andrew Male 1. Freshman SD Math Lacrosse
29
+ # Anna Female 1. Freshman NC English Basketball
30
+ # Becky Female 2. Sophomore SD Art Baseball
31
+ # Benjamin Male 4. Senior WI English Basketball
32
+ # Carl Male 3. Junior MD Art Debate
33
+ # Carrie Female 3. Junior NE English Track & Field
34
+ # Dorothy Female 4. Senior MD Math Lacrosse
35
+ # Dylan Male 1. Freshman MA Math Baseball
36
+ # Edward Male 3. Junior FL English Drama Club
37
+ # Ellen Female 1. Freshman WI Physics Drama Club
38
+ # Fiona Female 1. Freshman MA Art Debate
39
+ # John Male 3. Junior CA Physics Basketball
40
+ # Jonathan Male 2. Sophomore SC Math Debate
41
+ class Sheets < BaseCli
42
+ Sheets = Google::Apis::SheetsV4
43
+
44
+ desc 'get_values', 'Get values from Google Spreadseets '
45
+ method_option :spreadsheet_key, type: :string, required: true
46
+ method_option :range, type: :string, required: true
47
+ def get_values
48
+ sheets = Sheets::SheetsService.new
49
+ sheets.authorization = user_credentials_for(Sheets::AUTH_SPREADSHEETS_READONLY)
50
+ result = sheets.get_spreadsheet_values(options[:spreadsheet_key], options[:range])
51
+ data = []
52
+ rows = result.values.length
53
+ rows.times.each do |row|
54
+ data.push(result.values[row])
55
+ end
56
+ print_table(data)
57
+ end
58
+
59
+ default_task :get_values
60
+ end
61
+ end