google-api-client 0.8.7 → 0.9

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 (497) 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 +22 -0
  7. data/.yardopts +12 -0
  8. data/CHANGELOG.md +40 -4
  9. data/CONTRIBUTING.md +31 -0
  10. data/Gemfile +32 -2
  11. data/MIGRATING.md +171 -0
  12. data/README.md +181 -148
  13. data/Rakefile +1 -40
  14. data/api_names.yaml +1036 -0
  15. data/api_names_out.yaml +26053 -0
  16. data/bin/generate-api +95 -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/adexchangeseller_v2_0/classes.rb +792 -0
  22. data/generated/google/apis/adexchangeseller_v2_0/representations.rb +309 -0
  23. data/generated/google/apis/adexchangeseller_v2_0/service.rb +668 -0
  24. data/generated/google/apis/adexchangeseller_v2_0.rb +38 -0
  25. data/generated/google/apis/admin_datatransfer_v1/classes.rb +267 -0
  26. data/generated/google/apis/admin_datatransfer_v1/representations.rb +118 -0
  27. data/generated/google/apis/admin_datatransfer_v1/service.rb +262 -0
  28. data/generated/google/apis/admin_datatransfer_v1.rb +37 -0
  29. data/generated/google/apis/admin_directory_v1/classes.rb +3141 -0
  30. data/generated/google/apis/admin_directory_v1/representations.rb +1029 -0
  31. data/generated/google/apis/admin_directory_v1/service.rb +3818 -0
  32. data/generated/google/apis/admin_directory_v1.rb +113 -0
  33. data/generated/google/apis/admin_reports_v1/classes.rb +582 -0
  34. data/generated/google/apis/admin_reports_v1/representations.rb +231 -0
  35. data/generated/google/apis/admin_reports_v1/service.rb +336 -0
  36. data/generated/google/apis/admin_reports_v1.rb +38 -0
  37. data/generated/google/apis/adsense_v1_4/classes.rb +1285 -0
  38. data/generated/google/apis/adsense_v1_4/representations.rb +494 -0
  39. data/generated/google/apis/adsense_v1_4/service.rb +1714 -0
  40. data/generated/google/apis/adsense_v1_4.rb +38 -0
  41. data/generated/google/apis/adsensehost_v4_1/classes.rb +834 -0
  42. data/generated/google/apis/adsensehost_v4_1/representations.rb +327 -0
  43. data/generated/google/apis/adsensehost_v4_1/service.rb +1164 -0
  44. data/generated/google/apis/adsensehost_v4_1.rb +35 -0
  45. data/generated/google/apis/analytics_v3/classes.rb +5118 -0
  46. data/generated/google/apis/analytics_v3/representations.rb +1662 -0
  47. data/generated/google/apis/analytics_v3/service.rb +3568 -0
  48. data/generated/google/apis/analytics_v3.rb +49 -0
  49. data/generated/google/apis/androidenterprise_v1/classes.rb +1443 -0
  50. data/generated/google/apis/androidenterprise_v1/representations.rb +538 -0
  51. data/generated/google/apis/androidenterprise_v1/service.rb +2602 -0
  52. data/generated/google/apis/androidenterprise_v1.rb +35 -0
  53. data/generated/google/apis/androidpublisher_v2/classes.rb +1411 -0
  54. data/generated/google/apis/androidpublisher_v2/representations.rb +646 -0
  55. data/generated/google/apis/androidpublisher_v2/service.rb +2338 -0
  56. data/generated/google/apis/androidpublisher_v2.rb +34 -0
  57. data/generated/google/apis/appengine_v1beta4/classes.rb +1532 -0
  58. data/generated/google/apis/appengine_v1beta4/representations.rb +526 -0
  59. data/generated/google/apis/appengine_v1beta4/service.rb +476 -0
  60. data/generated/google/apis/appengine_v1beta4.rb +35 -0
  61. data/generated/google/apis/appsactivity_v1/classes.rb +392 -0
  62. data/generated/google/apis/appsactivity_v1/representations.rb +184 -0
  63. data/generated/google/apis/appsactivity_v1/service.rb +128 -0
  64. data/generated/google/apis/appsactivity_v1.rb +46 -0
  65. data/generated/google/apis/appstate_v1/classes.rb +154 -0
  66. data/generated/google/apis/appstate_v1/representations.rb +79 -0
  67. data/generated/google/apis/appstate_v1/service.rb +260 -0
  68. data/generated/google/apis/appstate_v1.rb +34 -0
  69. data/generated/google/apis/autoscaler_v1beta2/classes.rb +747 -0
  70. data/generated/google/apis/autoscaler_v1beta2/representations.rb +281 -0
  71. data/generated/google/apis/autoscaler_v1beta2/service.rb +478 -0
  72. data/generated/google/apis/autoscaler_v1beta2.rb +38 -0
  73. data/generated/google/apis/bigquery_v2/classes.rb +2471 -0
  74. data/generated/google/apis/bigquery_v2/representations.rb +816 -0
  75. data/generated/google/apis/bigquery_v2/service.rb +982 -0
  76. data/generated/google/apis/bigquery_v2.rb +52 -0
  77. data/generated/google/apis/blogger_v3/classes.rb +1354 -0
  78. data/generated/google/apis/blogger_v3/representations.rb +562 -0
  79. data/generated/google/apis/blogger_v3/service.rb +1587 -0
  80. data/generated/google/apis/blogger_v3.rb +37 -0
  81. data/generated/google/apis/books_v1/classes.rb +3956 -0
  82. data/generated/google/apis/books_v1/representations.rb +1538 -0
  83. data/generated/google/apis/books_v1/service.rb +2290 -0
  84. data/generated/google/apis/books_v1.rb +34 -0
  85. data/generated/google/apis/calendar_v3/classes.rb +1742 -0
  86. data/generated/google/apis/calendar_v3/representations.rb +567 -0
  87. data/generated/google/apis/calendar_v3/service.rb +1968 -0
  88. data/generated/google/apis/calendar_v3.rb +37 -0
  89. data/generated/google/apis/civicinfo_v2/classes.rb +1127 -0
  90. data/generated/google/apis/civicinfo_v2/representations.rb +383 -0
  91. data/generated/google/apis/civicinfo_v2/service.rb +279 -0
  92. data/{lib/google/api_client/service_account.rb → generated/google/apis/civicinfo_v2.rb} +18 -8
  93. data/generated/google/apis/classroom_v1/classes.rb +512 -0
  94. data/generated/google/apis/classroom_v1/representations.rb +217 -0
  95. data/generated/google/apis/classroom_v1/service.rb +970 -0
  96. data/generated/google/apis/classroom_v1.rb +49 -0
  97. data/generated/google/apis/classroom_v1beta1/classes.rb +447 -0
  98. data/generated/google/apis/classroom_v1beta1/representations.rb +190 -0
  99. data/generated/google/apis/classroom_v1beta1/service.rb +791 -0
  100. data/generated/google/apis/classroom_v1beta1.rb +49 -0
  101. data/generated/google/apis/cloudbilling_v1/classes.rb +169 -0
  102. data/generated/google/apis/cloudbilling_v1/representations.rb +79 -0
  103. data/generated/google/apis/cloudbilling_v1/service.rb +258 -0
  104. data/generated/google/apis/cloudbilling_v1.rb +35 -0
  105. data/generated/google/apis/clouddebugger_v2/classes.rb +1004 -0
  106. data/generated/google/apis/clouddebugger_v2/representations.rb +410 -0
  107. data/generated/google/apis/clouddebugger_v2/service.rb +370 -0
  108. data/generated/google/apis/clouddebugger_v2.rb +41 -0
  109. data/generated/google/apis/cloudmonitoring_v2beta2/classes.rb +679 -0
  110. data/generated/google/apis/cloudmonitoring_v2beta2/representations.rb +311 -0
  111. data/generated/google/apis/cloudmonitoring_v2beta2/service.rb +452 -0
  112. data/generated/google/apis/cloudmonitoring_v2beta2.rb +37 -0
  113. data/generated/google/apis/cloudresourcemanager_v1beta1/classes.rb +437 -0
  114. data/generated/google/apis/cloudresourcemanager_v1beta1/representations.rb +188 -0
  115. data/generated/google/apis/cloudresourcemanager_v1beta1/service.rb +623 -0
  116. data/generated/google/apis/cloudresourcemanager_v1beta1.rb +38 -0
  117. data/generated/google/apis/cloudtrace_v1/classes.rb +188 -0
  118. data/generated/google/apis/cloudtrace_v1/representations.rb +92 -0
  119. data/generated/google/apis/cloudtrace_v1/service.rb +190 -0
  120. data/generated/google/apis/cloudtrace_v1.rb +35 -0
  121. data/generated/google/apis/clouduseraccounts_beta/classes.rb +823 -0
  122. data/generated/google/apis/clouduseraccounts_beta/representations.rb +313 -0
  123. data/generated/google/apis/clouduseraccounts_beta/service.rb +854 -0
  124. data/generated/google/apis/clouduseraccounts_beta.rb +43 -0
  125. data/generated/google/apis/compute_beta/classes.rb +9128 -0
  126. data/generated/google/apis/compute_beta/representations.rb +3048 -0
  127. data/generated/google/apis/compute_beta/service.rb +10154 -0
  128. data/generated/google/apis/compute_beta.rb +49 -0
  129. data/generated/google/apis/compute_v1/classes.rb +8681 -0
  130. data/generated/google/apis/compute_v1/representations.rb +2895 -0
  131. data/generated/google/apis/compute_v1/service.rb +9252 -0
  132. data/generated/google/apis/compute_v1.rb +49 -0
  133. data/generated/google/apis/container_v1/classes.rb +463 -0
  134. data/generated/google/apis/container_v1/representations.rb +175 -0
  135. data/generated/google/apis/container_v1/service.rb +367 -0
  136. data/generated/google/apis/container_v1.rb +35 -0
  137. data/generated/google/apis/container_v1beta1/classes.rb +466 -0
  138. data/generated/google/apis/container_v1beta1/representations.rb +177 -0
  139. data/generated/google/apis/container_v1beta1/service.rb +394 -0
  140. data/generated/google/apis/container_v1beta1.rb +35 -0
  141. data/generated/google/apis/content_v2/classes.rb +5986 -0
  142. data/generated/google/apis/content_v2/representations.rb +2288 -0
  143. data/generated/google/apis/content_v2/service.rb +2338 -0
  144. data/generated/google/apis/content_v2.rb +35 -0
  145. data/generated/google/apis/coordinate_v1/classes.rb +669 -0
  146. data/generated/google/apis/coordinate_v1/representations.rb +285 -0
  147. data/generated/google/apis/coordinate_v1/service.rb +678 -0
  148. data/generated/google/apis/coordinate_v1.rb +37 -0
  149. data/generated/google/apis/customsearch_v1/classes.rb +771 -0
  150. data/generated/google/apis/customsearch_v1/representations.rb +276 -0
  151. data/generated/google/apis/customsearch_v1/service.rb +207 -0
  152. data/{lib/google/api_client/auth/compute_service_account.rb → generated/google/apis/customsearch_v1.rb} +13 -10
  153. data/generated/google/apis/datastore_v1beta2/classes.rb +1186 -0
  154. data/generated/google/apis/datastore_v1beta2/representations.rb +526 -0
  155. data/generated/google/apis/datastore_v1beta2/service.rb +294 -0
  156. data/generated/google/apis/datastore_v1beta2.rb +40 -0
  157. data/generated/google/apis/deploymentmanager_v2/classes.rb +1091 -0
  158. data/generated/google/apis/deploymentmanager_v2/representations.rb +422 -0
  159. data/generated/google/apis/deploymentmanager_v2/service.rb +857 -0
  160. data/generated/google/apis/deploymentmanager_v2.rb +44 -0
  161. data/generated/google/apis/deploymentmanager_v2beta2/classes.rb +843 -0
  162. data/generated/google/apis/deploymentmanager_v2beta2/representations.rb +306 -0
  163. data/generated/google/apis/deploymentmanager_v2beta2/service.rb +689 -0
  164. data/generated/google/apis/deploymentmanager_v2beta2.rb +44 -0
  165. data/generated/google/apis/dfareporting_v2_1/classes.rb +10770 -0
  166. data/generated/google/apis/dfareporting_v2_1/representations.rb +3438 -0
  167. data/generated/google/apis/dfareporting_v2_1/service.rb +8585 -0
  168. data/generated/google/apis/dfareporting_v2_1.rb +37 -0
  169. data/generated/google/apis/discovery_v1/classes.rb +961 -0
  170. data/generated/google/apis/discovery_v1/representations.rb +357 -0
  171. data/generated/google/apis/discovery_v1/service.rb +142 -0
  172. data/generated/google/apis/discovery_v1.rb +32 -0
  173. data/generated/google/apis/dns_v1/classes.rb +406 -0
  174. data/generated/google/apis/dns_v1/representations.rb +151 -0
  175. data/generated/google/apis/dns_v1/service.rb +454 -0
  176. data/generated/google/apis/dns_v1.rb +44 -0
  177. data/generated/google/apis/doubleclickbidmanager_v1/classes.rb +716 -0
  178. data/generated/google/apis/doubleclickbidmanager_v1/representations.rb +298 -0
  179. data/generated/google/apis/doubleclickbidmanager_v1/service.rb +341 -0
  180. data/generated/google/apis/doubleclickbidmanager_v1.rb +31 -0
  181. data/generated/google/apis/doubleclicksearch_v2/classes.rb +956 -0
  182. data/generated/google/apis/doubleclicksearch_v2/representations.rb +316 -0
  183. data/generated/google/apis/doubleclicksearch_v2/service.rb +480 -0
  184. data/generated/google/apis/doubleclicksearch_v2.rb +35 -0
  185. data/generated/google/apis/drive_v2/classes.rb +2562 -0
  186. data/generated/google/apis/drive_v2/representations.rb +795 -0
  187. data/generated/google/apis/drive_v2/service.rb +2696 -0
  188. data/generated/google/apis/drive_v2.rb +58 -0
  189. data/generated/google/apis/drive_v3/classes.rb +1534 -0
  190. data/generated/google/apis/drive_v3/representations.rb +497 -0
  191. data/generated/google/apis/drive_v3/service.rb +1541 -0
  192. data/generated/google/apis/drive_v3.rb +55 -0
  193. data/generated/google/apis/fitness_v1/classes.rb +885 -0
  194. data/generated/google/apis/fitness_v1/representations.rb +320 -0
  195. data/generated/google/apis/fitness_v1/service.rb +675 -0
  196. data/generated/google/apis/fitness_v1.rb +49 -0
  197. data/generated/google/apis/fusiontables_v2/classes.rb +1048 -0
  198. data/generated/google/apis/fusiontables_v2/representations.rb +409 -0
  199. data/generated/google/apis/fusiontables_v2/service.rb +1463 -0
  200. data/generated/google/apis/fusiontables_v2.rb +37 -0
  201. data/generated/google/apis/games_configuration_v1configuration/classes.rb +506 -0
  202. data/generated/google/apis/games_configuration_v1configuration/representations.rb +206 -0
  203. data/generated/google/apis/games_configuration_v1configuration/service.rb +565 -0
  204. data/generated/google/apis/games_configuration_v1configuration.rb +34 -0
  205. data/generated/google/apis/games_management_v1management/classes.rb +524 -0
  206. data/generated/google/apis/games_management_v1management/representations.rb +231 -0
  207. data/generated/google/apis/games_management_v1management/service.rb +994 -0
  208. data/generated/google/apis/games_management_v1management.rb +37 -0
  209. data/generated/google/apis/games_v1/classes.rb +4617 -0
  210. data/generated/google/apis/games_v1/representations.rb +1584 -0
  211. data/generated/google/apis/games_v1/service.rb +2290 -0
  212. data/generated/google/apis/games_v1.rb +40 -0
  213. data/generated/google/apis/gan_v1beta1/classes.rb +1428 -0
  214. data/generated/google/apis/gan_v1beta1/representations.rb +428 -0
  215. data/generated/google/apis/gan_v1beta1/service.rb +682 -0
  216. data/generated/google/apis/gan_v1beta1.rb +31 -0
  217. data/generated/google/apis/genomics_v1/classes.rb +2609 -0
  218. data/generated/google/apis/genomics_v1/representations.rb +909 -0
  219. data/generated/google/apis/genomics_v1/service.rb +1676 -0
  220. data/generated/google/apis/genomics_v1.rb +49 -0
  221. data/generated/google/apis/genomics_v1beta2/classes.rb +3288 -0
  222. data/generated/google/apis/genomics_v1beta2/representations.rb +1194 -0
  223. data/generated/google/apis/genomics_v1beta2/service.rb +2392 -0
  224. data/generated/google/apis/genomics_v1beta2.rb +46 -0
  225. data/generated/google/apis/gmail_v1/classes.rb +794 -0
  226. data/generated/google/apis/gmail_v1/representations.rb +339 -0
  227. data/generated/google/apis/gmail_v1/service.rb +1470 -0
  228. data/generated/google/apis/gmail_v1.rb +52 -0
  229. data/generated/google/apis/groupsmigration_v1/classes.rb +51 -0
  230. data/generated/google/apis/groupsmigration_v1/representations.rb +38 -0
  231. data/generated/google/apis/groupsmigration_v1/service.rb +110 -0
  232. data/generated/google/apis/groupsmigration_v1.rb +34 -0
  233. data/generated/google/apis/groupssettings_v1/classes.rb +221 -0
  234. data/generated/google/apis/groupssettings_v1/representations.rb +64 -0
  235. data/generated/google/apis/groupssettings_v1/service.rb +179 -0
  236. data/generated/google/apis/groupssettings_v1.rb +34 -0
  237. data/generated/google/apis/identitytoolkit_v3/classes.rb +1466 -0
  238. data/generated/google/apis/identitytoolkit_v3/representations.rb +509 -0
  239. data/generated/google/apis/identitytoolkit_v3/service.rb +581 -0
  240. data/generated/google/apis/identitytoolkit_v3.rb +31 -0
  241. data/generated/google/apis/kgsearch_v1/classes.rb +59 -0
  242. data/generated/google/apis/kgsearch_v1/representations.rb +39 -0
  243. data/generated/google/apis/kgsearch_v1/service.rb +111 -0
  244. data/{spec/google/api_client/request_spec.rb → generated/google/apis/kgsearch_v1.rb} +16 -13
  245. data/generated/google/apis/licensing_v1/classes.rb +132 -0
  246. data/generated/google/apis/licensing_v1/representations.rb +68 -0
  247. data/generated/google/apis/licensing_v1/service.rb +369 -0
  248. data/generated/google/apis/licensing_v1.rb +34 -0
  249. data/generated/google/apis/logging_v1beta3/classes.rb +1079 -0
  250. data/generated/google/apis/logging_v1beta3/representations.rb +366 -0
  251. data/generated/google/apis/logging_v1beta3/service.rb +1001 -0
  252. data/generated/google/apis/logging_v1beta3.rb +47 -0
  253. data/generated/google/apis/manager_v1beta2/classes.rb +1287 -0
  254. data/generated/google/apis/manager_v1beta2/representations.rb +536 -0
  255. data/generated/google/apis/manager_v1beta2/service.rb +372 -0
  256. data/generated/google/apis/manager_v1beta2.rb +53 -0
  257. data/generated/google/apis/mapsengine_v1/classes.rb +2873 -0
  258. data/generated/google/apis/mapsengine_v1/representations.rb +1235 -0
  259. data/generated/google/apis/mapsengine_v1/service.rb +3388 -0
  260. data/generated/google/apis/mapsengine_v1.rb +38 -0
  261. data/generated/google/apis/mirror_v1/classes.rb +1072 -0
  262. data/generated/google/apis/mirror_v1/representations.rb +350 -0
  263. data/generated/google/apis/mirror_v1/service.rb +977 -0
  264. data/generated/google/apis/mirror_v1.rb +37 -0
  265. data/generated/google/apis/oauth2_v2/classes.rb +245 -0
  266. data/generated/google/apis/oauth2_v2/representations.rb +94 -0
  267. data/generated/google/apis/oauth2_v2/service.rb +199 -0
  268. data/generated/google/apis/oauth2_v2.rb +43 -0
  269. data/generated/google/apis/pagespeedonline_v2/classes.rb +614 -0
  270. data/generated/google/apis/pagespeedonline_v2/representations.rb +244 -0
  271. data/generated/google/apis/pagespeedonline_v2/service.rb +119 -0
  272. data/generated/google/apis/pagespeedonline_v2.rb +32 -0
  273. data/generated/google/apis/partners_v2/classes.rb +942 -0
  274. data/generated/google/apis/partners_v2/representations.rb +402 -0
  275. data/generated/google/apis/partners_v2/service.rb +400 -0
  276. data/generated/google/apis/partners_v2.rb +32 -0
  277. data/generated/google/apis/plus_domains_v1/classes.rb +2609 -0
  278. data/generated/google/apis/plus_domains_v1/representations.rb +987 -0
  279. data/generated/google/apis/plus_domains_v1/service.rb +904 -0
  280. data/generated/google/apis/plus_domains_v1.rb +61 -0
  281. data/generated/google/apis/plus_v1/classes.rb +2094 -0
  282. data/generated/google/apis/plus_v1/representations.rb +805 -0
  283. data/generated/google/apis/plus_v1/service.rb +470 -0
  284. data/generated/google/apis/plus_v1.rb +43 -0
  285. data/generated/google/apis/prediction_v1_6/classes.rb +751 -0
  286. data/generated/google/apis/prediction_v1_6/representations.rb +327 -0
  287. data/generated/google/apis/prediction_v1_6/service.rb +380 -0
  288. data/generated/google/apis/prediction_v1_6.rb +44 -0
  289. data/generated/google/apis/proximitybeacon_v1beta1/classes.rb +639 -0
  290. data/generated/google/apis/proximitybeacon_v1beta1/representations.rb +274 -0
  291. data/generated/google/apis/proximitybeacon_v1beta1/service.rb +591 -0
  292. data/generated/google/apis/proximitybeacon_v1beta1.rb +31 -0
  293. data/generated/google/apis/pubsub_v1/classes.rb +614 -0
  294. data/generated/google/apis/pubsub_v1/representations.rb +281 -0
  295. data/generated/google/apis/pubsub_v1/service.rb +774 -0
  296. data/generated/google/apis/pubsub_v1.rb +37 -0
  297. data/generated/google/apis/pubsub_v1beta2/classes.rb +620 -0
  298. data/generated/google/apis/pubsub_v1beta2/representations.rb +282 -0
  299. data/generated/google/apis/pubsub_v1beta2/service.rb +774 -0
  300. data/generated/google/apis/pubsub_v1beta2.rb +37 -0
  301. data/generated/google/apis/qpx_express_v1/classes.rb +1268 -0
  302. data/generated/google/apis/qpx_express_v1/representations.rb +424 -0
  303. data/generated/google/apis/qpx_express_v1/service.rb +100 -0
  304. data/generated/google/apis/qpx_express_v1.rb +31 -0
  305. data/generated/google/apis/replicapool_v1beta2/classes.rb +631 -0
  306. data/generated/google/apis/replicapool_v1beta2/representations.rb +236 -0
  307. data/generated/google/apis/replicapool_v1beta2/service.rb +608 -0
  308. data/generated/google/apis/replicapool_v1beta2.rb +44 -0
  309. data/generated/google/apis/replicapoolupdater_v1beta1/classes.rb +733 -0
  310. data/generated/google/apis/replicapoolupdater_v1beta1/representations.rb +264 -0
  311. data/generated/google/apis/replicapoolupdater_v1beta1/service.rb +508 -0
  312. data/generated/google/apis/replicapoolupdater_v1beta1.rb +44 -0
  313. data/generated/google/apis/reseller_v1/classes.rb +520 -0
  314. data/generated/google/apis/reseller_v1/representations.rb +200 -0
  315. data/generated/google/apis/reseller_v1/service.rb +623 -0
  316. data/generated/google/apis/reseller_v1.rb +37 -0
  317. data/generated/google/apis/resourceviews_v1beta2/classes.rb +660 -0
  318. data/generated/google/apis/resourceviews_v1beta2/representations.rb +269 -0
  319. data/generated/google/apis/resourceviews_v1beta2/service.rb +563 -0
  320. data/generated/google/apis/resourceviews_v1beta2.rb +50 -0
  321. data/generated/google/apis/script_v1/classes.rb +259 -0
  322. data/generated/google/apis/script_v1/representations.rb +106 -0
  323. data/generated/google/apis/script_v1/service.rb +98 -0
  324. data/generated/google/apis/script_v1.rb +61 -0
  325. data/generated/google/apis/site_verification_v1/classes.rb +185 -0
  326. data/generated/google/apis/site_verification_v1/representations.rb +101 -0
  327. data/generated/google/apis/site_verification_v1/service.rb +315 -0
  328. data/generated/google/apis/site_verification_v1.rb +37 -0
  329. data/generated/google/apis/sqladmin_v1beta4/classes.rb +2001 -0
  330. data/generated/google/apis/sqladmin_v1beta4/representations.rb +758 -0
  331. data/generated/google/apis/sqladmin_v1beta4/service.rb +1625 -0
  332. data/generated/google/apis/sqladmin_v1beta4.rb +37 -0
  333. data/generated/google/apis/storage_v1/classes.rb +1222 -0
  334. data/generated/google/apis/storage_v1/representations.rb +445 -0
  335. data/generated/google/apis/storage_v1/service.rb +1903 -0
  336. data/generated/google/apis/storage_v1.rb +46 -0
  337. data/generated/google/apis/storagetransfer_v1/classes.rb +1046 -0
  338. data/generated/google/apis/storagetransfer_v1/representations.rb +370 -0
  339. data/generated/google/apis/storagetransfer_v1/service.rb +473 -0
  340. data/generated/google/apis/storagetransfer_v1.rb +35 -0
  341. data/generated/google/apis/tagmanager_v1/classes.rb +1384 -0
  342. data/generated/google/apis/tagmanager_v1/representations.rb +515 -0
  343. data/generated/google/apis/tagmanager_v1/service.rb +1817 -0
  344. data/generated/google/apis/tagmanager_v1.rb +52 -0
  345. data/generated/google/apis/taskqueue_v1beta2/classes.rb +254 -0
  346. data/generated/google/apis/taskqueue_v1beta2/representations.rb +114 -0
  347. data/generated/google/apis/taskqueue_v1beta2/service.rb +408 -0
  348. data/generated/google/apis/taskqueue_v1beta2.rb +37 -0
  349. data/generated/google/apis/tasks_v1/classes.rb +296 -0
  350. data/generated/google/apis/tasks_v1/representations.rb +115 -0
  351. data/generated/google/apis/tasks_v1/service.rb +643 -0
  352. data/generated/google/apis/tasks_v1.rb +37 -0
  353. data/generated/google/apis/translate_v2/classes.rb +168 -0
  354. data/generated/google/apis/translate_v2/representations.rb +109 -0
  355. data/generated/google/apis/translate_v2/service.rb +182 -0
  356. data/generated/google/apis/translate_v2.rb +31 -0
  357. data/generated/google/apis/urlshortener_v1/classes.rb +246 -0
  358. data/generated/google/apis/urlshortener_v1/representations.rb +111 -0
  359. data/generated/google/apis/urlshortener_v1/service.rb +176 -0
  360. data/generated/google/apis/urlshortener_v1.rb +34 -0
  361. data/generated/google/apis/webmasters_v3/classes.rb +563 -0
  362. data/generated/google/apis/webmasters_v3/representations.rb +250 -0
  363. data/generated/google/apis/webmasters_v3/service.rb +573 -0
  364. data/generated/google/apis/webmasters_v3.rb +37 -0
  365. data/generated/google/apis/youtube_analytics_v1/classes.rb +546 -0
  366. data/generated/google/apis/youtube_analytics_v1/representations.rb +243 -0
  367. data/generated/google/apis/youtube_analytics_v1/service.rb +562 -0
  368. data/generated/google/apis/youtube_analytics_v1.rb +46 -0
  369. data/generated/google/apis/youtube_v3/classes.rb +8136 -0
  370. data/generated/google/apis/youtube_v3/representations.rb +2838 -0
  371. data/generated/google/apis/youtube_v3/service.rb +4403 -0
  372. data/generated/google/apis/youtube_v3.rb +49 -0
  373. data/generated/google/apis/youtubereporting_v1/classes.rb +258 -0
  374. data/generated/google/apis/youtubereporting_v1/representations.rb +128 -0
  375. data/generated/google/apis/youtubereporting_v1/service.rb +364 -0
  376. data/generated/google/apis/youtubereporting_v1.rb +38 -0
  377. data/google-api-client.gemspec +27 -39
  378. data/lib/google/api_client/auth/installed_app.rb +7 -5
  379. data/lib/google/api_client/auth/key_utils.rb +1 -0
  380. data/lib/google/api_client/auth/storage.rb +4 -2
  381. data/lib/google/api_client/auth/storages/file_store.rb +2 -3
  382. data/lib/google/api_client/auth/storages/redis_store.rb +7 -2
  383. data/lib/google/api_client/client_secrets.rb +4 -5
  384. data/lib/google/apis/core/api_command.rb +135 -0
  385. data/lib/google/apis/core/base_service.rb +317 -0
  386. data/lib/google/apis/core/batch.rb +239 -0
  387. data/lib/google/apis/core/download.rb +94 -0
  388. data/lib/google/apis/core/hashable.rb +44 -0
  389. data/lib/google/apis/core/http_client_adapter.rb +82 -0
  390. data/lib/google/apis/core/http_command.rb +312 -0
  391. data/lib/google/apis/core/json_representation.rb +127 -0
  392. data/lib/google/{api_client/version.rb → apis/core/logging.rb} +12 -8
  393. data/lib/google/apis/core/multipart.rb +187 -0
  394. data/lib/google/apis/core/upload.rb +288 -0
  395. data/lib/google/{api_client → apis}/errors.rb +39 -28
  396. data/lib/google/apis/generator/annotator.rb +295 -0
  397. data/lib/google/apis/generator/helpers.rb +74 -0
  398. data/lib/google/apis/generator/model.rb +143 -0
  399. data/lib/google/apis/generator/template.rb +124 -0
  400. data/lib/google/apis/generator/templates/_class.tmpl +40 -0
  401. data/lib/google/apis/generator/templates/_method.tmpl +92 -0
  402. data/lib/google/apis/generator/templates/_representation.tmpl +51 -0
  403. data/lib/google/apis/generator/templates/_representation_stub.tmpl +15 -0
  404. data/lib/google/apis/generator/templates/_representation_type.tmpl +10 -0
  405. data/lib/google/{api_client/reference.rb → apis/generator/templates/classes.rb.tmpl} +11 -9
  406. data/lib/google/apis/generator/templates/module.rb.tmpl +40 -0
  407. data/lib/google/apis/generator/templates/representations.rb.tmpl +32 -0
  408. data/lib/google/apis/generator/templates/service.rb.tmpl +60 -0
  409. data/lib/google/apis/generator.rb +70 -0
  410. data/lib/google/apis/options.rb +85 -0
  411. data/lib/google/apis/version.rb +39 -0
  412. data/lib/google/apis.rb +48 -0
  413. data/rakelib/metrics.rake +22 -0
  414. data/rakelib/rubocop.rake +10 -0
  415. data/rakelib/spec.rake +11 -0
  416. data/rakelib/yard.rake +11 -0
  417. data/samples/Gemfile +7 -0
  418. data/samples/README.md +51 -0
  419. data/samples/google-api-samples +32 -0
  420. data/samples/lib/base_cli.rb +94 -0
  421. data/samples/lib/samples/analytics.rb +62 -0
  422. data/samples/lib/samples/calendar.rb +83 -0
  423. data/samples/lib/samples/drive.rb +82 -0
  424. data/samples/lib/samples/gmail.rb +50 -0
  425. data/samples/lib/samples/pubsub.rb +114 -0
  426. data/samples/lib/samples/translate.rb +44 -0
  427. data/samples/lib/samples/you_tube.rb +44 -0
  428. data/script/generate +95 -0
  429. data/script/package +8 -0
  430. data/script/release +15 -0
  431. data/spec/fixtures/files/api_names.yaml +3 -0
  432. data/spec/fixtures/files/auth_stored_credentials.json +8 -0
  433. data/spec/fixtures/files/child/.gitignore +0 -0
  434. data/spec/fixtures/files/client_secrets.json +1 -0
  435. data/spec/fixtures/files/invalid.json +1 -0
  436. data/spec/fixtures/files/test.blah +1 -0
  437. data/spec/fixtures/files/test.txt +1 -0
  438. data/spec/fixtures/files/test_api.json +440 -0
  439. data/spec/google/api_client/auth/storage_spec.rb +1 -3
  440. data/spec/google/api_client/auth/storages/file_store_spec.rb +1 -2
  441. data/spec/google/api_client/auth/storages/redis_store_spec.rb +1 -3
  442. data/spec/google/api_client/client_secrets_spec.rb +38 -1
  443. data/spec/google/apis/core/api_command_spec.rb +209 -0
  444. data/spec/google/apis/core/batch_spec.rb +142 -0
  445. data/spec/google/apis/core/download_spec.rb +103 -0
  446. data/spec/google/apis/core/hashable_spec.rb +60 -0
  447. data/spec/google/apis/core/http_command_spec.rb +284 -0
  448. data/spec/google/apis/core/json_representation_spec.rb +192 -0
  449. data/spec/google/apis/core/service_spec.rb +247 -0
  450. data/spec/google/apis/core/upload_spec.rb +300 -0
  451. data/{lib/google/api_client/discovery.rb → spec/google/apis/generated_spec.rb} +13 -5
  452. data/spec/google/apis/generator/generator_spec.rb +272 -0
  453. data/spec/google/apis/logging_spec.rb +45 -0
  454. data/spec/google/apis/options_spec.rb +40 -0
  455. data/spec/integration_tests/adsense_spec.rb +29 -0
  456. data/spec/integration_tests/drive_spec.rb +35 -0
  457. data/spec/integration_tests/pubsub_spec.rb +48 -0
  458. data/spec/integration_tests/url_shortener_spec.rb +45 -0
  459. data/spec/spec_helper/load_path_spec.rb +33 -0
  460. data/spec/spec_helper.rb +131 -44
  461. data/third_party/hurley_patches.rb +103 -0
  462. metadata +533 -175
  463. data/lib/compat/multi_json.rb +0 -19
  464. data/lib/google/api_client/auth/file_storage.rb +0 -59
  465. data/lib/google/api_client/auth/jwt_asserter.rb +0 -126
  466. data/lib/google/api_client/auth/pkcs12.rb +0 -41
  467. data/lib/google/api_client/batch.rb +0 -326
  468. data/lib/google/api_client/charset.rb +0 -33
  469. data/lib/google/api_client/discovery/api.rb +0 -310
  470. data/lib/google/api_client/discovery/media.rb +0 -77
  471. data/lib/google/api_client/discovery/method.rb +0 -363
  472. data/lib/google/api_client/discovery/resource.rb +0 -156
  473. data/lib/google/api_client/discovery/schema.rb +0 -117
  474. data/lib/google/api_client/environment.rb +0 -42
  475. data/lib/google/api_client/gzip.rb +0 -28
  476. data/lib/google/api_client/logging.rb +0 -32
  477. data/lib/google/api_client/media.rb +0 -259
  478. data/lib/google/api_client/railtie.rb +0 -18
  479. data/lib/google/api_client/request.rb +0 -350
  480. data/lib/google/api_client/result.rb +0 -255
  481. data/lib/google/api_client/service/batch.rb +0 -110
  482. data/lib/google/api_client/service/request.rb +0 -144
  483. data/lib/google/api_client/service/resource.rb +0 -40
  484. data/lib/google/api_client/service/result.rb +0 -162
  485. data/lib/google/api_client/service/simple_file_store.rb +0 -151
  486. data/lib/google/api_client/service/stub_generator.rb +0 -61
  487. data/lib/google/api_client/service.rb +0 -233
  488. data/lib/google/api_client.rb +0 -750
  489. data/spec/google/api_client/batch_spec.rb +0 -248
  490. data/spec/google/api_client/discovery_spec.rb +0 -708
  491. data/spec/google/api_client/gzip_spec.rb +0 -98
  492. data/spec/google/api_client/media_spec.rb +0 -178
  493. data/spec/google/api_client/result_spec.rb +0 -207
  494. data/spec/google/api_client/service_account_spec.rb +0 -169
  495. data/spec/google/api_client/service_spec.rb +0 -618
  496. data/spec/google/api_client/simple_file_store_spec.rb +0 -133
  497. data/spec/google/api_client_spec.rb +0 -352
