google-api-client 0.8.6 → 0.9.3

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 (537) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +20 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +7 -0
  5. data/.rubocop_todo.yml +63 -0
  6. data/.travis.yml +23 -0
  7. data/.yardopts +12 -0
  8. data/CHANGELOG.md +58 -2
  9. data/CONTRIBUTING.md +31 -0
  10. data/Gemfile +38 -2
  11. data/MIGRATING.md +171 -0
  12. data/README.md +189 -147
  13. data/Rakefile +1 -40
  14. data/api_names.yaml +1088 -0
  15. data/api_names_out.yaml +26978 -0
  16. data/bin/generate-api +109 -0
  17. data/generated/google/apis/adexchangebuyer_v1_3/classes.rb +1335 -0
  18. data/generated/google/apis/adexchangebuyer_v1_3/representations.rb +446 -0
  19. data/generated/google/apis/adexchangebuyer_v1_3/service.rb +872 -0
  20. data/generated/google/apis/adexchangebuyer_v1_3.rb +35 -0
  21. data/generated/google/apis/adexchangebuyer_v1_4/classes.rb +3025 -0
  22. data/generated/google/apis/adexchangebuyer_v1_4/representations.rb +1240 -0
  23. data/generated/google/apis/adexchangebuyer_v1_4/service.rb +1446 -0
  24. data/generated/google/apis/adexchangebuyer_v1_4.rb +35 -0
  25. data/generated/google/apis/adexchangeseller_v2_0/classes.rb +792 -0
  26. data/generated/google/apis/adexchangeseller_v2_0/representations.rb +347 -0
  27. data/generated/google/apis/adexchangeseller_v2_0/service.rb +668 -0
  28. data/generated/google/apis/adexchangeseller_v2_0.rb +38 -0
  29. data/generated/google/apis/admin_datatransfer_v1/classes.rb +267 -0
  30. data/generated/google/apis/admin_datatransfer_v1/representations.rb +130 -0
  31. data/generated/google/apis/admin_datatransfer_v1/service.rb +262 -0
  32. data/generated/google/apis/admin_datatransfer_v1.rb +37 -0
  33. data/generated/google/apis/admin_directory_v1/classes.rb +3141 -0
  34. data/generated/google/apis/admin_directory_v1/representations.rb +1147 -0
  35. data/generated/google/apis/admin_directory_v1/service.rb +3818 -0
  36. data/generated/google/apis/admin_directory_v1.rb +113 -0
  37. data/generated/google/apis/admin_reports_v1/classes.rb +582 -0
  38. data/generated/google/apis/admin_reports_v1/representations.rb +257 -0
  39. data/generated/google/apis/admin_reports_v1/service.rb +336 -0
  40. data/generated/google/apis/admin_reports_v1.rb +38 -0
  41. data/generated/google/apis/adsense_v1_4/classes.rb +1280 -0
  42. data/generated/google/apis/adsense_v1_4/representations.rb +555 -0
  43. data/generated/google/apis/adsense_v1_4/service.rb +1714 -0
  44. data/generated/google/apis/adsense_v1_4.rb +38 -0
  45. data/generated/google/apis/adsensehost_v4_1/classes.rb +837 -0
  46. data/generated/google/apis/adsensehost_v4_1/representations.rb +367 -0
  47. data/generated/google/apis/adsensehost_v4_1/service.rb +1164 -0
  48. data/generated/google/apis/adsensehost_v4_1.rb +35 -0
  49. data/generated/google/apis/analytics_v3/classes.rb +5118 -0
  50. data/generated/google/apis/analytics_v3/representations.rb +1850 -0
  51. data/generated/google/apis/analytics_v3/service.rb +3568 -0
  52. data/generated/google/apis/analytics_v3.rb +49 -0
  53. data/generated/google/apis/androidenterprise_v1/classes.rb +1443 -0
  54. data/generated/google/apis/androidenterprise_v1/representations.rb +614 -0
  55. data/generated/google/apis/androidenterprise_v1/service.rb +2607 -0
  56. data/generated/google/apis/androidenterprise_v1.rb +35 -0
  57. data/generated/google/apis/androidpublisher_v2/classes.rb +1411 -0
  58. data/generated/google/apis/androidpublisher_v2/representations.rb +738 -0
  59. data/generated/google/apis/androidpublisher_v2/service.rb +2338 -0
  60. data/generated/google/apis/androidpublisher_v2.rb +34 -0
  61. data/generated/google/apis/appengine_v1beta4/classes.rb +1585 -0
  62. data/generated/google/apis/appengine_v1beta4/representations.rb +542 -0
  63. data/generated/google/apis/appengine_v1beta4/service.rb +477 -0
  64. data/generated/google/apis/appengine_v1beta4.rb +35 -0
  65. data/generated/google/apis/appengine_v1beta5/classes.rb +1544 -0
  66. data/generated/google/apis/appengine_v1beta5/representations.rb +594 -0
  67. data/generated/google/apis/appengine_v1beta5/service.rb +521 -0
  68. data/generated/google/apis/appengine_v1beta5.rb +35 -0
  69. data/generated/google/apis/appsactivity_v1/classes.rb +392 -0
  70. data/generated/google/apis/appsactivity_v1/representations.rb +206 -0
  71. data/generated/google/apis/appsactivity_v1/service.rb +128 -0
  72. data/generated/google/apis/appsactivity_v1.rb +46 -0
  73. data/generated/google/apis/appstate_v1/classes.rb +154 -0
  74. data/generated/google/apis/appstate_v1/representations.rb +87 -0
  75. data/generated/google/apis/appstate_v1/service.rb +260 -0
  76. data/generated/google/apis/appstate_v1.rb +34 -0
  77. data/generated/google/apis/autoscaler_v1beta2/classes.rb +747 -0
  78. data/generated/google/apis/autoscaler_v1beta2/representations.rb +313 -0
  79. data/generated/google/apis/autoscaler_v1beta2/service.rb +478 -0
  80. data/generated/google/apis/autoscaler_v1beta2.rb +38 -0
  81. data/generated/google/apis/bigquery_v2/classes.rb +2503 -0
  82. data/generated/google/apis/bigquery_v2/representations.rb +914 -0
  83. data/generated/google/apis/bigquery_v2/service.rb +982 -0
  84. data/generated/google/apis/bigquery_v2.rb +52 -0
  85. data/generated/google/apis/blogger_v3/classes.rb +1354 -0
  86. data/generated/google/apis/blogger_v3/representations.rb +632 -0
  87. data/generated/google/apis/blogger_v3/service.rb +1587 -0
  88. data/generated/google/apis/blogger_v3.rb +37 -0
  89. data/generated/google/apis/books_v1/classes.rb +4006 -0
  90. data/generated/google/apis/books_v1/representations.rb +1742 -0
  91. data/generated/google/apis/books_v1/service.rb +2293 -0
  92. data/generated/google/apis/books_v1.rb +34 -0
  93. data/generated/google/apis/calendar_v3/classes.rb +1742 -0
  94. data/generated/google/apis/calendar_v3/representations.rb +631 -0
  95. data/generated/google/apis/calendar_v3/service.rb +1968 -0
  96. data/generated/google/apis/calendar_v3.rb +37 -0
  97. data/generated/google/apis/civicinfo_v2/classes.rb +1127 -0
  98. data/generated/google/apis/civicinfo_v2/representations.rb +423 -0
  99. data/generated/google/apis/civicinfo_v2/service.rb +279 -0
  100. data/generated/google/apis/civicinfo_v2.rb +31 -0
  101. data/generated/google/apis/classroom_v1/classes.rb +512 -0
  102. data/generated/google/apis/classroom_v1/representations.rb +245 -0
  103. data/generated/google/apis/classroom_v1/service.rb +970 -0
  104. data/generated/google/apis/classroom_v1.rb +49 -0
  105. data/generated/google/apis/classroom_v1beta1/classes.rb +447 -0
  106. data/generated/google/apis/classroom_v1beta1/representations.rb +190 -0
  107. data/generated/google/apis/classroom_v1beta1/service.rb +791 -0
  108. data/generated/google/apis/classroom_v1beta1.rb +49 -0
  109. data/generated/google/apis/cloudbilling_v1/classes.rb +169 -0
  110. data/generated/google/apis/cloudbilling_v1/representations.rb +87 -0
  111. data/generated/google/apis/cloudbilling_v1/service.rb +258 -0
  112. data/generated/google/apis/cloudbilling_v1.rb +35 -0
  113. data/generated/google/apis/cloudbuild_v1/classes.rb +521 -0
  114. data/generated/google/apis/cloudbuild_v1/representations.rb +214 -0
  115. data/generated/google/apis/cloudbuild_v1/service.rb +278 -0
  116. data/generated/google/apis/cloudbuild_v1.rb +35 -0
  117. data/generated/google/apis/clouddebugger_v2/classes.rb +1004 -0
  118. data/generated/google/apis/clouddebugger_v2/representations.rb +464 -0
  119. data/generated/google/apis/clouddebugger_v2/service.rb +370 -0
  120. data/generated/google/apis/clouddebugger_v2.rb +41 -0
  121. data/generated/google/apis/cloudlatencytest_v2/classes.rb +195 -0
  122. data/generated/google/apis/cloudlatencytest_v2/representations.rb +127 -0
  123. data/generated/google/apis/cloudlatencytest_v2/service.rb +135 -0
  124. data/generated/google/apis/cloudlatencytest_v2.rb +34 -0
  125. data/generated/google/apis/cloudmonitoring_v2beta2/classes.rb +679 -0
  126. data/generated/google/apis/cloudmonitoring_v2beta2/representations.rb +353 -0
  127. data/generated/google/apis/cloudmonitoring_v2beta2/service.rb +452 -0
  128. data/generated/google/apis/cloudmonitoring_v2beta2.rb +37 -0
  129. data/generated/google/apis/cloudresourcemanager_v1beta1/classes.rb +450 -0
  130. data/generated/google/apis/cloudresourcemanager_v1beta1/representations.rb +226 -0
  131. data/generated/google/apis/cloudresourcemanager_v1beta1/service.rb +626 -0
  132. data/generated/google/apis/cloudresourcemanager_v1beta1.rb +38 -0
  133. data/generated/google/apis/cloudtrace_v1/classes.rb +188 -0
  134. data/generated/google/apis/cloudtrace_v1/representations.rb +102 -0
  135. data/generated/google/apis/cloudtrace_v1/service.rb +190 -0
  136. data/generated/google/apis/cloudtrace_v1.rb +35 -0
  137. data/generated/google/apis/clouduseraccounts_beta/classes.rb +823 -0
  138. data/generated/google/apis/clouduseraccounts_beta/representations.rb +351 -0
  139. data/generated/google/apis/clouduseraccounts_beta/service.rb +854 -0
  140. data/generated/google/apis/clouduseraccounts_beta.rb +43 -0
  141. data/generated/google/apis/compute_beta/classes.rb +9741 -0
  142. data/generated/google/apis/compute_beta/representations.rb +3649 -0
  143. data/generated/google/apis/compute_beta/service.rb +10636 -0
  144. data/generated/google/apis/compute_beta.rb +49 -0
  145. data/generated/google/apis/compute_v1/classes.rb +9095 -0
  146. data/generated/google/apis/compute_v1/representations.rb +3389 -0
  147. data/generated/google/apis/compute_v1/service.rb +9627 -0
  148. data/generated/google/apis/compute_v1.rb +49 -0
  149. data/generated/google/apis/container_v1/classes.rb +463 -0
  150. data/generated/google/apis/container_v1/representations.rb +195 -0
  151. data/generated/google/apis/container_v1/service.rb +367 -0
  152. data/generated/google/apis/container_v1.rb +35 -0
  153. data/generated/google/apis/container_v1beta1/classes.rb +466 -0
  154. data/generated/google/apis/container_v1beta1/representations.rb +177 -0
  155. data/generated/google/apis/container_v1beta1/service.rb +394 -0
  156. data/generated/google/apis/container_v1beta1.rb +35 -0
  157. data/generated/google/apis/content_v2/classes.rb +6114 -0
  158. data/generated/google/apis/content_v2/representations.rb +2624 -0
  159. data/generated/google/apis/content_v2/service.rb +2338 -0
  160. data/generated/google/apis/content_v2.rb +35 -0
  161. data/generated/google/apis/coordinate_v1/classes.rb +669 -0
  162. data/generated/google/apis/coordinate_v1/representations.rb +321 -0
  163. data/generated/google/apis/coordinate_v1/service.rb +678 -0
  164. data/generated/google/apis/coordinate_v1.rb +37 -0
  165. data/generated/google/apis/customsearch_v1/classes.rb +771 -0
  166. data/generated/google/apis/customsearch_v1/representations.rb +302 -0
  167. data/generated/google/apis/customsearch_v1/service.rb +207 -0
  168. data/{lib/google/api_client/auth/compute_service_account.rb → generated/google/apis/customsearch_v1.rb} +13 -10
  169. data/generated/google/apis/dataproc_v1/classes.rb +1590 -0
  170. data/generated/google/apis/dataproc_v1/representations.rb +653 -0
  171. data/generated/google/apis/dataproc_v1/service.rb +719 -0
  172. data/generated/google/apis/dataproc_v1.rb +43 -0
  173. data/generated/google/apis/datastore_v1beta2/classes.rb +1186 -0
  174. data/generated/google/apis/datastore_v1beta2/representations.rb +594 -0
  175. data/generated/google/apis/datastore_v1beta2/service.rb +294 -0
  176. data/generated/google/apis/datastore_v1beta2.rb +40 -0
  177. data/generated/google/apis/deploymentmanager_v2/classes.rb +1162 -0
  178. data/generated/google/apis/deploymentmanager_v2/representations.rb +508 -0
  179. data/generated/google/apis/deploymentmanager_v2/service.rb +862 -0
  180. data/generated/google/apis/deploymentmanager_v2.rb +44 -0
  181. data/generated/google/apis/deploymentmanager_v2beta2/classes.rb +843 -0
  182. data/generated/google/apis/deploymentmanager_v2beta2/representations.rb +306 -0
  183. data/generated/google/apis/deploymentmanager_v2beta2/service.rb +689 -0
  184. data/generated/google/apis/deploymentmanager_v2beta2.rb +44 -0
  185. data/generated/google/apis/dfareporting_v2_1/classes.rb +10770 -0
  186. data/generated/google/apis/dfareporting_v2_1/representations.rb +3438 -0
  187. data/generated/google/apis/dfareporting_v2_1/service.rb +8585 -0
  188. data/generated/google/apis/dfareporting_v2_1.rb +37 -0
  189. data/generated/google/apis/dfareporting_v2_3/classes.rb +10830 -0
  190. data/generated/google/apis/dfareporting_v2_3/representations.rb +3829 -0
  191. data/generated/google/apis/dfareporting_v2_3/service.rb +8581 -0
  192. data/generated/google/apis/dfareporting_v2_3.rb +37 -0
  193. data/generated/google/apis/discovery_v1/classes.rb +961 -0
  194. data/generated/google/apis/discovery_v1/representations.rb +397 -0
  195. data/generated/google/apis/discovery_v1/service.rb +142 -0
  196. data/generated/google/apis/discovery_v1.rb +32 -0
  197. data/generated/google/apis/dns_v1/classes.rb +406 -0
  198. data/generated/google/apis/dns_v1/representations.rb +167 -0
  199. data/generated/google/apis/dns_v1/service.rb +454 -0
  200. data/generated/google/apis/dns_v1.rb +44 -0
  201. data/generated/google/apis/doubleclickbidmanager_v1/classes.rb +802 -0
  202. data/generated/google/apis/doubleclickbidmanager_v1/representations.rb +371 -0
  203. data/generated/google/apis/doubleclickbidmanager_v1/service.rb +374 -0
  204. data/generated/google/apis/doubleclickbidmanager_v1.rb +31 -0
  205. data/generated/google/apis/doubleclicksearch_v2/classes.rb +958 -0
  206. data/generated/google/apis/doubleclicksearch_v2/representations.rb +350 -0
  207. data/generated/google/apis/doubleclicksearch_v2/service.rb +480 -0
  208. data/generated/google/apis/doubleclicksearch_v2.rb +35 -0
  209. data/generated/google/apis/drive_v2/classes.rb +2569 -0
  210. data/generated/google/apis/drive_v2/representations.rb +878 -0
  211. data/generated/google/apis/drive_v2/service.rb +2740 -0
  212. data/generated/google/apis/drive_v2.rb +58 -0
  213. data/generated/google/apis/drive_v3/classes.rb +1541 -0
  214. data/generated/google/apis/drive_v3/representations.rb +548 -0
  215. data/generated/google/apis/drive_v3/service.rb +1542 -0
  216. data/generated/google/apis/drive_v3.rb +55 -0
  217. data/generated/google/apis/fitness_v1/classes.rb +885 -0
  218. data/generated/google/apis/fitness_v1/representations.rb +360 -0
  219. data/generated/google/apis/fitness_v1/service.rb +675 -0
  220. data/generated/google/apis/fitness_v1.rb +49 -0
  221. data/generated/google/apis/fusiontables_v2/classes.rb +1048 -0
  222. data/generated/google/apis/fusiontables_v2/representations.rb +457 -0
  223. data/generated/google/apis/fusiontables_v2/service.rb +1463 -0
  224. data/generated/google/apis/fusiontables_v2.rb +37 -0
  225. data/generated/google/apis/games_configuration_v1configuration/classes.rb +506 -0
  226. data/generated/google/apis/games_configuration_v1configuration/representations.rb +228 -0
  227. data/generated/google/apis/games_configuration_v1configuration/service.rb +565 -0
  228. data/generated/google/apis/games_configuration_v1configuration.rb +34 -0
  229. data/generated/google/apis/games_management_v1management/classes.rb +533 -0
  230. data/generated/google/apis/games_management_v1management/representations.rb +262 -0
  231. data/generated/google/apis/games_management_v1management/service.rb +994 -0
  232. data/generated/google/apis/games_management_v1management.rb +37 -0
  233. data/generated/google/apis/games_v1/classes.rb +4626 -0
  234. data/generated/google/apis/games_v1/representations.rb +1783 -0
  235. data/generated/google/apis/games_v1/service.rb +2290 -0
  236. data/generated/google/apis/games_v1.rb +40 -0
  237. data/generated/google/apis/gan_v1beta1/classes.rb +1428 -0
  238. data/generated/google/apis/gan_v1beta1/representations.rb +462 -0
  239. data/generated/google/apis/gan_v1beta1/service.rb +682 -0
  240. data/generated/google/apis/gan_v1beta1.rb +31 -0
  241. data/generated/google/apis/genomics_v1/classes.rb +2609 -0
  242. data/generated/google/apis/genomics_v1/representations.rb +1029 -0
  243. data/generated/google/apis/genomics_v1/service.rb +1676 -0
  244. data/generated/google/apis/genomics_v1.rb +49 -0
  245. data/generated/google/apis/genomics_v1beta2/classes.rb +3288 -0
  246. data/generated/google/apis/genomics_v1beta2/representations.rb +1194 -0
  247. data/generated/google/apis/genomics_v1beta2/service.rb +2392 -0
  248. data/generated/google/apis/genomics_v1beta2.rb +46 -0
  249. data/generated/google/apis/gmail_v1/classes.rb +794 -0
  250. data/generated/google/apis/gmail_v1/representations.rb +383 -0
  251. data/generated/google/apis/gmail_v1/service.rb +1470 -0
  252. data/generated/google/apis/gmail_v1.rb +52 -0
  253. data/generated/google/apis/groupsmigration_v1/classes.rb +51 -0
  254. data/generated/google/apis/groupsmigration_v1/representations.rb +40 -0
  255. data/generated/google/apis/groupsmigration_v1/service.rb +110 -0
  256. data/generated/google/apis/groupsmigration_v1.rb +34 -0
  257. data/generated/google/apis/groupssettings_v1/classes.rb +221 -0
  258. data/generated/google/apis/groupssettings_v1/representations.rb +66 -0
  259. data/generated/google/apis/groupssettings_v1/service.rb +179 -0
  260. data/generated/google/apis/groupssettings_v1.rb +34 -0
  261. data/generated/google/apis/identitytoolkit_v3/classes.rb +1637 -0
  262. data/generated/google/apis/identitytoolkit_v3/representations.rb +618 -0
  263. data/generated/google/apis/identitytoolkit_v3/service.rb +616 -0
  264. data/generated/google/apis/identitytoolkit_v3.rb +31 -0
  265. data/generated/google/apis/kgsearch_v1/classes.rb +59 -0
  266. data/generated/google/apis/kgsearch_v1/representations.rb +41 -0
  267. data/generated/google/apis/kgsearch_v1/service.rb +111 -0
  268. data/{spec/google/api_client/request_spec.rb → generated/google/apis/kgsearch_v1.rb} +16 -13
  269. data/generated/google/apis/licensing_v1/classes.rb +132 -0
  270. data/generated/google/apis/licensing_v1/representations.rb +74 -0
  271. data/generated/google/apis/licensing_v1/service.rb +369 -0
  272. data/generated/google/apis/licensing_v1.rb +34 -0
  273. data/generated/google/apis/logging_v1beta3/classes.rb +1079 -0
  274. data/generated/google/apis/logging_v1beta3/representations.rb +366 -0
  275. data/generated/google/apis/logging_v1beta3/service.rb +1001 -0
  276. data/generated/google/apis/logging_v1beta3.rb +47 -0
  277. data/generated/google/apis/logging_v2beta1/classes.rb +990 -0
  278. data/generated/google/apis/logging_v2beta1/representations.rb +377 -0
  279. data/generated/google/apis/logging_v2beta1/service.rb +547 -0
  280. data/generated/google/apis/logging_v2beta1.rb +47 -0
  281. data/generated/google/apis/manager_v1beta2/classes.rb +1287 -0
  282. data/generated/google/apis/manager_v1beta2/representations.rb +606 -0
  283. data/generated/google/apis/manager_v1beta2/service.rb +372 -0
  284. data/generated/google/apis/manager_v1beta2.rb +53 -0
  285. data/generated/google/apis/mirror_v1/classes.rb +1072 -0
  286. data/generated/google/apis/mirror_v1/representations.rb +390 -0
  287. data/generated/google/apis/mirror_v1/service.rb +977 -0
  288. data/generated/google/apis/mirror_v1.rb +37 -0
  289. data/generated/google/apis/oauth2_v2/classes.rb +245 -0
  290. data/generated/google/apis/oauth2_v2/representations.rb +102 -0
  291. data/generated/google/apis/oauth2_v2/service.rb +199 -0
  292. data/generated/google/apis/oauth2_v2.rb +43 -0
  293. data/generated/google/apis/pagespeedonline_v2/classes.rb +614 -0
  294. data/generated/google/apis/pagespeedonline_v2/representations.rb +272 -0
  295. data/generated/google/apis/pagespeedonline_v2/service.rb +119 -0
  296. data/generated/google/apis/pagespeedonline_v2.rb +32 -0
  297. data/generated/google/apis/partners_v2/classes.rb +942 -0
  298. data/generated/google/apis/partners_v2/representations.rb +454 -0
  299. data/generated/google/apis/partners_v2/service.rb +400 -0
  300. data/generated/google/apis/partners_v2.rb +32 -0
  301. data/generated/google/apis/people_v1/classes.rb +1521 -0
  302. data/generated/google/apis/people_v1/representations.rb +663 -0
  303. data/generated/google/apis/people_v1/service.rb +189 -0
  304. data/generated/google/apis/people_v1.rb +59 -0
  305. data/generated/google/apis/plus_domains_v1/classes.rb +2609 -0
  306. data/generated/google/apis/plus_domains_v1/representations.rb +1111 -0
  307. data/generated/google/apis/plus_domains_v1/service.rb +904 -0
  308. data/generated/google/apis/plus_domains_v1.rb +61 -0
  309. data/generated/google/apis/plus_v1/classes.rb +2094 -0
  310. data/generated/google/apis/plus_v1/representations.rb +907 -0
  311. data/generated/google/apis/plus_v1/service.rb +470 -0
  312. data/generated/google/apis/plus_v1.rb +43 -0
  313. data/generated/google/apis/prediction_v1_6/classes.rb +751 -0
  314. data/generated/google/apis/prediction_v1_6/representations.rb +369 -0
  315. data/generated/google/apis/prediction_v1_6/service.rb +380 -0
  316. data/generated/google/apis/prediction_v1_6.rb +44 -0
  317. data/generated/google/apis/proximitybeacon_v1beta1/classes.rb +639 -0
  318. data/generated/google/apis/proximitybeacon_v1beta1/representations.rb +312 -0
  319. data/generated/google/apis/proximitybeacon_v1beta1/service.rb +591 -0
  320. data/generated/google/apis/proximitybeacon_v1beta1.rb +31 -0
  321. data/generated/google/apis/pubsub_v1/classes.rb +614 -0
  322. data/generated/google/apis/pubsub_v1/representations.rb +323 -0
  323. data/generated/google/apis/pubsub_v1/service.rb +774 -0
  324. data/generated/google/apis/pubsub_v1.rb +37 -0
  325. data/generated/google/apis/pubsub_v1beta2/classes.rb +620 -0
  326. data/generated/google/apis/pubsub_v1beta2/representations.rb +282 -0
  327. data/generated/google/apis/pubsub_v1beta2/service.rb +774 -0
  328. data/generated/google/apis/pubsub_v1beta2.rb +37 -0
  329. data/generated/google/apis/qpx_express_v1/classes.rb +1268 -0
  330. data/generated/google/apis/qpx_express_v1/representations.rb +472 -0
  331. data/generated/google/apis/qpx_express_v1/service.rb +100 -0
  332. data/generated/google/apis/qpx_express_v1.rb +31 -0
  333. data/generated/google/apis/replicapool_v1beta2/classes.rb +631 -0
  334. data/generated/google/apis/replicapool_v1beta2/representations.rb +264 -0
  335. data/generated/google/apis/replicapool_v1beta2/service.rb +608 -0
  336. data/generated/google/apis/replicapool_v1beta2.rb +44 -0
  337. data/generated/google/apis/replicapoolupdater_v1beta1/classes.rb +733 -0
  338. data/generated/google/apis/replicapoolupdater_v1beta1/representations.rb +294 -0
  339. data/generated/google/apis/replicapoolupdater_v1beta1/service.rb +508 -0
  340. data/generated/google/apis/replicapoolupdater_v1beta1.rb +44 -0
  341. data/generated/google/apis/reseller_v1/classes.rb +526 -0
  342. data/generated/google/apis/reseller_v1/representations.rb +223 -0
  343. data/generated/google/apis/reseller_v1/service.rb +623 -0
  344. data/generated/google/apis/reseller_v1.rb +37 -0
  345. data/generated/google/apis/resourceviews_v1beta2/classes.rb +660 -0
  346. data/generated/google/apis/resourceviews_v1beta2/representations.rb +301 -0
  347. data/generated/google/apis/resourceviews_v1beta2/service.rb +563 -0
  348. data/generated/google/apis/resourceviews_v1beta2.rb +50 -0
  349. data/generated/google/apis/script_v1/classes.rb +259 -0
  350. data/generated/google/apis/script_v1/representations.rb +118 -0
  351. data/generated/google/apis/script_v1/service.rb +98 -0
  352. data/generated/google/apis/script_v1.rb +61 -0
  353. data/generated/google/apis/site_verification_v1/classes.rb +185 -0
  354. data/generated/google/apis/site_verification_v1/representations.rb +113 -0
  355. data/generated/google/apis/site_verification_v1/service.rb +315 -0
  356. data/generated/google/apis/site_verification_v1.rb +37 -0
  357. data/generated/google/apis/sqladmin_v1beta4/classes.rb +2030 -0
  358. data/generated/google/apis/sqladmin_v1beta4/representations.rb +856 -0
  359. data/generated/google/apis/sqladmin_v1beta4/service.rb +1625 -0
  360. data/generated/google/apis/sqladmin_v1beta4.rb +37 -0
  361. data/generated/google/apis/storage_v1/classes.rb +1222 -0
  362. data/generated/google/apis/storage_v1/representations.rb +497 -0
  363. data/generated/google/apis/storage_v1/service.rb +1903 -0
  364. data/generated/google/apis/storage_v1.rb +46 -0
  365. data/generated/google/apis/storagetransfer_v1/classes.rb +1046 -0
  366. data/generated/google/apis/storagetransfer_v1/representations.rb +418 -0
  367. data/generated/google/apis/storagetransfer_v1/service.rb +473 -0
  368. data/generated/google/apis/storagetransfer_v1.rb +35 -0
  369. data/generated/google/apis/tagmanager_v1/classes.rb +1494 -0
  370. data/generated/google/apis/tagmanager_v1/representations.rb +611 -0
  371. data/generated/google/apis/tagmanager_v1/service.rb +2119 -0
  372. data/generated/google/apis/tagmanager_v1.rb +52 -0
  373. data/generated/google/apis/taskqueue_v1beta2/classes.rb +254 -0
  374. data/generated/google/apis/taskqueue_v1beta2/representations.rb +126 -0
  375. data/generated/google/apis/taskqueue_v1beta2/service.rb +408 -0
  376. data/generated/google/apis/taskqueue_v1beta2.rb +37 -0
  377. data/generated/google/apis/tasks_v1/classes.rb +296 -0
  378. data/generated/google/apis/tasks_v1/representations.rb +125 -0
  379. data/generated/google/apis/tasks_v1/service.rb +643 -0
  380. data/generated/google/apis/tasks_v1.rb +37 -0
  381. data/generated/google/apis/translate_v2/classes.rb +168 -0
  382. data/generated/google/apis/translate_v2/representations.rb +121 -0
  383. data/generated/google/apis/translate_v2/service.rb +182 -0
  384. data/generated/google/apis/translate_v2.rb +31 -0
  385. data/generated/google/apis/urlshortener_v1/classes.rb +246 -0
  386. data/generated/google/apis/urlshortener_v1/representations.rb +121 -0
  387. data/generated/google/apis/urlshortener_v1/service.rb +176 -0
  388. data/generated/google/apis/urlshortener_v1.rb +34 -0
  389. data/generated/google/apis/vision_v1/classes.rb +1259 -0
  390. data/generated/google/apis/vision_v1/representations.rb +418 -0
  391. data/generated/google/apis/vision_v1/service.rb +91 -0
  392. data/generated/google/apis/vision_v1.rb +37 -0
  393. data/generated/google/apis/webmasters_v3/classes.rb +563 -0
  394. data/generated/google/apis/webmasters_v3/representations.rb +282 -0
  395. data/generated/google/apis/webmasters_v3/service.rb +573 -0
  396. data/generated/google/apis/webmasters_v3.rb +37 -0
  397. data/generated/google/apis/youtube_analytics_v1/classes.rb +546 -0
  398. data/generated/google/apis/youtube_analytics_v1/representations.rb +273 -0
  399. data/generated/google/apis/youtube_analytics_v1/service.rb +562 -0
  400. data/generated/google/apis/youtube_analytics_v1.rb +46 -0
  401. data/generated/google/apis/youtube_v3/classes.rb +8071 -0
  402. data/generated/google/apis/youtube_v3/representations.rb +3134 -0
  403. data/generated/google/apis/youtube_v3/service.rb +4403 -0
  404. data/generated/google/apis/youtube_v3.rb +49 -0
  405. data/generated/google/apis/youtubereporting_v1/classes.rb +258 -0
  406. data/generated/google/apis/youtubereporting_v1/representations.rb +144 -0
  407. data/generated/google/apis/youtubereporting_v1/service.rb +364 -0
  408. data/generated/google/apis/youtubereporting_v1.rb +38 -0
  409. data/google-api-client.gemspec +25 -39
  410. data/lib/google/api_client/auth/installed_app.rb +7 -5
  411. data/lib/google/api_client/auth/key_utils.rb +1 -0
  412. data/lib/google/api_client/auth/storage.rb +4 -2
  413. data/lib/google/api_client/auth/storages/file_store.rb +2 -3
  414. data/lib/google/api_client/auth/storages/redis_store.rb +7 -2
  415. data/lib/google/api_client/client_secrets.rb +7 -9
  416. data/lib/google/apis/core/api_command.rb +136 -0
  417. data/lib/google/apis/core/base_service.rb +317 -0
  418. data/lib/google/apis/core/batch.rb +239 -0
  419. data/lib/google/apis/core/download.rb +94 -0
  420. data/lib/google/apis/core/hashable.rb +44 -0
  421. data/lib/google/apis/core/http_client_adapter.rb +82 -0
  422. data/lib/google/apis/core/http_command.rb +328 -0
  423. data/lib/google/apis/core/json_representation.rb +145 -0
  424. data/lib/google/{api_client/version.rb → apis/core/logging.rb} +12 -8
  425. data/lib/google/apis/core/multipart.rb +187 -0
  426. data/lib/google/apis/core/upload.rb +289 -0
  427. data/lib/google/{api_client → apis}/errors.rb +39 -28
  428. data/lib/google/apis/generator/annotator.rb +295 -0
  429. data/lib/google/apis/generator/helpers.rb +74 -0
  430. data/lib/google/apis/generator/model.rb +143 -0
  431. data/lib/google/apis/generator/template.rb +124 -0
  432. data/lib/google/apis/generator/templates/_class.tmpl +40 -0
  433. data/lib/google/apis/generator/templates/_method.tmpl +92 -0
  434. data/lib/google/apis/generator/templates/_representation.tmpl +51 -0
  435. data/lib/google/apis/generator/templates/_representation_stub.tmpl +17 -0
  436. data/lib/google/apis/generator/templates/_representation_type.tmpl +10 -0
  437. data/lib/google/{api_client/reference.rb → apis/generator/templates/classes.rb.tmpl} +11 -9
  438. data/lib/google/apis/generator/templates/module.rb.tmpl +40 -0
  439. data/lib/google/apis/generator/templates/representations.rb.tmpl +32 -0
  440. data/lib/google/apis/generator/templates/service.rb.tmpl +60 -0
  441. data/lib/google/apis/generator.rb +70 -0
  442. data/lib/google/apis/options.rb +85 -0
  443. data/lib/google/apis/version.rb +39 -0
  444. data/lib/google/apis.rb +48 -0
  445. data/rakelib/metrics.rake +22 -0
  446. data/rakelib/rubocop.rake +10 -0
  447. data/rakelib/spec.rake +11 -0
  448. data/rakelib/yard.rake +11 -0
  449. data/samples/cli/Gemfile +7 -0
  450. data/samples/cli/README.md +51 -0
  451. data/samples/cli/google-api-samples +32 -0
  452. data/samples/cli/lib/base_cli.rb +95 -0
  453. data/samples/cli/lib/samples/analytics.rb +62 -0
  454. data/samples/cli/lib/samples/androidpublisher.rb +47 -0
  455. data/samples/cli/lib/samples/calendar.rb +83 -0
  456. data/samples/cli/lib/samples/drive.rb +82 -0
  457. data/samples/cli/lib/samples/gmail.rb +50 -0
  458. data/samples/cli/lib/samples/pubsub.rb +114 -0
  459. data/samples/cli/lib/samples/translate.rb +44 -0
  460. data/samples/cli/lib/samples/you_tube.rb +44 -0
  461. data/samples/web/Gemfile +7 -0
  462. data/samples/web/README.md +44 -0
  463. data/samples/web/app.rb +120 -0
  464. data/samples/web/views/calendar.erb +34 -0
  465. data/{lib/google/api_client/service_account.rb → samples/web/views/drive.erb} +20 -8
  466. data/samples/web/views/home.erb +35 -0
  467. data/samples/web/views/layout.erb +40 -0
  468. data/script/generate +100 -0
  469. data/script/package +8 -0
  470. data/script/release +15 -0
  471. data/spec/fixtures/files/api_names.yaml +3 -0
  472. data/spec/fixtures/files/auth_stored_credentials.json +8 -0
  473. data/spec/fixtures/files/child/.gitignore +0 -0
  474. data/spec/fixtures/files/client_secrets.json +1 -0
  475. data/spec/fixtures/files/invalid.json +1 -0
  476. data/spec/fixtures/files/test.blah +1 -0
  477. data/spec/fixtures/files/test.txt +1 -0
  478. data/spec/fixtures/files/test_api.json +440 -0
  479. data/spec/google/api_client/auth/storage_spec.rb +1 -3
  480. data/spec/google/api_client/auth/storages/file_store_spec.rb +1 -2
  481. data/spec/google/api_client/auth/storages/redis_store_spec.rb +1 -3
  482. data/spec/google/api_client/client_secrets_spec.rb +338 -2
  483. data/spec/google/apis/core/api_command_spec.rb +209 -0
  484. data/spec/google/apis/core/batch_spec.rb +142 -0
  485. data/spec/google/apis/core/download_spec.rb +103 -0
  486. data/spec/google/apis/core/hashable_spec.rb +60 -0
  487. data/spec/google/apis/core/http_command_spec.rb +303 -0
  488. data/spec/google/apis/core/json_representation_spec.rb +199 -0
  489. data/spec/google/apis/core/service_spec.rb +247 -0
  490. data/spec/google/apis/core/upload_spec.rb +300 -0
  491. data/{lib/google/api_client/discovery.rb → spec/google/apis/generated_spec.rb} +13 -5
  492. data/spec/google/apis/generator/generator_spec.rb +324 -0
  493. data/spec/google/apis/logging_spec.rb +45 -0
  494. data/spec/google/apis/options_spec.rb +40 -0
  495. data/spec/integration_tests/adsense_spec.rb +29 -0
  496. data/spec/integration_tests/drive_spec.rb +35 -0
  497. data/spec/integration_tests/pubsub_spec.rb +48 -0
  498. data/spec/integration_tests/url_shortener_spec.rb +45 -0
  499. data/spec/spec_helper/load_path_spec.rb +33 -0
  500. data/spec/spec_helper.rb +131 -44
  501. data/third_party/hurley_patches.rb +103 -0
  502. metadata +563 -188
  503. data/lib/compat/multi_json.rb +0 -19
  504. data/lib/google/api_client/auth/file_storage.rb +0 -59
  505. data/lib/google/api_client/auth/jwt_asserter.rb +0 -126
  506. data/lib/google/api_client/auth/pkcs12.rb +0 -41
  507. data/lib/google/api_client/batch.rb +0 -326
  508. data/lib/google/api_client/charset.rb +0 -33
  509. data/lib/google/api_client/discovery/api.rb +0 -310
  510. data/lib/google/api_client/discovery/media.rb +0 -77
  511. data/lib/google/api_client/discovery/method.rb +0 -363
  512. data/lib/google/api_client/discovery/resource.rb +0 -156
  513. data/lib/google/api_client/discovery/schema.rb +0 -117
  514. data/lib/google/api_client/environment.rb +0 -42
  515. data/lib/google/api_client/gzip.rb +0 -28
  516. data/lib/google/api_client/logging.rb +0 -32
  517. data/lib/google/api_client/media.rb +0 -259
  518. data/lib/google/api_client/railtie.rb +0 -18
  519. data/lib/google/api_client/request.rb +0 -350
  520. data/lib/google/api_client/result.rb +0 -255
  521. data/lib/google/api_client/service/batch.rb +0 -110
  522. data/lib/google/api_client/service/request.rb +0 -144
  523. data/lib/google/api_client/service/resource.rb +0 -40
  524. data/lib/google/api_client/service/result.rb +0 -162
  525. data/lib/google/api_client/service/simple_file_store.rb +0 -151
  526. data/lib/google/api_client/service/stub_generator.rb +0 -61
  527. data/lib/google/api_client/service.rb +0 -233
  528. data/lib/google/api_client.rb +0 -750
  529. data/spec/google/api_client/batch_spec.rb +0 -248
  530. data/spec/google/api_client/discovery_spec.rb +0 -708
  531. data/spec/google/api_client/gzip_spec.rb +0 -98
  532. data/spec/google/api_client/media_spec.rb +0 -178
  533. data/spec/google/api_client/result_spec.rb +0 -207
  534. data/spec/google/api_client/service_account_spec.rb +0 -169
  535. data/spec/google/api_client/service_spec.rb +0 -618
  536. data/spec/google/api_client/simple_file_store_spec.rb +0 -133
  537. data/spec/google/api_client_spec.rb +0 -352
