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,300 @@
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 'spec_helper'
16
+ require 'google/apis/core/upload'
17
+ require 'google/apis/core/json_representation'
18
+ require 'hurley/test'
19
+
20
+ # TODO: JSON Response decoding
21
+ # TODO: Upload from IO
22
+ # TODO: Upload from file
23
+
24
+ RSpec.describe Google::Apis::Core::UploadIO do
25
+ context 'from_file' do
26
+ let(:upload_io) { Google::Apis::Core::UploadIO.from_file(file) }
27
+
28
+ context 'with text file' do
29
+ let(:file) { File.join(FIXTURES_DIR, 'files', 'test.txt') }
30
+ it 'should infer content type from file' do
31
+ expect(upload_io.content_type).to eql('text/plain')
32
+ end
33
+
34
+ it 'should allow overriding the mime type' do
35
+ io = Google::Apis::Core::UploadIO.from_file(file, content_type: 'application/json')
36
+ expect(io.content_type).to eql('application/json')
37
+ end
38
+ end
39
+
40
+ context 'with unknown type' do
41
+ let(:file) { File.join(FIXTURES_DIR, 'files', 'test.blah') }
42
+ it 'should use the default mime type' do
43
+ expect(upload_io.content_type).to eql('application/octet-stream')
44
+ end
45
+
46
+ it 'should allow overriding the mime type' do
47
+ io = Google::Apis::Core::UploadIO.from_file(file, content_type: 'application/json')
48
+ expect(io.content_type).to eql('application/json')
49
+ end
50
+
51
+ it 'should setup length of the stream' do
52
+ upload_io = Google::Apis::Core::UploadIO.from_file(file)
53
+ expect(upload_io.length).to eq File.size(file)
54
+ end
55
+
56
+ end
57
+ end
58
+
59
+ context 'from_io' do
60
+
61
+ context 'with i/o stream' do
62
+ let(:io) { StringIO.new 'Hello google' }
63
+
64
+ it 'should setup default content-type' do
65
+ upload_io = Google::Apis::Core::UploadIO.from_io(io)
66
+ expect(upload_io.content_type).to eql Google::Apis::Core::UploadIO::OCTET_STREAM_CONTENT_TYPE
67
+ end
68
+
69
+ it 'should allow overring the mime type' do
70
+ upload_io = Google::Apis::Core::UploadIO.from_io(io, content_type: 'application/x-gzip')
71
+ expect(upload_io.content_type).to eq('application/x-gzip')
72
+ end
73
+
74
+ it 'should setup length of the stream' do
75
+ upload_io = Google::Apis::Core::UploadIO.from_io(io)
76
+ expect(upload_io.length).to eq 'Hello google'.length
77
+ end
78
+ end
79
+
80
+ end
81
+ end
82
+
83
+ RSpec.describe Google::Apis::Core::RawUploadCommand do
84
+ include TestHelpers
85
+ include_context 'HTTP client'
86
+
87
+ let(:command) do
88
+ command = Google::Apis::Core::RawUploadCommand.new(:post, 'https://www.googleapis.com/zoo/animals')
89
+ command.upload_source = file
90
+ command.upload_content_type = 'text/plain'
91
+ command
92
+ end
93
+
94
+ shared_examples 'should upload' do
95
+ before(:example) do
96
+ stub_request(:post, 'https://www.googleapis.com/zoo/animals').to_return(body: '')
97
+ end
98
+
99
+ it 'should send content' do
100
+ command.execute(client)
101
+ expect(a_request(:post, 'https://www.googleapis.com/zoo/animals')
102
+ .with(body: "Hello world\n")).to have_been_made
103
+ end
104
+
105
+ it 'should send upload protocol' do
106
+ command.execute(client)
107
+ expect(a_request(:post, 'https://www.googleapis.com/zoo/animals')
108
+ .with { |req| req.headers['X-Goog-Upload-Protocol'] == 'raw' }).to have_been_made
109
+ end
110
+
111
+ it 'should send content-type header' do
112
+ command.execute(client)
113
+ expect(a_request(:post, 'https://www.googleapis.com/zoo/animals')
114
+ .with { |req| req.headers['X-Goog-Upload-Header-Content-Type'] == 'text/plain' }).to have_been_made
115
+ end
116
+ end
117
+
118
+ context('with StringIO input') do
119
+ let(:file) { StringIO.new("Hello world\n") }
120
+ include_examples 'should upload'
121
+ end
122
+
123
+ context('with IO input') do
124
+ let(:file) { File.open(File.join(FIXTURES_DIR, 'files', 'test.txt'), 'r') }
125
+ include_examples 'should upload'
126
+
127
+ it 'should not close stream' do
128
+ expect(file.closed?).to be false
129
+ end
130
+ end
131
+
132
+ context('with Tempfile input') do
133
+ let(:file) do
134
+ temp_file = Tempfile.new("tempfile")
135
+ temp_file.write("Hello world\n")
136
+ temp_file.rewind
137
+ temp_file
138
+ end
139
+ include_examples 'should upload'
140
+
141
+ it 'should not close stream' do
142
+ expect(file.closed?).to be false
143
+ end
144
+ end
145
+
146
+ context('with file path input') do
147
+ let(:file) { File.join(FIXTURES_DIR, 'files', 'test.txt') }
148
+ include_examples 'should upload'
149
+ end
150
+
151
+ context('with invalid input') do
152
+ let(:file) { -> {} }
153
+ it 'should raise client error' do
154
+ expect { command.execute(client) }.to raise_error(Google::Apis::ClientError)
155
+ end
156
+ end
157
+ end
158
+
159
+ RSpec.describe Google::Apis::Core::MultipartUploadCommand do
160
+ include TestHelpers
161
+ include_context 'HTTP client'
162
+
163
+ let(:command) do
164
+ command = Google::Apis::Core::MultipartUploadCommand.new(:post, 'https://www.googleapis.com/zoo/animals')
165
+ command.upload_source = StringIO.new('Hello world')
166
+ command.upload_content_type = 'text/plain'
167
+ command.body = 'metadata'
168
+ command
169
+ end
170
+
171
+ before(:example) do
172
+ stub_request(:post, 'https://www.googleapis.com/zoo/animals').to_return(body: %(Hello world))
173
+ end
174
+
175
+ it 'should send content' do
176
+ expected_body = <<EOF.gsub(/\n/, "\r\n")
177
+ --RubyApiClientUpload
178
+ Content-Type: application/json
179
+
180
+ metadata
181
+ --RubyApiClientUpload
182
+ Content-Length: 11
183
+ Content-Type: text/plain
184
+ Content-Transfer-Encoding: binary
185
+
186
+ Hello world
187
+ --RubyApiClientUpload--
188
+
189
+ EOF
190
+ command.execute(client)
191
+ expect(a_request(:post, 'https://www.googleapis.com/zoo/animals')
192
+ .with(body: expected_body)).to have_been_made
193
+ end
194
+
195
+ it 'should send upload protocol' do
196
+ command.execute(client)
197
+ expect(a_request(:post, 'https://www.googleapis.com/zoo/animals')
198
+ .with { |req| req.headers['X-Goog-Upload-Protocol'] == 'multipart' }).to have_been_made
199
+ end
200
+ end
201
+
202
+ RSpec.describe Google::Apis::Core::ResumableUploadCommand do
203
+ include TestHelpers
204
+ include_context 'HTTP client'
205
+
206
+ let(:command) do
207
+ command = Google::Apis::Core::ResumableUploadCommand.new(:post, 'https://www.googleapis.com/zoo/animals')
208
+ command.upload_source = StringIO.new('Hello world')
209
+ command.upload_content_type = 'text/plain'
210
+ command
211
+ end
212
+
213
+ context 'with uninterrupted upload' do
214
+ before(:example) do
215
+ stub_request(:post, 'https://www.googleapis.com/zoo/animals')
216
+ .to_return(headers: { 'X-Goog-Upload-Status' => 'active', 'X-Goog-Upload-URL' => 'https://www.googleapis.com/zoo/animals' })
217
+ .to_return(headers: { 'X-Goog-Upload-Status' => 'final' }, body: %(OK))
218
+ end
219
+
220
+ it 'should send upload protocol' do
221
+ command.execute(client)
222
+ expect(a_request(:post, 'https://www.googleapis.com/zoo/animals')
223
+ .with { |req| req.headers['X-Goog-Upload-Protocol'] == 'resumable' }).to have_been_made
224
+ end
225
+
226
+ it 'should send start command' do
227
+ command.execute(client)
228
+ expect(a_request(:post, 'https://www.googleapis.com/zoo/animals')
229
+ .with { |req| req.headers['X-Goog-Upload-Command'] == 'start' }).to have_been_made
230
+ end
231
+
232
+ it 'should send upload command' do
233
+ command.execute(client)
234
+ expect(a_request(:post, 'https://www.googleapis.com/zoo/animals')
235
+ .with { |req| req.headers['X-Goog-Upload-Command'].include?('upload') }).to have_been_made
236
+ end
237
+
238
+ it 'should send upload content' do
239
+ command.execute(client)
240
+ expect(a_request(:post, 'https://www.googleapis.com/zoo/animals')
241
+ .with(body: 'Hello world')).to have_been_made
242
+ end
243
+ end
244
+
245
+ context 'with retriable error on start' do
246
+ before(:example) do
247
+ stub_request(:post, 'https://www.googleapis.com/zoo/animals')
248
+ .to_timeout
249
+ .to_return(headers: { 'X-Goog-Upload-Status' => 'active', 'X-Goog-Upload-URL' => 'https://www.googleapis.com/zoo/animals' })
250
+ .to_return(headers: { 'X-Goog-Upload-Status' => 'active', 'X-Goog-Upload-Size-Received' => '6' })
251
+ .to_return(headers: { 'X-Goog-Upload-Status' => 'final' }, body: %(OK))
252
+ end
253
+
254
+ it 'should retry start command and continue' do
255
+ command.execute(client)
256
+ expect(a_request(:post, 'https://www.googleapis.com/zoo/animals')
257
+ .with(body: 'Hello world')).to have_been_made
258
+ end
259
+ end
260
+
261
+ context 'with non-retriable authorization error on start' do
262
+ before(:example) do
263
+ stub_request(:post, 'https://www.googleapis.com/zoo/animals')
264
+ .to_return(status: [401, 'unauthorized'], headers: { 'X-Goog-Upload-Status' => 'final' }, body: %(unauthorized))
265
+ end
266
+
267
+ it 'should propagate the original error' do
268
+ expect { command.execute(client) }.to raise_error Google::Apis::AuthorizationError
269
+ end
270
+ end
271
+
272
+ context 'with interruption' do
273
+ before(:example) do
274
+ stub_request(:post, 'https://www.googleapis.com/zoo/animals')
275
+ .to_return(headers: { 'X-Goog-Upload-Status' => 'active', 'X-Goog-Upload-URL' => 'https://www.googleapis.com/zoo/animals' })
276
+ .to_return(status: [500, 'Server error'])
277
+ .to_return(headers: { 'X-Goog-Upload-Status' => 'active', 'X-Goog-Upload-Size-Received' => '6' })
278
+ .to_return(headers: { 'X-Goog-Upload-Status' => 'final' }, body: %(OK))
279
+ end
280
+
281
+ it 'should send remaining upload content after failure' do
282
+ command.execute(client)
283
+ expect(a_request(:post, 'https://www.googleapis.com/zoo/animals')
284
+ .with(body: 'world')).to have_been_made
285
+ end
286
+ end
287
+
288
+ context 'with cancelled upload' do
289
+ before(:example) do
290
+ stub_request(:post, 'https://www.googleapis.com/zoo/animals')
291
+ .to_return(headers: { 'X-Goog-Upload-Status' => 'active', 'X-Goog-Upload-URL' => 'https://www.googleapis.com/zoo/animals' })
292
+ .to_return(status: [500, 'Server error'])
293
+ .to_return(headers: { 'X-Goog-Upload-Status' => 'cancelled' })
294
+ end
295
+
296
+ it 'should raise error' do
297
+ expect { command.execute(client) }.to raise_error Google::Apis::ClientError
298
+ end
299
+ end
300
+ end
@@ -1,4 +1,4 @@
1
- # Copyright 2010 Google Inc.
1
+ # Copyright 2015 Google Inc.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -12,8 +12,16 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ require 'spec_helper'
15
16
 