@@ -0,0 +1,295 @@
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 'logger'
16
+ require 'erb'
17
+ require 'yaml'
18
+ require 'multi_json'
19
+ require 'active_support/inflector'
20
+ require 'google/apis/core/logging'
21
+ require 'google/apis/generator/template'
22
+ require 'google/apis/generator/model'
23
+ require 'google/apis/generator/helpers'
24
+ require 'addressable/uri'
25
+
26
+ module Google
27
+ module Apis
28
+ # @private
29
+ class Generator
30
+ # Helper for picking names for methods, properties, types, etc. Performs various normaliations
31
+ # as well as allows for overriding individual names from a configuration file for cases
32
+ # where algorithmic approaches produce poor APIs.
33
+ class Names
34
+ include Google::Apis::Core::Logging
35
+ include NameHelpers
36
+
37
+ def initialize(file_path = nil)
38
+ if file_path
39
+ logger.info { sprintf('Loading API names from %s', file_path) }
40
+ @names = YAML.load(File.read(file_path)) || {}
41
+ else
42
+ @names = {}
43
+ end
44
+ @path = []
45
+ end
46
+
47
+ def with_path(path)
48
+ @path.push(path)
49
+ begin
50
+ yield
51
+ ensure
52
+ @path.pop
53
+ end
54
+ end
55
+
56
+ def infer_parameter_name
57
+ pick_name(normalize_param_name(@path.last))
58
+ end
59
+
60
+ # Determine the ruby method name to generate for a given method in discovery.
61
+ # @param [Google::Apis::DiscoveryV1::RestMethod] method
62
+ # Fragment of the discovery doc describing the method
63
+ def infer_method_name(method)
64
+ pick_name(infer_method_name_for_rpc(method) || infer_method_name_from_id(method))
65
+ end
66
+
67
+ def infer_property_name
68
+ pick_name(normalize_property_name(@path.last))
69
+ end
70
+
71
+ def pick_name(alt_name)
72
+ preferred_name = @names[key]
73
+ if preferred_name && preferred_name == alt_name
74
+ logger.warn { sprintf("Unnecessary name override '%s': %s", key, alt_name) }
75
+ elsif preferred_name.nil?
76
+ preferred_name = @names[key] = alt_name
77
+ end
78
+ preferred_name
79
+ end
80
+
81
+ def []=(key, value)
82
+ @names[key] = value
83
+ end
84
+
85
+ def dump
86
+ YAML.dump(@names)
87
+ end
88
+
89
+ def key
90
+ @path.reduce('') { |a, e| a + '/' + e }
91
+ end
92
+
93
+ def option(opt_name)
94
+ @names[sprintf('%s?%s', key, opt_name)]
95
+ end
96
+
97
+ private
98
+
99
+ # For RPC style methods, pick a name based off the request objects.
100
+ # @param [Google::Apis::DiscoveryV1::RestMethod] method
101
+ # Fragment of the discovery doc describing the method
102
+ def infer_method_name_for_rpc(method)
103
+ return nil if method.request.nil?
104
+ parts = method.id.split('.')
105
+ parts.shift
106
+ verb = ActiveSupport::Inflector.underscore(parts.pop)
107
+ match = method.request._ref.match(/(.*)(?i:request)/)
108
+ return nil if match.nil?
109
+ name = ActiveSupport::Inflector.underscore(match[1])
110
+ return nil unless name == verb || name.start_with?(verb + '_')
111
+ if !parts.empty?
112
+ resource_name = ActiveSupport::Inflector.singularize(parts.pop)
113
+ resource_name = ActiveSupport::Inflector.underscore(resource_name)
114
+ if !name.include?(resource_name)
115
+ name = name.split('_').insert(1, resource_name).join('_')
116
+ end
117
+ end
118
+ name
119
+ end
120
+
121
+ # For REST style methods, build a method name from the verb/resource(s) in the method
122
+ # id. IDs are in the form <api>.<resource>.<verb>
123
+ # @param [Google::Apis::DiscoveryV1::RestMethod] method
124
+ # Fragment of the discovery doc describing the method
125
+ def infer_method_name_from_id(method)
126
+ parts = method.id.split('.')
127
+ parts.shift
128
+ verb = ActiveSupport::Inflector.underscore(parts.pop)
129
+ return verb if parts.empty?
130
+ resource_name = ActiveSupport::Inflector.underscore(parts.pop)
131
+ if pluralize_method?(verb)
132
+ resource_name = ActiveSupport::Inflector.pluralize(resource_name)
133
+ else
134
+ resource_name = ActiveSupport::Inflector.singularize(resource_name)
135
+ end
136
+ if parts.empty?
137
+ resource_path = resource_name
138
+ else
139
+ resource_path = parts.map do |p|
140
+ p = ActiveSupport::Inflector.singularize(p)
141
+ ActiveSupport::Inflector.underscore(p)
142
+ end.join('_') + '_' + resource_name
143
+ end
144
+ method_name = verb.split('_').insert(1, resource_path.split('_')).join('_')
145
+ method_name
146
+ end
147
+ end
148
+
149
+ # Modifies an API description to support ruby code generation. Primarily does:
150
+ # - Ensure all names follow appopriate ruby conventions
151
+ # - Maps types to ruby types, classes, and resolves $refs
152
+ # - Attempts to simplify names where possible to make APIs more sensible
153
+ class Annotator
154
+ include NameHelpers
155
+ include Google::Apis::Core::Logging
156
+
157
+ # Don't expose these in the API directly.
158
+ PARAMETER_BLACKLIST = %w(alt access_token bearer_token oauth_token pp prettyPrint
159
+ $.xgafv callback upload_protocol uploadType)
160
+
161
+ # Prepare the API for the templates.
162
+ # @param [Google::Apis::DiscoveryV1::RestDescription] description
163
+ # API Description
164
+ def self.process(description, api_names = nil)
165
+ Annotator.new(description, api_names).annotate_api
166
+ end
167
+
168
+ # @param [Google::Apis::DiscoveryV1::RestDescription] description
169
+ # API Description
170
+ # @param [Google::Api::Generator::Names] api_names
171
+ # Name helper instanace
172
+ def initialize(description, api_names = nil)
173
+ api_names = Names.new if api_names.nil?
174
+ @names = api_names
175
+ @rest_description = description
176
+ @registered_types = []
177
+ @deferred_types = []
178
+ @strip_prefixes = []
179
+ @all_methods = {}
180
+ @path = []
181
+ end
182
+
183
+ def annotate_api
184
+ @names.with_path(@rest_description.id) do
185
+ @strip_prefixes << @rest_description.name
186
+ if @rest_description.auth
187
+ @rest_description.auth.oauth2.scopes.each do |key, value|
188
+ value.constant = constantize_scope(key)
189
+ end
190
+ end
191
+ @rest_description.force_alt_json = @names.option('force_alt_json')
192
+ @rest_description.parameters.reject! { |k, _v| PARAMETER_BLACKLIST.include?(k) }
193
+ annotate_parameters(@rest_description.parameters)
194
+ annotate_resource(@rest_description.name, @rest_description)
195
+ @rest_description.schemas.each do |k, v|
196
+ annotate_type(k, v, @rest_description)
197
+ end unless @rest_description.schemas.nil?
198
+ end
199
+ resolve_type_references
200
+ resolve_variants
201
+ end
202
+
203
+ def annotate_type(name, type, parent)
204
+ @names.with_path(name) do
205
+ type.name = name
206
+ type.path = @names.key
207
+ type.generated_name = @names.infer_property_name
208
+ if type.type == 'object'
209
+ type.generated_class_name = ActiveSupport::Inflector.camelize(type.generated_name)
210
+ @registered_types << type
211
+ end
212
+ type.parent = parent
213
+ @deferred_types << type if type._ref
214
+ type.properties.each do |k, v|
215
+ annotate_type(k, v, type)
216
+ end unless type.properties.nil?
217
+ if type.additional_properties
218
+ type.type = 'hash'
219
+ annotate_type(ActiveSupport::Inflector.singularize(type.generated_name), type.additional_properties,
220
+ parent)
221
+ end
222
+ annotate_type(ActiveSupport::Inflector.singularize(type.generated_name), type.items, parent) if type.items
223
+ end
224
+ end
225
+
226
+ def annotate_resource(name, resource, parent_resource = nil)
227
+ @strip_prefixes << name
228
+ resource.parent = parent_resource unless parent_resource.nil?
229
+ resource.api_methods.each do |_k, v|
230
+ annotate_method(v, resource)
231
+ end unless resource.api_methods.nil?
232
+
233
+ resource.resources.each do |k, v|
234
+ annotate_resource(k, v, resource)
235
+ end unless resource.resources.nil?
236
+ end
237
+
238
+ def annotate_method(method, parent_resource = nil)
239
+ @names.with_path(method.id) do
240
+ method.parent = parent_resource
241
+ method.generated_name = @names.infer_method_name(method)
242
+ check_duplicate_method(method)
243
+ annotate_parameters(method.parameters)
244
+ end
245
+ end
246
+
247
+ def annotate_parameters(parameters)
248
+ parameters.each do |key, value|
249
+ @names.with_path(key) do
250
+ value.name = key
251
+ value.generated_name = @names.infer_parameter_name
252
+ @deferred_types << value if value._ref
253
+ end
254
+ end unless parameters.nil?
255
+ end
256
+
257
+ def resolve_type_references
258
+ @deferred_types.each do |type|
259
+ if type._ref
260
+ ref = @rest_description.schemas[type._ref]
261
+ ivars = ref.instance_variables - [:@name, :@generated_name]
262
+ (ivars).each do |var|
263
+ type.instance_variable_set(var, ref.instance_variable_get(var))
264
+ end
265
+ end
266
+ end
267
+ end
268
+
269
+ def resolve_variants
270
+ @deferred_types.each do |type|
271
+ if type.variant
272
+ type.variant.map.each do |v|
273
+ ref = @rest_description.schemas[v._ref]
274
+ ref.base_ref = type
275
+ ref.discriminant = type.variant.discriminant
276
+ ref.discriminant_value = v.type_value
277
+ end
278
+ end
279
+ end
280
+ end
281
+
282
+ def check_duplicate_method(m)
283
+ if @all_methods.include?(m.generated_name)
284
+ logger.error do
285
+ sprintf('Duplicate method %s generated, path %s',
286
+ m.generated_name, @names.key)
287
+ end
288
+ fail 'Duplicate name generated'
289
+ end
290
+ @all_methods[m.generated_name] = m
291
+ end
292
+ end
293
+ end
294
+ end
295
+ end
@@ -0,0 +1,74 @@
1
+ module Google
2
+ module Apis
3
+ # @private
4
+ class Generator
5
+ # Methods for validating & normalizing symbols
6
+ module NameHelpers
7
+ KEYWORDS = %w(__ENCODING__ def in self __LINE__ defined? module super __FILE__ do next then BEGIN
8
+ else nil true END elsif not undef alias end or unless and ensure redo until begin
9
+ false rescue when break for retry while case if return yield class command)
10
+ PLURAL_METHODS = %w(list search)
11
+
12
+ # Check to see if the method name should be plauralized
13
+ # @return [Boolean]
14
+ def pluralize_method?(method_name)
15
+ PLURAL_METHODS.include?(method_name)
16
+ end
17
+
18
+ # Check to see if the method is either a keyword or built-in method on object
19
+ # @return [Boolean]
20
+ def reserved?(name)
21
+ keyword?(name) || object_method?(name)
22
+ end
23
+
24
+ # Check to see if the name is a ruby keyword
25
+ # @return [Boolean]
26
+ def keyword?(name)
27
+ KEYWORDS.include?(name)
28
+ end
29
+
30
+ # Check to see if the method already exists on ruby objects
31
+ # @return [Boolean]
32
+ def object_method?(name)
33
+ Object.new.respond_to?(name)
34
+ end
35
+
36
+ # Convert a parameter name to ruby conventions
37
+ # @param [String] name
38
+ # @return [String] updated param name
39
+ def normalize_param_name(name)
40
+ name = ActiveSupport::Inflector.underscore(name.gsub(/\W/, '_'))
41
+ if reserved?(name)
42
+ logger.warn { sprintf('Found reserved keyword \'%1$s\'', name) }
43
+ name += '_'
44
+ logger.warn { sprintf('Changed to \'%1$s\'', name) }
45
+ end
46
+ name
47
+ end
48
+
49
+ # Convert a property name to ruby conventions
50
+ # @param [String] name
51
+ # @return [String]
52
+ def normalize_property_name(name)
53
+ name = ActiveSupport::Inflector.underscore(name.gsub(/\W/, '_'))
54
+ if object_method?(name)
55
+ logger.warn { sprintf('Found reserved property \'%1$s\'', name) }
56
+ name += '_prop'
57
+ logger.warn { sprintf('Changed to \'%1$s\'', name) }
58
+ end
59
+ name
60
+ end
61
+
62
+ # Converts a scope string into a ruby constant
63
+ # @param [String] url
64
+ # Url to convert
65
+ # @return [String]
66
+ def constantize_scope(url)
67
+ scope = Addressable::URI.parse(url).path[1..-1].upcase.gsub(/\W/, '_')
68
+ scope = 'AUTH_SCOPE' if scope.nil? || scope.empty?
69
+ scope
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,143 @@
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 'active_support/inflector'
16
+ require 'google/apis/discovery_v1'
17
+
18
+ # Extend the discovery API classes with additional data needed to make
19
+ # code generation produce better results
20
+ module Google
21
+ module Apis
22
+ module DiscoveryV1
23
+ TYPE_MAP = {
24
+ 'string' => 'String',
25
+ 'boolean' => 'Boolean',
26
+ 'number' => 'Float',
27
+ 'integer' => 'Fixnum',
28
+ 'any' => 'Object'
29
+ }
30
+
31
+ class JsonSchema
32
+ attr_accessor :name
33
+ attr_accessor :generated_name
34
+ attr_accessor :generated_class_name
35
+ attr_accessor :base_ref
36
+ attr_accessor :parent
37
+ attr_accessor :discriminant
38
+ attr_accessor :discriminant_value
39
+ attr_accessor :path
40
+
41
+ def properties
42
+ @properties ||= {}
43
+ end
44
+
45
+ def qualified_name
46
+ parent.qualified_name + '::' + generated_class_name
47
+ end
48
+
49
+ def generated_type
50
+ case type
51
+ when 'string', 'boolean', 'number', 'integer', 'any'
52
+ return 'DateTime' if format == 'date-time'
53
+ return 'Date' if format == 'date'
54
+ return TYPE_MAP[type]
55
+ when 'array'
56
+ return sprintf('Array<%s>', items.generated_type)
57
+ when 'hash'
58
+ return sprintf('Hash<String,%s>', additional_properties.generated_type)
59
+ when 'object'
60
+ return qualified_name
61
+ end
62
+ end
63
+ end
64
+
65
+ class RestMethod
66
+ attr_accessor :generated_name
67
+ attr_accessor :parent
68
+
69
+ def path_parameters
70
+ return [] if parameter_order.nil? || parameters.nil?
71
+ parameter_order.map { |name| parameters[name] }.select { |param| param.location == 'path' }
72
+ end
73
+
74
+ def query_parameters
75
+ return [] if parameters.nil?
76
+ parameters.values.select { |param| param.location == 'query' }
77
+ end
78
+
79
+ def required_parameters
80
+ return [] if parameter_order.nil? || parameters.nil?
81
+ parameter_order.map { |name| parameters[name] }.select { |param| param.location == 'path' || param.required }
82
+ end
83
+
84
+ def optional_query_parameters
85
+ query_parameters.select { |param| param.required != true }
86
+ end
87
+
88
+ end
89
+
90
+ class RestResource
91
+ attr_accessor :parent
92
+
93
+ def all_methods
94
+ m = []
95
+ m << api_methods.values unless api_methods.nil?
96
+ m << resources.map { |_k, r| r.all_methods } unless resources.nil?
97
+ m.flatten
98
+ end
99
+ end
100
+
101
+ class RestDescription
102
+ attr_accessor :force_alt_json
103
+ alias_method :force_alt_json?, :force_alt_json
104
+
105
+ def version
106
+ ActiveSupport::Inflector.camelize(@version.gsub(/\W/, '-')).gsub(/-/, '_')
107
+ end
108
+
109
+ def name
110
+ ActiveSupport::Inflector.camelize(@name)
111
+ end
112
+
113
+ def module_name
114
+ name + version
115
+ end
116
+
117
+ def qualified_name
118
+ sprintf('Google::Apis::%s', module_name)
119
+ end
120
+
121
+ def service_name
122
+ class_name = (canonical_name || name).gsub(/\W/, '')
123
+ ActiveSupport::Inflector.camelize(sprintf('%sService', class_name))
124
+ end
125
+
126
+ def all_methods
127
+ m = []
128
+ m << api_methods.values unless api_methods.nil?
129
+ m << resources.map { |_k, r| r.all_methods } unless resources.nil?
130
+ m.flatten
131
+ end
132
+
133
+ class Auth
134
+ class Oauth2
135
+ class Scope
136
+ attr_accessor :constant
137
+ end
138
+ end
139
+ end
140
+ end
141
+ end
142
+ end
143
+ end
@@ -0,0 +1,124 @@
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 'active_support/inflector'
16
+ require 'erb'
17
+ require 'ostruct'
18
+
19
+ module Google
20
+ module Apis
21
+ # @private
22
+ class Generator
23
+ # Directory containing ERB templates
24
+ TEMPLATE_DIR = File.expand_path('../templates', __FILE__)
25
+
26
+ # Helpers used in ERB templates
27
+ module TemplateHelpers
28
+ # Get the include path for a ruby module/class
29
+ #
30
+ # @param [String] module_name
31
+ # Fully qualified module/class name
32
+ # @return [String]
33
+ # Path to file
34
+ def to_path(module_name)
35
+ ActiveSupport::Inflector.underscore(module_name)
36
+ end
37
+
38
+ # Render a block comment
39
+ #
40
+ # @param [String] str
41
+ # Comment string
42
+ # @param [Fixnum] spaces_before
43
+ # Number of spaces to indent the comment hash
44
+ # @param [Fixnum] spaces_after
45
+ # Number of spaces to indent after the comment hash for subsequent lines
46
+ # @return [String] formatted comment
47
+ def block_comment(str, spaces_before = 0, spaces_after = 0)
48
+ return '' if str.nil?
49
+ pre = ' ' * spaces_before
50
+ post = ' ' * spaces_after
51
+ lines = str.gsub(/([{}])/, '`').scan(/.{1,78}(?:\W|$)/).map(&:strip)
52
+ lines.join("\n" + pre + '#' + post)
53
+ end
54
+
55
+ # Indent a block of text
56
+ #
57
+ # @param [String] str
58
+ # Content to indent
59
+ # @param [Fixnum] spaces
60
+ # Number of spaces to indent
61
+ # @return [String] formatted content
62
+ def indent(str, spaces)
63
+ pre = ' ' * spaces
64
+ str = pre + str.split(/\n/).join("\n" + pre) + "\n"
65
+ return str unless str.strip.empty?
66
+ nil
67
+ end
68
+
69
+ # Include a partial inside a template.
70
+ #
71
+ # @private
72
+ # @param [String] partial
73
+ # Name of the template
74
+ # @param [Hash] context
75
+ # Context used to render
76
+ # @return [String] rendered content
77
+ def include(partial, context)
78
+ template = Template.new(sprintf('_%s.tmpl', partial))
79
+ template.render(context)
80
+ end
81
+ end
82
+
83
+ # Holds local vars/helpers for template rendering
84
+ class Context < OpenStruct
85
+ include TemplateHelpers
86
+
87
+ # Get the context for ERB evaluation
88
+ # @return [Binding]
89
+ def to_binding
90
+ binding
91
+ end
92
+ end
93
+
94
+ # ERB template for the code generator
95
+ class Template
96
+ # Loads a template from the template dir. Automatically
97
+ # appends the .tmpl suffix
98
+ #
99
+ # @param [String] template_name
100
+ # Name of the template file
101
+ def self.load(template_name)
102
+ Template.new(sprintf('%s.tmpl', template_name))
103
+ end
104
+
105
+ # @param [String] template_name
106
+ # Name of the template file
107
+ def initialize(template_name)
108
+ file = File.join(TEMPLATE_DIR, template_name)
109
+ @erb = ERB.new(File.read(file), nil, '-')
110
+ end
111
+
112
+ # Render the template
113
+ #
114
+ # @param [Hash] context
115
+ # Variables to set when rendering the template
116
+ # @return [String] rendered template
117
+ def render(context)
118
+ ctx = Context.new(context)
119
+ @erb.result(ctx.to_binding)
120
+ end
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,40 @@
1
+ <% if cls.type == 'object' -%>
2
+
3
+ # <%= block_comment(cls.description, 0, 1) %>
4
+ class <%= cls.generated_class_name %><% if cls.base_ref %> < <%= cls.base_ref.generated_type %><% end %>
5
+ include Google::Apis::Core::Hashable
6
+ <% for property in cls.properties.values -%>
7
+
8
+ # <%= block_comment(property.description, 2, 1) %>
9
+ # Corresponds to the JSON property `<%= property.name %>`
10
+ # @return [<%= property.generated_type %>]
11
+ attr_accessor :<%= property.generated_name %>
12
+ <% if property.type == 'boolean' -%>
13
+ alias_method :<%= property.generated_name %>?, :<%= property.generated_name %>
14
+ <% end -%>
15
+ <% end -%>
16
+
17
+ def initialize(**args)
18
+ <% if cls.discriminant -%>
19
+ @<%= cls.properties[cls.discriminant].generated_name %> = '<%= cls.discriminant_value %>'
20
+ <% end -%>
21
+ update!(**args)
22
+ end
23
+
24
+ # Update properties of this object
25
+ def update!(**args)
26
+ <% for property in cls.properties.values -%>
27
+ @<%= property.generated_name %> = args[:<%= property.generated_name %>] unless args[:<%= property.generated_name %>].nil?
28
+ <% end -%>
29
+ end
30
+ <% for child_class in cls.properties.values -%>
31
+ <% if child_class._ref.nil? -%>
32
+ <%= indent(include('class', :cls => child_class, :api => api), 2) -%>
33
+ <% end -%>
34
+ <% end -%>
35
+ end
36
+ <% elsif cls.items && cls.items._ref.nil? -%>
37
+ <%= include('class', :cls => cls.items, :api => api) -%>
38
+ <% elsif cls.additional_properties && cls.additional_properties._ref.nil? -%>
39
+ <%= include('class', :cls => cls.additional_properties, :api => api) -%>
40
+ <% end -%>