@@ -0,0 +1,83 @@
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/calendar_v3'
16
+ require 'base_cli'
17
+
18
+
19
+ module Samples
20
+ # Examples for the Google Calendar API
21
+ #
22
+ # Sample usage:
23
+ #
24
+ # $ ./google-api-samples calendar list --limit 10
25
+ class Calendar < BaseCli
26
+ Calendar = Google::Apis::CalendarV3
27
+
28
+ desc 'schedule', 'Create an event'
29
+ method_option :summary, type: :string, required: true
30
+ method_option :start, type: :string, required: true
31
+ method_option :end , type: :string, required: true
32
+ method_option :attendees, type: :array
33
+ def schedule
34
+ calendar = Calendar::CalendarService.new
35
+ calendar.authorization = user_credentials_for(Calendar::AUTH_CALENDAR)
36
+
37
+ event = {
38
+ summary: options[:summary],
39
+ attendees: Array(options[:attenddes]).map { |email| { email: email } },
40
+ start: {
41
+ date_time: DateTime.parse(options[:start])
42
+ },
43
+ end: {
44
+ date_time: DateTime.parse(options[:end])
45
+ }
46
+ }
47
+
48
+ event = calendar.insert_event('primary', event, send_notifications: true)
49
+ say "Created event '#{event.summary}' (#{event.id})"
50
+ end
51
+
52
+ desc 'list', 'List upcoming events'
53
+ method_option :limit, type: :numeric
54
+ def list()
55
+ calendar = Calendar::CalendarService.new
56
+ calendar.authorization = user_credentials_for(Calendar::AUTH_CALENDAR)
57
+
58
+ page_token = nil
59
+ limit = options[:limit] || 1000
60
+ now = Time.now.iso8601
61
+ begin
62
+ result = calendar.list_events('primary',
63
+ max_results: [limit, 100].min,
64
+ single_events: true,
65
+ order_by: 'startTime',
66
+ time_min: now,
67
+ page_token: page_token,
68
+ fields: 'items(id,summary,start),next_page_token')
69
+
70
+ result.items.each do |event|
71
+ time = event.start.date_time || event.start.date
72
+ say "#{time}, #{event.summary}"
73
+ end
74
+ limit -= result.items.length
75
+ if result.next_page_token
76
+ page_token = result.next_page_token
77
+ else
78
+ page_token = nil
79
+ end
80
+ end while !page_token.nil? && limit > 0
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,82 @@
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/drive_v3'
16
+ require 'base_cli'
17
+
18
+
19
+ module Samples
20
+ # Examples for the Google Drive API
21
+ #
22
+ # Sample usage:
23
+ #
24
+ # $ ./google-api-samples drive upload ~/myvideo.mov
25
+ class Drive < BaseCli
26
+ Drive = Google::Apis::DriveV3
27
+
28
+ desc 'upload FILE', 'Upload a file to Google Drive'
29
+ method_option :name, type: :string
30
+ def upload(file)
31
+ drive = Drive::DriveService.new
32
+ drive.authorization = user_credentials_for(Drive::AUTH_DRIVE)
33
+
34
+ metadata = {
35
+ name: options[:name] || file
36
+ }
37
+ result = drive.create_file(metadata, upload_source: file)
38
+ say "Upload complete"
39
+ end
40
+
41
+ desc 'download FILE_ID', 'Download a file from Google Drive'
42
+ method_option :out, type: :string
43
+ def download(file_id)
44
+ drive = Drive::DriveService.new
45
+ drive.authorization = user_credentials_for(Drive::AUTH_DRIVE)
46
+
47
+ dest = options[:out] || StringIO.new
48
+ drive.get_file(file_id, download_dest: dest)
49
+
50
+ if dest.is_a?(StringIO)
51
+ dest.rewind
52
+ STDOUT.write(dest.read)
53
+ else
54
+ say "File downloaded to #{options[:out]}"
55
+ end
56
+ end
57
+
58
+ desc 'list QUERY', 'Search for files'
59
+ method_option :limit, type: :numeric
60
+ def list(query)
61
+ drive = Drive::DriveService.new
62
+ drive.authorization = user_credentials_for(Drive::AUTH_DRIVE)
63
+
64
+ page_token = nil
65
+ limit = options[:limit] || 1000
66
+ begin
67
+ result = drive.list_files(q: query,
68
+ page_size: [limit, 100].min,
69
+ page_token: page_token,
70
+ fields: 'files(id,name),next_page_token')
71
+
72
+ result.files.each { |file| puts "#{file.id}, #{file.name}" }
73
+ limit -= result.files.length
74
+ if result.next_page_token
75
+ page_token = result.next_page_token
76
+ else
77
+ page_token = nil
78
+ end
79
+ end while !page_token.nil? && limit > 0
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,50 @@
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/gmail_v1'
16
+ require 'base_cli'
17
+ require 'rmail'
18
+
19
+ module Samples
20
+ # Examples for the Gmail API
21
+ #
22
+ # Sample usage:
23
+ #
24
+ # $ ./google-api-samples gmail send 'Hello there!' \
25
+ # --to='recipient@example.com' --from='user@example.com' \
26
+ # --subject='Hello'
27
+ #
28
+ class Gmail < BaseCli
29
+ Gmail = Google::Apis::GmailV1
30
+
31
+ desc 'send TEXT', 'Send a message with the gmail API'
32
+ method_option :to, type: :string, required: true
33
+ method_option :from, type: :string, required: true
34
+ method_option :subject, type: :string, required: true
35
+ def send(body)
36
+ gmail = Gmail::GmailService.new
37
+ gmail.authorization = user_credentials_for(Gmail::AUTH_SCOPE)
38
+
39
+ message = RMail::Message.new
40
+ message.header['To'] = options[:to]
41
+ message.header['From'] = options[:from]
42
+ message.header['Subject'] = options[:subject]
43
+ message.body = body
44
+
45
+ gmail.send_user_message('me',
46
+ upload_source: StringIO.new(message.to_s),
47
+ content_type: 'message/rfc822')
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,114 @@
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/pubsub_v1'
16
+ require 'base_cli'
17
+
18
+
19
+ module Samples
20
+ # Examples for the Google Cloud Pub/Sub API.
21
+ #
22
+ # Sample usage session:
23
+ #
24
+ # $ ./google-api-samples pubsub create_topic mytopic --project=623040240964
25
+ # # ./google-api-samples pubsub subscribe mysub --topic=mytopic --project=623040240964
26
+ # $ ./google-api-samples pubsub publish 'Hello!' --topic=mytopic --project=623040240964
27
+ # $ ./google-api-samples pubsub pull mysub --project=623040240964
28
+ # Received: Hello!
29
+ # $ ./google-api-samples pubsub unsubscribe mysub --project=623040240964
30
+ # $ ./google-api-samples pubsub delete_topic mytopic --project=623040240964
31
+ #
32
+ class PubSub < BaseCli
33
+ Pubsub = Google::Apis::PubsubV1
34
+
35
+ desc 'create_topic TOPIC_NAME', 'Create a topic'
36
+ method_option :project, type: :string, required: true
37
+ def create_topic(name)
38
+ pubsub = Pubsub::PubsubService.new
39
+ pubsub.authorization = Google::Auth.get_application_default([Pubsub::AUTH_PUBSUB])
40
+ topic = "projects/#{options[:project]}/topics/#{name}"
41
+
42
+ pubsub.create_topic(topic)
43
+ end
44
+
45
+ desc 'delete_topic TOPIC_NAME', 'Delete a topic'
46
+ method_option :project, type: :string, required: true
47
+ def delete_topic(name)
48
+ pubsub = Pubsub::PubsubService.new
49
+ pubsub.authorization = Google::Auth.get_application_default([Pubsub::AUTH_PUBSUB])
50
+
51
+ topic = "projects/#{options[:project]}/topics/#{name}"
52
+
53
+ pubsub.delete_topic(topic)
54
+ end
55
+
56
+ desc 'subscribe SUBSCRIPTION_NAME', 'Subscribe to a topic'
57
+ method_option :project, type: :string, required: true
58
+ method_option :topic, type: :string, required: true
59
+ def subscribe(name)
60
+ pubsub = Pubsub::PubsubService.new
61
+ pubsub.authorization = Google::Auth.get_application_default([Pubsub::AUTH_PUBSUB])
62
+
63
+ topic = "projects/#{options[:project]}/topics/#{options[:topic]}"
64
+ subscription = "projects/#{options[:project]}/subscriptions/#{name}"
65
+ pubsub.create_subscription(subscription, Pubsub::Subscription.new(topic: topic))
66
+ end
67
+
68
+ desc 'unsubscribe subscription_name', 'Ububscribe from a topic'
69
+ method_option :project, type: :string, required: true
70
+ def unsubscribe(name)
71
+ pubsub = Pubsub::PubsubService.new
72
+ pubsub.authorization = Google::Auth.get_application_default([Pubsub::AUTH_PUBSUB])
73
+
74
+ subscription = "projects/#{options[:project]}/subscriptions/#{name}"
75
+ pubsub.delete_subscription(subscription)
76
+ end
77
+
78
+
79
+ desc 'publish MESSAGE', 'Publish a message to a topic'
80
+ method_option :project, type: :string, required: true
81
+ method_option :topic, type: :string, required: true
82
+ def publish(message)
83
+ pubsub = Pubsub::PubsubService.new
84
+ pubsub.authorization = Google::Auth.get_application_default([Pubsub::AUTH_PUBSUB])
85
+ topic = "projects/#{options[:project]}/topics/#{options[:topic]}"
86
+
87
+ request = Pubsub::PublishRequest.new(messages: [])
88
+ request.messages << Pubsub::Message.new(data: message)
89
+
90
+ pubsub.publish_topic(topic, request)
91
+ end
92
+
93
+ desc 'pull SUBSCRIPTION_NAME', 'Pull message(s) from the topic'
94
+ method_option :project, type: :string, required: true
95
+ method_option :max, type: :numeric, default: 5
96
+ def pull(name)
97
+ pubsub = Pubsub::PubsubService.new
98
+ pubsub.authorization = Google::Auth.get_application_default([Pubsub::AUTH_PUBSUB])
99
+
100
+ subscription = "projects/#{options[:project]}/subscriptions/#{name}"
101
+
102
+ # Pull messages
103
+ response = pubsub.pull_subscription(subscription, Pubsub::PullRequest.new(max_messages: options[:max]))
104
+ response.received_messages.each do |received_message|
105
+ data = received_message.message.data
106
+ puts "Received: #{data}"
107
+ end
108
+
109
+ # Acknowledge receipt
110
+ ack_ids = response.received_messages.map{ |msg| msg.ack_id }
111
+ pubsub.acknowledge_subscription(subscription, Pubsub::AcknowledgeRequest.new(ack_ids: ack_ids))
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,44 @@
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/translate_v2'
16
+ require 'base_cli'
17
+
18
+
19
+ module Samples
20
+ # Examples for the Google Translate API
21
+ #
22
+ # Sample usage:
23
+ #
24
+ # $ ./google-api-samples translate 'Hola!' --target='en'
25
+ # Hello
26
+ #
27
+ class Translate < BaseCli
28
+ Translate = Google::Apis::TranslateV2
29
+
30
+ desc 'translate PHRASE', 'Translate a phrase'
31
+ method_option :source, type: :string
32
+ method_option :target, type: :string, required: true
33
+ def translate(phrase)
34
+ translate = Translate::TranslateService.new
35
+ translate.key = api_key
36
+
37
+ result = translate.list_translations(phrase, options[:target], source: options[:source])
38
+ puts result.translations.first.translated_text
39
+ end
40
+
41
+ default_task :translate
42
+
43
+ end
44
+ end
@@ -0,0 +1,44 @@
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/youtube_v3'
16
+ require 'base_cli'
17
+
18
+
19
+ module Samples
20
+ # Examples for the YouTube APIs
21
+ #
22
+ # Sample usage:
23
+ #
24
+ # $ ./google-api-samples youtube upload ~/myvideo.mov --title="So funny!"
25
+ #
26
+ class YouTube < BaseCli
27
+ YT = Google::Apis::YoutubeV3
28
+
29
+ desc 'upload FILE', 'Upload a video to YouTube'
30
+ method_option :title, type: :string
31
+ def upload(file)
32
+ youtube = YT::YouTubeService.new
33
+ youtube.authorization = user_credentials_for(YT::AUTH_YOUTUBE)
34
+
35
+ metadata = {
36
+ snippet: {
37
+ title: options[:title] || file
38
+ }
39
+ }
40
+ result = youtube.insert_video('snippet', metadata, upload_source: file)
41
+ say "Upload complete"
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'google-api-client', '~> 0.9'
4
+ gem 'google-id-token', '~> 1.3'
5
+ gem 'sinatra', '~> 1.4'
6
+ gem 'redis', '~> 3.2'
7
+ gem 'dotenv'
@@ -0,0 +1,44 @@
1
+ # API Samples
2
+
3
+ This directory contains a simple Sinatra web app illustrating how to use the client
4
+ in a server-side web environment.
5
+
6
+ It illustrates a few key concepts:
7
+
8
+ * Using [Google Sign-in](https://developers.google.com/identity) for authentication.
9
+ * Using the [googleauth gem](https://github.com/google/google-auth-library-ruby) to
10
+ request incremental authorization as more permissions are needed.
11
+
12
+ # Setup
13
+
14
+ * Create a project at https://console.developers.google.com
15
+ * Go to the `API Manager` and enable the `Drive` and `Calendar` APIs
16
+ * Go to `Credentials` and create a new OAuth Client ID of type 'Web application'
17
+ * Use `http://localhost:4567/oauth2callback` as the redirect URL
18
+ * Use `http://localhost:4567` as the JavaScript origin
19
+
20
+ Additional details on how to enable APIs and create credentials can be
21
+ found in the help guide in the console.
22
+
23
+ ## Example Environment Settings
24
+
25
+ For convenience, application credentials can be read from the shell environment
26
+ or placed in a .env file.
27
+
28
+ After setup, your .env file might look something like:
29
+
30
+ ```
31
+ GOOGLE_CLIENT_ID=479164972499-i7j6av7bp2s4on5ltb7pjXXXXXXXXXX.apps.googleusercontent.com
32
+ GOOGLE_CLIENT_SECRET=JBotCTG5biFWGzXXXXXXXXXX
33
+ ```
34
+
35
+ # Running the samples
36
+
37
+ To start the server, run
38
+
39
+ ```
40
+ ruby app.rb
41
+ ```
42
+
43
+ Open `http://localhost:4567/` in your browser to explore the sample.
44
+
@@ -0,0 +1,120 @@
1
+ # Copyright 2015 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 'sinatra'
16
+ require 'googleauth'
17
+ require 'googleauth/stores/redis_token_store'
18
+ require 'google/apis/drive_v3'
19
+ require 'google/apis/calendar_v3'
20
+ require 'google-id-token'
21
+ require 'dotenv'
22
+
23
+ LOGIN_URL = '/'
24
+
25
+ configure do
26
+ Dotenv.load
27
+
28
+ Google::Apis::ClientOptions.default.application_name = 'Ruby client samples'
29
+ Google::Apis::ClientOptions.default.application_version = '0.9'
30
+ Google::Apis::RequestOptions.default.retries = 3
31
+
32
+ enable :sessions
33
+ set :show_exceptions, false
34
+ set :client_id, Google::Auth::ClientId.new(ENV['GOOGLE_CLIENT_ID'],
35
+ ENV['GOOGLE_CLIENT_SECRET'])
36
+ set :token_store, Google::Auth::Stores::RedisTokenStore.new(redis: Redis.new)
37
+ end
38
+
39
+ helpers do
40
+ # Returns credentials authorized for the requested scopes. If no credentials are available,
41
+ # redirects the user to authorize access.
42
+ def credentials_for(scope)
43
+ authorizer = Google::Auth::WebUserAuthorizer.new(settings.client_id, scope, settings.token_store)
44
+ user_id = session[:user_id]
45
+ redirect LOGIN_URL if user_id.nil?
46
+ credentials = authorizer.get_credentials(user_id, request)
47
+ if credentials.nil?
48
+ redirect authorizer.get_authorization_url(login_hint: user_id, request: request)
49
+ end
50
+ credentials
51
+ end
52
+
53
+ def resize(url, width)
54
+ url.sub(/s220/, sprintf('s%d', width))
55
+ end
56
+ end
57
+
58
+ # Home page
59
+ get('/') do
60
+ @client_id = settings.client_id.id
61
+ erb :home
62
+ end
63
+
64
+ # Log in the user by validating the identity token generated by the Google Sign-In button.
65
+ # This checks that the token is signed by Google, current, and is intended for this application.
66
+ #
67
+ post('/signin') do
68
+ audience = settings.client_id.id
69
+ # Important: The google-id-token gem is not production ready. If using, consider fetching and
70
+ # supplying the valid keys separately rather than using the built-in certificate fetcher.
71
+ validator = GoogleIDToken::Validator.new
72
+ claim = validator.check(params['id_token'], audience, audience)
73
+ if claim
74
+ session[:user_id] = claim['sub']
75
+ session[:user_email] = claim['email']
76
+ 200
77
+ else
78
+ logger.info('No valid identity token present')
79
+ 401
80
+ end
81
+ end
82
+
83
+ # Retrieve the 10 most recently modified files in Google Drive
84
+ get('/drive') do
85
+ drive = Google::Apis::DriveV3::DriveService.new
86
+ drive.authorization = credentials_for(Google::Apis::DriveV3::AUTH_DRIVE)
87
+ @result = drive.list_files(page_size: 10,
88
+ fields: 'files(name,modified_time,web_view_link),next_page_token')
89
+ erb :drive
90
+ end
91
+
92
+ # Retrieve the next 10 upcoming events from Google Calendar
93
+ get('/calendar') do
94
+ calendar = Google::Apis::CalendarV3::CalendarService.new
95
+ calendar.authorization = credentials_for(Google::Apis::CalendarV3::AUTH_CALENDAR)
96
+ calendar_id = 'primary'
97
+ @result = calendar.list_events(calendar_id,
98
+ max_results: 10,
99
+ single_events: true,
100
+ order_by: 'startTime',
101
+ time_min: Time.now.iso8601)
102
+ erb :calendar
103
+ end
104
+
105
+
106
+ # Callback for authorization requests. This saves the autorization code and
107
+ # redirects back to the URL that originally requested authorization. The code is
108
+ # redeemed on the next request.
109
+ #
110
+ # Important: While the deferred approach is generally easier, it doesn't play well
111
+ # with developer mode and sinatra's default cookie-based session implementation. Changes to the
112
+ # session state are lost if the page doesn't render due to error, which can lead to further
113
+ # errors indicating the code has already been redeemed.
114
+ #
115
+ # Disabling show_exceptions or using a different session provider (E.g. Rack::Session::Memcache)
116
+ # avoids the issue.
117
+ get('/oauth2callback') do
118
+ target_url = Google::Auth::WebUserAuthorizer.handle_auth_callback_deferred(request)
119
+ redirect target_url
120
+ end
@@ -0,0 +1,34 @@
1
+ <%#
2
+ # Copyright 2016 Google Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ %>
16
+ <section>
17
+ <h5>Next 10 events</h5>
18
+ <table class="">
19
+ <thead>
20
+ <tr>
21
+ <th class="">Time</th>
22
+ <th class="">Summary</th>
23
+ </tr>
24
+ </thead>
25
+ <tbody>
26
+ <% @result.items.each do |event| %>
27
+ <tr>
28
+ <td class=""><%= event.start.date_time || event.start.date %></td>
29
+ <td class=""><%= event.summary %></td>
30
+ </tr>
31
+ <% end %>
32
+ </tbody>
33
+ </table>
34
+ </section>
@@ -1,4 +1,5 @@
1
- # Copyright 2010 Google Inc.
1
+ <%#
2
+ # Copyright 2016 Google Inc.
2
3
  #
3
4
  # Licensed under the Apache License, Version 2.0 (the "License");
4
5
  # you may not use this file except in compliance with the License.
@@ -11,11 +12,22 @@
11
12
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
13
  # See the License for the specific language governing permissions and
13
14
  # limitations under the License.
15
+ %>
14
16
 
15
- require 'google/api_client/auth/pkcs12'
16
- require 'google/api_client/auth/jwt_asserter'
17
- require 'google/api_client/auth/key_utils'
18
- require 'google/api_client/auth/compute_service_account'
19
- require 'google/api_client/auth/storage'
20
- require 'google/api_client/auth/storages/redis_store'
21
- require 'google/api_client/auth/storages/file_store'
17
+ <h5>10 most recently modified files</h5>
18
+ <table class="">
19
+ <thead>
20
+ <tr>
21
+ <th class="">Name</th>
22
+ <th class="">Last Modified</th>
23
+ </tr>
24
+ </thead>
25
+ <tbody>
26
+ <% @result.files.each do |file| %>
27
+ <tr>
28
+ <td class=""><a href="<%= file.web_view_link %>"><%= file.name %></a></td>
29
+ <td class=""><%= file.modified_time %></td>
30
+ </tr>
31
+ <% end %>
32
+ </tbody>
33
+ </table>