16
- require 'google/api_client/discovery/api'
17
- require 'google/api_client/discovery/resource'
18
- require 'google/api_client/discovery/method'
19
- require 'google/api_client/discovery/schema'
17
+ RSpec.describe Google::Apis do
18
+ # Minimal test just to ensure no syntax errors in generated code
19
+ it 'should load all APIs' do
20
+ expect do
21
+ Dir.glob(File.join(ROOT_DIR, 'generated', 'google', 'apis', '*.rb')) do |file|
22
+ base = File.basename(file, '.rb')
23
+ require sprintf('google/apis/%s', base)
24
+ end
25
+ end.not_to raise_error
26
+ end
27
+ end
@@ -0,0 +1,324 @@
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 'spec_helper'
16
+ require 'google/apis/generator'
17
+ require 'tmpdir'
18
+ require 'fileutils'
19
+
20
+ # TODO - Naked arrays in method requests/responses
21
+
22
+ RSpec.describe Google::Apis::Generator do
23
+ include TestHelpers
24
+
25
+ context 'with test API' do
26
+ before(:context) do
27
+ generator = Google::Apis::Generator.new(api_names: File.join(FIXTURES_DIR, 'files', 'api_names.yaml'))
28
+ discovery = File.read(File.join(FIXTURES_DIR, 'files', 'test_api.json'))
29
+ generated_files = generator.render(discovery)
30
+ puts generator.dump_api_names
31
+ tempdir = Dir.mktmpdir
32
+ generated_files.each do |key, content|
33
+ path = File.join(tempdir, key)
34
+ FileUtils.mkdir_p(File.dirname(path))
35
+ File.open(path, 'w') do |f|
36
+ f.write(content)
37
+ end
38
+ end
39
+ $LOAD_PATH.unshift(tempdir)
40
+ require 'google/apis/test_v1'
41
+ end
42
+
43
+ let(:service) { Google::Apis::TestV1::TestService.new }
44
+
45
+ context 'with the generated service' do
46
+ it 'should set the base URL' do
47
+ expect(service.root_url.to_s).to eql('https://www.googleapis.com/')
48
+ end
49
+
50
+ it 'should define global methods from discovery' do
51
+ expect(service.method(:query)).to_not be_nil
52
+ end
53
+
54
+ it 'should define parameters on methods' do
55
+ parameters = service.method(:query).parameters.map { |(_k, v)| v }
56
+ expect(parameters).to include(:s, :i, :n, :b, :a, :e, :er, :sr)
57
+ end
58
+
59
+ it 'should modify parameter names that are ruby keywords' do
60
+ parameters = service.method(:query).parameters.map { |(_k, v)| v }
61
+ expect(parameters).to include(:do_)
62
+ end
63
+
64
+ it 'should define global parameters on methods' do
65
+ parameters = service.method(:query).parameters.map { |(_k, v)| v }
66
+ expect(parameters).to include(:fields, :quota_user, :user_ip)
67
+ end
68
+
69
+ it 'should include standard options & block' do
70
+ parameters = service.method(:query).parameters.map { |(_k, v)| v }
71
+ expect(parameters).to include(:options, :block)
72
+ end
73
+
74
+ it 'should define AUTH_TEST scope' do
75
+ expect(Google::Apis::TestV1::AUTH_TEST).to eql ('https://www.googleapis.com/auth/test')
76
+ end
77
+
78
+ it 'should define AUTH_TEST_READONLY scope' do
79
+ expect(Google::Apis::TestV1::AUTH_TEST_READONLY).to eql ('https://www.googleapis.com/auth/test.readonly')
80
+ end
81
+
82
+ context 'when simplifying class names' do
83
+ it 'should simplify the TestAnotherThing name' do
84
+ expect { Google::Apis::TestV1::AnotherThing.new }.not_to raise_error
85
+ end
86
+
87
+ it 'should not simplify the TestThing name' do
88
+ expect { Google::Apis::TestV1::TestThing.new }.not_to raise_error
89
+ end
90
+ end
91
+
92
+
93
+ context 'with the Thing resource' do
94
+ it 'should define the create method`' do
95
+ expect(service.method(:create_thing)).to_not be_nil
96
+ end
97
+
98
+ it 'should define the list method`' do
99
+ expect(service.method(:list_things)).to_not be_nil
100
+ end
101
+
102
+ it 'should define the get method`' do
103
+ expect(service.method(:get_thing)).to_not be_nil
104
+ end
105
+
106
+ it 'should include the download_dest parameter for get_thing' do
107
+ parameters = service.method(:get_thing).parameters.map { |(_k, v)| v }
108
+ expect(parameters).to include(:download_dest)
109
+ end
110
+
111
+ it 'should define the update method`' do
112
+ expect(service.method(:update_thing)).to_not be_nil
113
+ end
114
+
115
+ it 'should include the upload_source parameter for update_thing' do
116
+ parameters = service.method(:update_thing).parameters.map { |(_k, v)| v }
117
+ expect(parameters).to include(:upload_source)
118
+ end
119
+
120
+ it 'should define subresource methods' do
121
+ expect(service.method(:list_thing_subthings)).to_not be_nil
122
+ end
123
+
124
+ context 'With the from_json method' do
125
+ let(:json) do
126
+ <<EOF
127
+ {
128
+ "name" : "A thing",
129
+ "properties": {
130
+ "prop_a" : "value_a"
131
+ },
132
+ "photo": {
133
+ "filename": "image.jpg"
134
+ },
135
+ "hat": {
136
+ "type": "topHat",
137
+ "height": 100
138
+ }
139
+ }
140
+ EOF
141
+ end
142
+
143
+ let(:thing) { Google::Apis::TestV1::Thing.from_json(json) }
144
+
145
+ it 'should return a thing' do
146
+ expect(thing).to be_instance_of(Google::Apis::TestV1::Thing)
147
+ end
148
+
149
+ it 'should parse properties' do
150
+ expect(thing.name).to eq 'A thing'
151
+ end
152
+
153
+ it 'should parse subtypes' do
154
+ expect(thing.photo.filename).to eq "image.jpg"
155
+ end
156
+ end
157
+
158
+ context 'With the to_json method' do
159
+ let(:thing) do
160
+ Google::Apis::TestV1::Thing.new(
161
+ name: "A thing",
162
+ properties: {
163
+ prop_a: "value_a"
164
+ },
165
+ photo: {
166
+ filename: "image.jpg"
167
+ },
168
+ hat: {
169
+ type: "topHat",
170
+ height: 100
171
+ }
172
+ )
173
+ end
174
+ end
175
+ end
176
+
177
+ context 'with the get_thing method' do
178
+ before(:example) do
179
+ json = <<EOF
180
+ {
181
+ "id" : "123",
182
+ "name" : "A thing",
183
+ "enabled": true,
184
+ "properties": {
185
+ "prop_a" : "value_a",
186
+ "prop_b" : "value_b"
187
+ },
188
+ "photo": {
189
+ "filename": "image.jpg"
190
+ },
191
+ "hat": {
192
+ "type": "baseballHat",
193
+ "color": "red"
194
+ }
195
+ }
196
+ EOF
197
+ stub_request(:get, 'https://www.googleapis.com/test/v1/things/123')
198
+ .to_return(headers: { 'Content-Type' => 'application/json' }, body: json)
199
+ end
200
+
201
+ let(:thing) { service.get_thing('123') }
202
+
203
+ it 'should return a Thing' do
204
+ expect(thing).to be_instance_of(Google::Apis::TestV1::Thing)
205
+ end
206
+
207
+ it 'should set attributes' do
208
+ expect(thing.id).to eql '123'
209
+ end
210
+
211
+ it 'should alias boolean methods on Thing' do
212
+ expect(thing.enabled?).to be true
213
+ end
214
+
215
+ it 'should return a Hash for properties' do
216
+ expect(thing.properties).to be_instance_of(Hash)
217
+ end
218
+
219
+ it 'should set hash elements' do
220
+ expect(thing.properties).to include('prop_a' => 'value_a')
221
+ end
222
+
223
+ it 'should return the correct variant type for hat' do
224
+ expect(thing.hat).to be_instance_of(Google::Apis::TestV1::BaseballHat)
225
+ end
226
+
227
+ it 'should return the correct variant properties for hat' do
228
+ expect(thing.hat.color).to eql 'red'
229
+ end
230
+
231
+ it 'should return a photo' do
232
+ expect(thing.photo).to be_instance_of(Google::Apis::TestV1::Thing::Photo)
233
+ end
234
+
235
+ it 'should return photo properties' do
236
+ expect(thing.photo.filename).to eql 'image.jpg'
237
+ end
238
+ end
239
+
240
+ context 'with the create_thing method' do
241
+ before(:example) do
242
+ json = <<EOF
243
+ {
244
+ "id" : "123",
245
+ "name" : "A thing",
246
+ "properties": {
247
+ "prop_a" : "value_a"
248
+ },
249
+ "photo": {
250
+ "filename": "image.jpg"
251
+ },
252
+ "hat": {
253
+ "type": "topHat",
254
+ "height": 100
255
+ }
256
+ }
257
+ EOF
258
+ stub_request(:post, 'https://www.googleapis.com/test/v1/things')
259
+ .to_return(headers: { 'Content-Type' => 'application/json' }, body: json)
260
+ end
261
+
262
+ let(:thing) do
263
+ thing = Google::Apis::TestV1::Thing.new(name: 'A thing', properties: { 'prop_a' => 'value_a' })
264
+ thing.photo = Google::Apis::TestV1::Thing::Photo.new(filename: 'image.jpg')
265
+ thing.hat = Google::Apis::TestV1::TopHat.new(type: 'topHat', height: 100)
266
+ service.create_thing(thing)
267
+ end
268
+
269
+ it 'should serialize the thing' do
270
+ expected_body = <<EOF
271
+ {
272
+ "name" : "A thing",
273
+ "properties": {
274
+ "prop_a" : "value_a"
275
+ },
276
+ "photo": {
277
+ "filename": "image.jpg"
278
+ },
279
+ "hat": {
280
+ "type": "topHat",
281
+ "height": 100
282
+ }
283
+ }
284
+ EOF
285
+ expect(thing).to be_instance_of(Google::Apis::TestV1::Thing)
286
+ expect(a_request(:post, 'https://www.googleapis.com/test/v1/things')
287
+ .with { |req| expect(req.body).to be_json_eql(expected_body) }).to have_been_made
288
+ end
289
+
290
+ it 'should an updated id' do
291
+ expect(thing.id).to eql '123'
292
+ end
293
+ end
294
+
295
+ context 'with the query method' do
296
+ before(:example) do
297
+ body = %({"rows": [{"value": "hello"}, {"value": "world"}]})
298
+ stub_request(:get, 'https://www.googleapis.com/test/v1/query')
299
+ .to_return(headers: { 'Content-Type' => 'application/json' }, body: body)
300
+ end
301
+
302
+ it 'should return query results' do
303
+ results = service.query
304
+ expect(results).to be_instance_of(Google::Apis::TestV1::QueryResults)
305
+ end
306
+
307
+ it 'should return an array for items' do
308
+ results = service.query
309
+ expect(results.rows).to be_instance_of(Array)
310
+ end
311
+
312
+ it 'should return items of type Row' do
313
+ results = service.query
314
+ expect(results.rows.first).to be_instance_of(Google::Apis::TestV1::Row)
315
+ end
316
+
317
+ it 'should return values for rows' do
318
+ results = service.query
319
+ expect(results.rows[1].value).to eql('world')
320
+ end
321
+ end
322
+ end
323
+ end
324
+ end
@@ -0,0 +1,45 @@
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 'spec_helper'
16
+ require 'google/apis'
17
+ require 'google/apis/core/logging'
18
+
19
+ RSpec.describe Google::Apis do
20
+ it 'should have a default logger' do
21
+ expect(Google::Apis.logger).to be_an_instance_of(Logger)
22
+ end
23
+
24
+ context 'with service' do
25
+ let(:service) do
26
+ Class.new do
27
+ include Google::Apis::Core::Logging
28
+ end.new
29
+ end
30
+
31
+ it 'should have a logger' do
32
+ expect(service.logger).to be_an_instance_of(Logger)
33
+ end
34
+
35
+ it 'should use the default logger' do
36
+ expect(service.logger).to be Google::Apis.logger
37
+ end
38
+
39
+ it 'should allow custom loggers' do
40
+ Google::Apis.logger = Logger.new(STDERR)
41
+ expect(service.logger).to be Google::Apis.logger
42
+ end
43
+
44
+ end
45
+ end