google-api-client 0.8.6 → 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 +41 -2
  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.rb +35 -0
  18. data/generated/google/apis/adexchangebuyer_v1_3/classes.rb +1335 -0
  19. data/generated/google/apis/adexchangebuyer_v1_3/representations.rb +446 -0
  20. data/generated/google/apis/adexchangebuyer_v1_3/service.rb +872 -0
  21. data/generated/google/apis/adexchangeseller_v2_0.rb +38 -0
  22. data/generated/google/apis/adexchangeseller_v2_0/classes.rb +792 -0
  23. data/generated/google/apis/adexchangeseller_v2_0/representations.rb +309 -0
  24. data/generated/google/apis/adexchangeseller_v2_0/service.rb +668 -0
  25. data/generated/google/apis/admin_datatransfer_v1.rb +37 -0
  26. data/generated/google/apis/admin_datatransfer_v1/classes.rb +267 -0
  27. data/generated/google/apis/admin_datatransfer_v1/representations.rb +118 -0
  28. data/generated/google/apis/admin_datatransfer_v1/service.rb +262 -0
  29. data/generated/google/apis/admin_directory_v1.rb +113 -0
  30. data/generated/google/apis/admin_directory_v1/classes.rb +3141 -0
  31. data/generated/google/apis/admin_directory_v1/representations.rb +1029 -0
  32. data/generated/google/apis/admin_directory_v1/service.rb +3818 -0
  33. data/generated/google/apis/admin_reports_v1.rb +38 -0
  34. data/generated/google/apis/admin_reports_v1/classes.rb +582 -0
  35. data/generated/google/apis/admin_reports_v1/representations.rb +231 -0
  36. data/generated/google/apis/admin_reports_v1/service.rb +336 -0
  37. data/generated/google/apis/adsense_v1_4.rb +38 -0
  38. data/generated/google/apis/adsense_v1_4/classes.rb +1285 -0
  39. data/generated/google/apis/adsense_v1_4/representations.rb +494 -0
  40. data/generated/google/apis/adsense_v1_4/service.rb +1714 -0
  41. data/generated/google/apis/adsensehost_v4_1.rb +35 -0
  42. data/generated/google/apis/adsensehost_v4_1/classes.rb +834 -0
  43. data/generated/google/apis/adsensehost_v4_1/representations.rb +327 -0
  44. data/generated/google/apis/adsensehost_v4_1/service.rb +1164 -0
  45. data/generated/google/apis/analytics_v3.rb +49 -0
  46. data/generated/google/apis/analytics_v3/classes.rb +5118 -0
  47. data/generated/google/apis/analytics_v3/representations.rb +1662 -0
  48. data/generated/google/apis/analytics_v3/service.rb +3568 -0
  49. data/generated/google/apis/androidenterprise_v1.rb +35 -0
  50. data/generated/google/apis/androidenterprise_v1/classes.rb +1443 -0
  51. data/generated/google/apis/androidenterprise_v1/representations.rb +538 -0
  52. data/generated/google/apis/androidenterprise_v1/service.rb +2602 -0
  53. data/generated/google/apis/androidpublisher_v2.rb +34 -0
  54. data/generated/google/apis/androidpublisher_v2/classes.rb +1411 -0
  55. data/generated/google/apis/androidpublisher_v2/representations.rb +646 -0
  56. data/generated/google/apis/androidpublisher_v2/service.rb +2338 -0
  57. data/generated/google/apis/appengine_v1beta4.rb +35 -0
  58. data/generated/google/apis/appengine_v1beta4/classes.rb +1532 -0
  59. data/generated/google/apis/appengine_v1beta4/representations.rb +526 -0
  60. data/generated/google/apis/appengine_v1beta4/service.rb +476 -0
  61. data/generated/google/apis/appsactivity_v1.rb +46 -0
  62. data/generated/google/apis/appsactivity_v1/classes.rb +392 -0
  63. data/generated/google/apis/appsactivity_v1/representations.rb +184 -0
  64. data/generated/google/apis/appsactivity_v1/service.rb +128 -0
  65. data/generated/google/apis/appstate_v1.rb +34 -0
  66. data/generated/google/apis/appstate_v1/classes.rb +154 -0
  67. data/generated/google/apis/appstate_v1/representations.rb +79 -0
  68. data/generated/google/apis/appstate_v1/service.rb +260 -0
  69. data/generated/google/apis/autoscaler_v1beta2.rb +38 -0
  70. data/generated/google/apis/autoscaler_v1beta2/classes.rb +747 -0
  71. data/generated/google/apis/autoscaler_v1beta2/representations.rb +281 -0
  72. data/generated/google/apis/autoscaler_v1beta2/service.rb +478 -0
  73. data/generated/google/apis/bigquery_v2.rb +52 -0
  74. data/generated/google/apis/bigquery_v2/classes.rb +2471 -0
  75. data/generated/google/apis/bigquery_v2/representations.rb +816 -0
  76. data/generated/google/apis/bigquery_v2/service.rb +982 -0
  77. data/generated/google/apis/blogger_v3.rb +37 -0
  78. data/generated/google/apis/blogger_v3/classes.rb +1354 -0
  79. data/generated/google/apis/blogger_v3/representations.rb +562 -0
  80. data/generated/google/apis/blogger_v3/service.rb +1587 -0
  81. data/generated/google/apis/books_v1.rb +34 -0
  82. data/generated/google/apis/books_v1/classes.rb +3956 -0
  83. data/generated/google/apis/books_v1/representations.rb +1538 -0
  84. data/generated/google/apis/books_v1/service.rb +2290 -0
  85. data/generated/google/apis/calendar_v3.rb +37 -0
  86. data/generated/google/apis/calendar_v3/classes.rb +1742 -0
  87. data/generated/google/apis/calendar_v3/representations.rb +567 -0
  88. data/generated/google/apis/calendar_v3/service.rb +1968 -0
  89. data/{lib/google/api_client/service_account.rb → generated/google/apis/civicinfo_v2.rb} +18 -8
  90. data/generated/google/apis/civicinfo_v2/classes.rb +1127 -0
  91. data/generated/google/apis/civicinfo_v2/representations.rb +383 -0
  92. data/generated/google/apis/civicinfo_v2/service.rb +279 -0
  93. data/generated/google/apis/classroom_v1.rb +49 -0
  94. data/generated/google/apis/classroom_v1/classes.rb +512 -0
  95. data/generated/google/apis/classroom_v1/representations.rb +217 -0
  96. data/generated/google/apis/classroom_v1/service.rb +970 -0
  97. data/generated/google/apis/classroom_v1beta1.rb +49 -0
  98. data/generated/google/apis/classroom_v1beta1/classes.rb +447 -0
  99. data/generated/google/apis/classroom_v1beta1/representations.rb +190 -0
  100. data/generated/google/apis/classroom_v1beta1/service.rb +791 -0
  101. data/generated/google/apis/cloudbilling_v1.rb +35 -0
  102. data/generated/google/apis/cloudbilling_v1/classes.rb +169 -0
  103. data/generated/google/apis/cloudbilling_v1/representations.rb +79 -0
  104. data/generated/google/apis/cloudbilling_v1/service.rb +258 -0
  105. data/generated/google/apis/clouddebugger_v2.rb +41 -0
  106. data/generated/google/apis/clouddebugger_v2/classes.rb +1004 -0
  107. data/generated/google/apis/clouddebugger_v2/representations.rb +410 -0
  108. data/generated/google/apis/clouddebugger_v2/service.rb +370 -0
  109. data/generated/google/apis/cloudmonitoring_v2beta2.rb +37 -0
  110. data/generated/google/apis/cloudmonitoring_v2beta2/classes.rb +679 -0
  111. data/generated/google/apis/cloudmonitoring_v2beta2/representations.rb +311 -0
  112. data/generated/google/apis/cloudmonitoring_v2beta2/service.rb +452 -0
  113. data/generated/google/apis/cloudresourcemanager_v1beta1.rb +38 -0
  114. data/generated/google/apis/cloudresourcemanager_v1beta1/classes.rb +437 -0
  115. data/generated/google/apis/cloudresourcemanager_v1beta1/representations.rb +188 -0
  116. data/generated/google/apis/cloudresourcemanager_v1beta1/service.rb +623 -0
  117. data/generated/google/apis/cloudtrace_v1.rb +35 -0
  118. data/generated/google/apis/cloudtrace_v1/classes.rb +188 -0
  119. data/generated/google/apis/cloudtrace_v1/representations.rb +92 -0
  120. data/generated/google/apis/cloudtrace_v1/service.rb +190 -0
  121. data/generated/google/apis/clouduseraccounts_beta.rb +43 -0
  122. data/generated/google/apis/clouduseraccounts_beta/classes.rb +823 -0
  123. data/generated/google/apis/clouduseraccounts_beta/representations.rb +313 -0
  124. data/generated/google/apis/clouduseraccounts_beta/service.rb +854 -0
  125. data/generated/google/apis/compute_beta.rb +49 -0
  126. data/generated/google/apis/compute_beta/classes.rb +9128 -0
  127. data/generated/google/apis/compute_beta/representations.rb +3048 -0
  128. data/generated/google/apis/compute_beta/service.rb +10154 -0
  129. data/generated/google/apis/compute_v1.rb +49 -0
  130. data/generated/google/apis/compute_v1/classes.rb +8681 -0
  131. data/generated/google/apis/compute_v1/representations.rb +2895 -0
  132. data/generated/google/apis/compute_v1/service.rb +9252 -0
  133. data/generated/google/apis/container_v1.rb +35 -0
  134. data/generated/google/apis/container_v1/classes.rb +463 -0
  135. data/generated/google/apis/container_v1/representations.rb +175 -0
  136. data/generated/google/apis/container_v1/service.rb +367 -0
  137. data/generated/google/apis/container_v1beta1.rb +35 -0
  138. data/generated/google/apis/container_v1beta1/classes.rb +466 -0
  139. data/generated/google/apis/container_v1beta1/representations.rb +177 -0
  140. data/generated/google/apis/container_v1beta1/service.rb +394 -0
  141. data/generated/google/apis/content_v2.rb +35 -0
  142. data/generated/google/apis/content_v2/classes.rb +5986 -0
  143. data/generated/google/apis/content_v2/representations.rb +2288 -0
  144. data/generated/google/apis/content_v2/service.rb +2338 -0
  145. data/generated/google/apis/coordinate_v1.rb +37 -0
  146. data/generated/google/apis/coordinate_v1/classes.rb +669 -0
  147. data/generated/google/apis/coordinate_v1/representations.rb +285 -0
  148. data/generated/google/apis/coordinate_v1/service.rb +678 -0
  149. data/{lib/google/api_client/auth/compute_service_account.rb → generated/google/apis/customsearch_v1.rb} +13 -10
  150. data/generated/google/apis/customsearch_v1/classes.rb +771 -0
  151. data/generated/google/apis/customsearch_v1/representations.rb +276 -0
  152. data/generated/google/apis/customsearch_v1/service.rb +207 -0
  153. data/generated/google/apis/datastore_v1beta2.rb +40 -0
  154. data/generated/google/apis/datastore_v1beta2/classes.rb +1186 -0
  155. data/generated/google/apis/datastore_v1beta2/representations.rb +526 -0
  156. data/generated/google/apis/datastore_v1beta2/service.rb +294 -0
  157. data/generated/google/apis/deploymentmanager_v2.rb +44 -0
  158. data/generated/google/apis/deploymentmanager_v2/classes.rb +1091 -0
  159. data/generated/google/apis/deploymentmanager_v2/representations.rb +422 -0
  160. data/generated/google/apis/deploymentmanager_v2/service.rb +857 -0
  161. data/generated/google/apis/deploymentmanager_v2beta2.rb +44 -0
  162. data/generated/google/apis/deploymentmanager_v2beta2/classes.rb +843 -0
  163. data/generated/google/apis/deploymentmanager_v2beta2/representations.rb +306 -0
  164. data/generated/google/apis/deploymentmanager_v2beta2/service.rb +689 -0
  165. data/generated/google/apis/dfareporting_v2_1.rb +37 -0
  166. data/generated/google/apis/dfareporting_v2_1/classes.rb +10770 -0
  167. data/generated/google/apis/dfareporting_v2_1/representations.rb +3438 -0
  168. data/generated/google/apis/dfareporting_v2_1/service.rb +8585 -0
  169. data/generated/google/apis/discovery_v1.rb +32 -0
  170. data/generated/google/apis/discovery_v1/classes.rb +961 -0
  171. data/generated/google/apis/discovery_v1/representations.rb +357 -0
  172. data/generated/google/apis/discovery_v1/service.rb +142 -0
  173. data/generated/google/apis/dns_v1.rb +44 -0
  174. data/generated/google/apis/dns_v1/classes.rb +406 -0
  175. data/generated/google/apis/dns_v1/representations.rb +151 -0
  176. data/generated/google/apis/dns_v1/service.rb +454 -0
  177. data/generated/google/apis/doubleclickbidmanager_v1.rb +31 -0
  178. data/generated/google/apis/doubleclickbidmanager_v1/classes.rb +716 -0
  179. data/generated/google/apis/doubleclickbidmanager_v1/representations.rb +298 -0
  180. data/generated/google/apis/doubleclickbidmanager_v1/service.rb +341 -0
  181. data/generated/google/apis/doubleclicksearch_v2.rb +35 -0
  182. data/generated/google/apis/doubleclicksearch_v2/classes.rb +956 -0
  183. data/generated/google/apis/doubleclicksearch_v2/representations.rb +316 -0
  184. data/generated/google/apis/doubleclicksearch_v2/service.rb +480 -0
  185. data/generated/google/apis/drive_v2.rb +58 -0
  186. data/generated/google/apis/drive_v2/classes.rb +2562 -0
  187. data/generated/google/apis/drive_v2/representations.rb +795 -0
  188. data/generated/google/apis/drive_v2/service.rb +2696 -0
  189. data/generated/google/apis/drive_v3.rb +55 -0
  190. data/generated/google/apis/drive_v3/classes.rb +1534 -0
  191. data/generated/google/apis/drive_v3/representations.rb +497 -0
  192. data/generated/google/apis/drive_v3/service.rb +1541 -0
  193. data/generated/google/apis/fitness_v1.rb +49 -0
  194. data/generated/google/apis/fitness_v1/classes.rb +885 -0
  195. data/generated/google/apis/fitness_v1/representations.rb +320 -0
  196. data/generated/google/apis/fitness_v1/service.rb +675 -0
  197. data/generated/google/apis/fusiontables_v2.rb +37 -0
  198. data/generated/google/apis/fusiontables_v2/classes.rb +1048 -0
  199. data/generated/google/apis/fusiontables_v2/representations.rb +409 -0
  200. data/generated/google/apis/fusiontables_v2/service.rb +1463 -0
  201. data/generated/google/apis/games_configuration_v1configuration.rb +34 -0
  202. data/generated/google/apis/games_configuration_v1configuration/classes.rb +506 -0
  203. data/generated/google/apis/games_configuration_v1configuration/representations.rb +206 -0
  204. data/generated/google/apis/games_configuration_v1configuration/service.rb +565 -0
  205. data/generated/google/apis/games_management_v1management.rb +37 -0
  206. data/generated/google/apis/games_management_v1management/classes.rb +524 -0
  207. data/generated/google/apis/games_management_v1management/representations.rb +231 -0
  208. data/generated/google/apis/games_management_v1management/service.rb +994 -0
  209. data/generated/google/apis/games_v1.rb +40 -0
  210. data/generated/google/apis/games_v1/classes.rb +4617 -0
  211. data/generated/google/apis/games_v1/representations.rb +1584 -0
  212. data/generated/google/apis/games_v1/service.rb +2290 -0
  213. data/generated/google/apis/gan_v1beta1.rb +31 -0
  214. data/generated/google/apis/gan_v1beta1/classes.rb +1428 -0
  215. data/generated/google/apis/gan_v1beta1/representations.rb +428 -0
  216. data/generated/google/apis/gan_v1beta1/service.rb +682 -0
  217. data/generated/google/apis/genomics_v1.rb +49 -0
  218. data/generated/google/apis/genomics_v1/classes.rb +2609 -0
  219. data/generated/google/apis/genomics_v1/representations.rb +909 -0
  220. data/generated/google/apis/genomics_v1/service.rb +1676 -0
  221. data/generated/google/apis/genomics_v1beta2.rb +46 -0
  222. data/generated/google/apis/genomics_v1beta2/classes.rb +3288 -0
  223. data/generated/google/apis/genomics_v1beta2/representations.rb +1194 -0
  224. data/generated/google/apis/genomics_v1beta2/service.rb +2392 -0
  225. data/generated/google/apis/gmail_v1.rb +52 -0
  226. data/generated/google/apis/gmail_v1/classes.rb +794 -0
  227. data/generated/google/apis/gmail_v1/representations.rb +339 -0
  228. data/generated/google/apis/gmail_v1/service.rb +1470 -0
  229. data/generated/google/apis/groupsmigration_v1.rb +34 -0
  230. data/generated/google/apis/groupsmigration_v1/classes.rb +51 -0
  231. data/generated/google/apis/groupsmigration_v1/representations.rb +38 -0
  232. data/generated/google/apis/groupsmigration_v1/service.rb +110 -0
  233. data/generated/google/apis/groupssettings_v1.rb +34 -0
  234. data/generated/google/apis/groupssettings_v1/classes.rb +221 -0
  235. data/generated/google/apis/groupssettings_v1/representations.rb +64 -0
  236. data/generated/google/apis/groupssettings_v1/service.rb +179 -0
  237. data/generated/google/apis/identitytoolkit_v3.rb +31 -0
  238. data/generated/google/apis/identitytoolkit_v3/classes.rb +1466 -0
  239. data/generated/google/apis/identitytoolkit_v3/representations.rb +509 -0
  240. data/generated/google/apis/identitytoolkit_v3/service.rb +581 -0
  241. data/{spec/google/api_client/request_spec.rb → generated/google/apis/kgsearch_v1.rb} +16 -13
  242. data/generated/google/apis/kgsearch_v1/classes.rb +59 -0
  243. data/generated/google/apis/kgsearch_v1/representations.rb +39 -0
  244. data/generated/google/apis/kgsearch_v1/service.rb +111 -0
  245. data/generated/google/apis/licensing_v1.rb +34 -0
  246. data/generated/google/apis/licensing_v1/classes.rb +132 -0
  247. data/generated/google/apis/licensing_v1/representations.rb +68 -0
  248. data/generated/google/apis/licensing_v1/service.rb +369 -0
  249. data/generated/google/apis/logging_v1beta3.rb +47 -0
  250. data/generated/google/apis/logging_v1beta3/classes.rb +1079 -0
  251. data/generated/google/apis/logging_v1beta3/representations.rb +366 -0
  252. data/generated/google/apis/logging_v1beta3/service.rb +1001 -0
  253. data/generated/google/apis/manager_v1beta2.rb +53 -0
  254. data/generated/google/apis/manager_v1beta2/classes.rb +1287 -0
  255. data/generated/google/apis/manager_v1beta2/representations.rb +536 -0
  256. data/generated/google/apis/manager_v1beta2/service.rb +372 -0
  257. data/generated/google/apis/mapsengine_v1.rb +38 -0
  258. data/generated/google/apis/mapsengine_v1/classes.rb +2873 -0
  259. data/generated/google/apis/mapsengine_v1/representations.rb +1235 -0
  260. data/generated/google/apis/mapsengine_v1/service.rb +3388 -0
  261. data/generated/google/apis/mirror_v1.rb +37 -0
  262. data/generated/google/apis/mirror_v1/classes.rb +1072 -0
  263. data/generated/google/apis/mirror_v1/representations.rb +350 -0
  264. data/generated/google/apis/mirror_v1/service.rb +977 -0
  265. data/generated/google/apis/oauth2_v2.rb +43 -0
  266. data/generated/google/apis/oauth2_v2/classes.rb +245 -0
  267. data/generated/google/apis/oauth2_v2/representations.rb +94 -0
  268. data/generated/google/apis/oauth2_v2/service.rb +199 -0
  269. data/generated/google/apis/pagespeedonline_v2.rb +32 -0
  270. data/generated/google/apis/pagespeedonline_v2/classes.rb +614 -0
  271. data/generated/google/apis/pagespeedonline_v2/representations.rb +244 -0
  272. data/generated/google/apis/pagespeedonline_v2/service.rb +119 -0
  273. data/generated/google/apis/partners_v2.rb +32 -0
  274. data/generated/google/apis/partners_v2/classes.rb +942 -0
  275. data/generated/google/apis/partners_v2/representations.rb +402 -0
  276. data/generated/google/apis/partners_v2/service.rb +400 -0
  277. data/generated/google/apis/plus_domains_v1.rb +61 -0
  278. data/generated/google/apis/plus_domains_v1/classes.rb +2609 -0
  279. data/generated/google/apis/plus_domains_v1/representations.rb +987 -0
  280. data/generated/google/apis/plus_domains_v1/service.rb +904 -0
  281. data/generated/google/apis/plus_v1.rb +43 -0
  282. data/generated/google/apis/plus_v1/classes.rb +2094 -0
  283. data/generated/google/apis/plus_v1/representations.rb +805 -0
  284. data/generated/google/apis/plus_v1/service.rb +470 -0
  285. data/generated/google/apis/prediction_v1_6.rb +44 -0
  286. data/generated/google/apis/prediction_v1_6/classes.rb +751 -0
  287. data/generated/google/apis/prediction_v1_6/representations.rb +327 -0
  288. data/generated/google/apis/prediction_v1_6/service.rb +380 -0
  289. data/generated/google/apis/proximitybeacon_v1beta1.rb +31 -0
  290. data/generated/google/apis/proximitybeacon_v1beta1/classes.rb +639 -0
  291. data/generated/google/apis/proximitybeacon_v1beta1/representations.rb +274 -0
  292. data/generated/google/apis/proximitybeacon_v1beta1/service.rb +591 -0
  293. data/generated/google/apis/pubsub_v1.rb +37 -0
  294. data/generated/google/apis/pubsub_v1/classes.rb +614 -0
  295. data/generated/google/apis/pubsub_v1/representations.rb +281 -0
  296. data/generated/google/apis/pubsub_v1/service.rb +774 -0
  297. data/generated/google/apis/pubsub_v1beta2.rb +37 -0
  298. data/generated/google/apis/pubsub_v1beta2/classes.rb +620 -0
  299. data/generated/google/apis/pubsub_v1beta2/representations.rb +282 -0
  300. data/generated/google/apis/pubsub_v1beta2/service.rb +774 -0
  301. data/generated/google/apis/qpx_express_v1.rb +31 -0
  302. data/generated/google/apis/qpx_express_v1/classes.rb +1268 -0
  303. data/generated/google/apis/qpx_express_v1/representations.rb +424 -0
  304. data/generated/google/apis/qpx_express_v1/service.rb +100 -0
  305. data/generated/google/apis/replicapool_v1beta2.rb +44 -0
  306. data/generated/google/apis/replicapool_v1beta2/classes.rb +631 -0
  307. data/generated/google/apis/replicapool_v1beta2/representations.rb +236 -0
  308. data/generated/google/apis/replicapool_v1beta2/service.rb +608 -0
  309. data/generated/google/apis/replicapoolupdater_v1beta1.rb +44 -0
  310. data/generated/google/apis/replicapoolupdater_v1beta1/classes.rb +733 -0
  311. data/generated/google/apis/replicapoolupdater_v1beta1/representations.rb +264 -0
  312. data/generated/google/apis/replicapoolupdater_v1beta1/service.rb +508 -0
  313. data/generated/google/apis/reseller_v1.rb +37 -0
  314. data/generated/google/apis/reseller_v1/classes.rb +520 -0
  315. data/generated/google/apis/reseller_v1/representations.rb +200 -0
  316. data/generated/google/apis/reseller_v1/service.rb +623 -0
  317. data/generated/google/apis/resourceviews_v1beta2.rb +50 -0
  318. data/generated/google/apis/resourceviews_v1beta2/classes.rb +660 -0
  319. data/generated/google/apis/resourceviews_v1beta2/representations.rb +269 -0
  320. data/generated/google/apis/resourceviews_v1beta2/service.rb +563 -0
  321. data/generated/google/apis/script_v1.rb +61 -0
  322. data/generated/google/apis/script_v1/classes.rb +259 -0
  323. data/generated/google/apis/script_v1/representations.rb +106 -0
  324. data/generated/google/apis/script_v1/service.rb +98 -0
  325. data/generated/google/apis/site_verification_v1.rb +37 -0
  326. data/generated/google/apis/site_verification_v1/classes.rb +185 -0
  327. data/generated/google/apis/site_verification_v1/representations.rb +101 -0
  328. data/generated/google/apis/site_verification_v1/service.rb +315 -0
  329. data/generated/google/apis/sqladmin_v1beta4.rb +37 -0
  330. data/generated/google/apis/sqladmin_v1beta4/classes.rb +2001 -0
  331. data/generated/google/apis/sqladmin_v1beta4/representations.rb +758 -0
  332. data/generated/google/apis/sqladmin_v1beta4/service.rb +1625 -0
  333. data/generated/google/apis/storage_v1.rb +46 -0
  334. data/generated/google/apis/storage_v1/classes.rb +1222 -0
  335. data/generated/google/apis/storage_v1/representations.rb +445 -0
  336. data/generated/google/apis/storage_v1/service.rb +1903 -0
  337. data/generated/google/apis/storagetransfer_v1.rb +35 -0
  338. data/generated/google/apis/storagetransfer_v1/classes.rb +1046 -0
  339. data/generated/google/apis/storagetransfer_v1/representations.rb +370 -0
  340. data/generated/google/apis/storagetransfer_v1/service.rb +473 -0
  341. data/generated/google/apis/tagmanager_v1.rb +52 -0
  342. data/generated/google/apis/tagmanager_v1/classes.rb +1384 -0
  343. data/generated/google/apis/tagmanager_v1/representations.rb +515 -0
  344. data/generated/google/apis/tagmanager_v1/service.rb +1817 -0
  345. data/generated/google/apis/taskqueue_v1beta2.rb +37 -0
  346. data/generated/google/apis/taskqueue_v1beta2/classes.rb +254 -0
  347. data/generated/google/apis/taskqueue_v1beta2/representations.rb +114 -0
  348. data/generated/google/apis/taskqueue_v1beta2/service.rb +408 -0
  349. data/generated/google/apis/tasks_v1.rb +37 -0
  350. data/generated/google/apis/tasks_v1/classes.rb +296 -0
  351. data/generated/google/apis/tasks_v1/representations.rb +115 -0
  352. data/generated/google/apis/tasks_v1/service.rb +643 -0
  353. data/generated/google/apis/translate_v2.rb +31 -0
  354. data/generated/google/apis/translate_v2/classes.rb +168 -0
  355. data/generated/google/apis/translate_v2/representations.rb +109 -0
  356. data/generated/google/apis/translate_v2/service.rb +182 -0
  357. data/generated/google/apis/urlshortener_v1.rb +34 -0
  358. data/generated/google/apis/urlshortener_v1/classes.rb +246 -0
  359. data/generated/google/apis/urlshortener_v1/representations.rb +111 -0
  360. data/generated/google/apis/urlshortener_v1/service.rb +176 -0
  361. data/generated/google/apis/webmasters_v3.rb +37 -0
  362. data/generated/google/apis/webmasters_v3/classes.rb +563 -0
  363. data/generated/google/apis/webmasters_v3/representations.rb +250 -0
  364. data/generated/google/apis/webmasters_v3/service.rb +573 -0
  365. data/generated/google/apis/youtube_analytics_v1.rb +46 -0
  366. data/generated/google/apis/youtube_analytics_v1/classes.rb +546 -0
  367. data/generated/google/apis/youtube_analytics_v1/representations.rb +243 -0
  368. data/generated/google/apis/youtube_analytics_v1/service.rb +562 -0
  369. data/generated/google/apis/youtube_v3.rb +49 -0
  370. data/generated/google/apis/youtube_v3/classes.rb +8136 -0
  371. data/generated/google/apis/youtube_v3/representations.rb +2838 -0
  372. data/generated/google/apis/youtube_v3/service.rb +4403 -0
  373. data/generated/google/apis/youtubereporting_v1.rb +38 -0
  374. data/generated/google/apis/youtubereporting_v1/classes.rb +258 -0
  375. data/generated/google/apis/youtubereporting_v1/representations.rb +128 -0
  376. data/generated/google/apis/youtubereporting_v1/service.rb +364 -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.rb +48 -0
  385. data/lib/google/apis/core/api_command.rb +135 -0
  386. data/lib/google/apis/core/base_service.rb +317 -0
  387. data/lib/google/apis/core/batch.rb +239 -0
  388. data/lib/google/apis/core/download.rb +94 -0
  389. data/lib/google/apis/core/hashable.rb +44 -0
  390. data/lib/google/apis/core/http_client_adapter.rb +82 -0
  391. data/lib/google/apis/core/http_command.rb +312 -0
  392. data/lib/google/apis/core/json_representation.rb +127 -0
  393. data/lib/google/{api_client/version.rb → apis/core/logging.rb} +12 -8
  394. data/lib/google/apis/core/multipart.rb +187 -0
  395. data/lib/google/apis/core/upload.rb +288 -0
  396. data/lib/google/{api_client → apis}/errors.rb +39 -28
  397. data/lib/google/apis/generator.rb +70 -0
  398. data/lib/google/apis/generator/annotator.rb +295 -0
  399. data/lib/google/apis/generator/helpers.rb +74 -0
  400. data/lib/google/apis/generator/model.rb +143 -0
  401. data/lib/google/apis/generator/template.rb +124 -0
  402. data/lib/google/apis/generator/templates/_class.tmpl +40 -0
  403. data/lib/google/apis/generator/templates/_method.tmpl +92 -0
  404. data/lib/google/apis/generator/templates/_representation.tmpl +51 -0
  405. data/lib/google/apis/generator/templates/_representation_stub.tmpl +15 -0
  406. data/lib/google/apis/generator/templates/_representation_type.tmpl +10 -0
  407. data/lib/google/{api_client/reference.rb → apis/generator/templates/classes.rb.tmpl} +11 -9
  408. data/lib/google/apis/generator/templates/module.rb.tmpl +40 -0
  409. data/lib/google/apis/generator/templates/representations.rb.tmpl +32 -0
  410. data/lib/google/apis/generator/templates/service.rb.tmpl +60 -0
  411. data/lib/google/apis/options.rb +85 -0
  412. data/lib/google/apis/version.rb +39 -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.rb +131 -44
  460. data/spec/spec_helper/load_path_spec.rb +33 -0
  461. data/third_party/hurley_patches.rb +103 -0
  462. metadata +533 -170
  463. data/lib/compat/multi_json.rb +0 -19
  464. data/lib/google/api_client.rb +0 -750
  465. data/lib/google/api_client/auth/file_storage.rb +0 -59
  466. data/lib/google/api_client/auth/jwt_asserter.rb +0 -126
  467. data/lib/google/api_client/auth/pkcs12.rb +0 -41
  468. data/lib/google/api_client/batch.rb +0 -326
  469. data/lib/google/api_client/charset.rb +0 -33
  470. data/lib/google/api_client/discovery/api.rb +0 -310
  471. data/lib/google/api_client/discovery/media.rb +0 -77
  472. data/lib/google/api_client/discovery/method.rb +0 -363
  473. data/lib/google/api_client/discovery/resource.rb +0 -156
  474. data/lib/google/api_client/discovery/schema.rb +0 -117
  475. data/lib/google/api_client/environment.rb +0 -42
  476. data/lib/google/api_client/gzip.rb +0 -28
  477. data/lib/google/api_client/logging.rb +0 -32
  478. data/lib/google/api_client/media.rb +0 -259
  479. data/lib/google/api_client/railtie.rb +0 -18
  480. data/lib/google/api_client/request.rb +0 -350
  481. data/lib/google/api_client/result.rb +0 -255
  482. data/lib/google/api_client/service.rb +0 -233
  483. data/lib/google/api_client/service/batch.rb +0 -110
  484. data/lib/google/api_client/service/request.rb +0 -144
  485. data/lib/google/api_client/service/resource.rb +0 -40
  486. data/lib/google/api_client/service/result.rb +0 -162
  487. data/lib/google/api_client/service/simple_file_store.rb +0 -151
  488. data/lib/google/api_client/service/stub_generator.rb +0 -61
  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
@@ -1,33 +0,0 @@
1
- require 'faraday'
2
- require 'zlib'
3
-
4
- module Google
5
- class APIClient
6
- class Charset < Faraday::Response::Middleware
7
- include Google::APIClient::Logging
8
-
9
- def charset_for_content_type(type)
10
- if type
11
- m = type.match(/(?:charset|encoding)="?([a-z0-9-]+)"?/i)
12
- if m
13
- return Encoding.find(m[1])
14
- end
15
- end
16
- nil
17
- end
18
-
19
- def adjust_encoding(env)
20
- charset = charset_for_content_type(env[:response_headers]['content-type'])
21
- if charset && env[:body].encoding != charset
22
- env[:body].force_encoding(charset)
23
- end
24
- end
25
-
26
- def on_complete(env)
27
- adjust_encoding(env)
28
- end
29
- end
30
- end
31
- end
32
-
33
- Faraday::Response.register_middleware :charset => Google::APIClient::Charset
@@ -1,310 +0,0 @@
1
- # Copyright 2010 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
-
16
- require 'addressable/uri'
17
- require 'multi_json'
18
- require 'active_support/inflector'
19
- require 'google/api_client/discovery/resource'
20
- require 'google/api_client/discovery/method'
21
- require 'google/api_client/discovery/media'
22
-
23
- module Google
24
- class APIClient
25
- ##
26
- # A service that has been described by a discovery document.
27
- class API
28
-
29
- ##
30
- # Creates a description of a particular version of a service.
31
- #
32
- # @param [String] document_base
33
- # Base URI for the discovery document.
34
- # @param [Hash] discovery_document
35
- # The section of the discovery document that applies to this service
36
- # version.
37
- #
38
- # @return [Google::APIClient::API] The constructed service object.
39
- def initialize(document_base, discovery_document)
40
- @document_base = Addressable::URI.parse(document_base)
41
- @discovery_document = discovery_document
42
- metaclass = (class << self; self; end)
43
- self.discovered_resources.each do |resource|
44
- method_name = ActiveSupport::Inflector.underscore(resource.name).to_sym
45
- if !self.respond_to?(method_name)
46
- metaclass.send(:define_method, method_name) { resource }
47
- end
48
- end
49
- self.discovered_methods.each do |method|
50
- method_name = ActiveSupport::Inflector.underscore(method.name).to_sym
51
- if !self.respond_to?(method_name)
52
- metaclass.send(:define_method, method_name) { method }
53
- end
54
- end
55
- end
56
-
57
- # @return [String] unparsed discovery document for the API
58
- attr_reader :discovery_document
59
-
60
- ##
61
- # Returns the id of the service.
62
- #
63
- # @return [String] The service id.
64
- def id
65
- return (
66
- @discovery_document['id'] ||
67
- "#{self.name}:#{self.version}"
68
- )
69
- end
70
-
71
- ##
72
- # Returns the identifier for the service.
73
- #
74
- # @return [String] The service identifier.
75
- def name
76
- return @discovery_document['name']
77
- end
78
-
79
- ##
80
- # Returns the version of the service.
81
- #
82
- # @return [String] The service version.
83
- def version
84
- return @discovery_document['version']
85
- end
86
-
87
- ##
88
- # Returns a human-readable title for the API.
89
- #
90
- # @return [Hash] The API title.
91
- def title
92
- return @discovery_document['title']
93
- end
94
-
95
- ##
96
- # Returns a human-readable description of the API.
97
- #
98
- # @return [Hash] The API description.
99
- def description
100
- return @discovery_document['description']
101
- end
102
-
103
- ##
104
- # Returns a URI for the API documentation.
105
- #
106
- # @return [Hash] The API documentation.
107
- def documentation
108
- return Addressable::URI.parse(@discovery_document['documentationLink'])
109
- end
110
-
111
- ##
112
- # Returns true if this is the preferred version of this API.
113
- #
114
- # @return [TrueClass, FalseClass]
115
- # Whether or not this is the preferred version of this API.
116
- def preferred
117
- return !!@discovery_document['preferred']
118
- end
119
-
120
- ##
121
- # Returns the list of API features.
122
- #
123
- # @return [Array]
124
- # The features supported by this API.
125
- def features
126
- return @discovery_document['features'] || []
127
- end
128
-
129
- ##
130
- # Returns the root URI for this service.
131
- #
132
- # @return [Addressable::URI] The root URI.
133
- def root_uri
134
- return @root_uri ||= (
135
- Addressable::URI.parse(self.discovery_document['rootUrl'])
136
- )
137
- end
138
-
139
- ##
140
- # Returns true if this API uses a data wrapper.
141
- #
142
- # @return [TrueClass, FalseClass]
143
- # Whether or not this API uses a data wrapper.
144
- def data_wrapper?
145
- return self.features.include?('dataWrapper')
146
- end
147
-
148
- ##
149
- # Returns the base URI for the discovery document.
150
- #
151
- # @return [Addressable::URI] The base URI.
152
- attr_reader :document_base
153
-
154
- ##
155
- # Returns the base URI for this version of the service.
156
- #
157
- # @return [Addressable::URI] The base URI that methods are joined to.
158
- def method_base
159
- if @discovery_document['basePath']
160
- return @method_base ||= (
161
- self.root_uri.join(Addressable::URI.parse(@discovery_document['basePath']))
162
- ).normalize
163
- else
164
- return nil
165
- end
166
- end
167
-
168
- ##
169
- # Updates the hierarchy of resources and methods with the new base.
170
- #
171
- # @param [Addressable::URI, #to_str, String] new_method_base
172
- # The new base URI to use for the service.
173
- def method_base=(new_method_base)
174
- @method_base = Addressable::URI.parse(new_method_base)
175
- self.discovered_resources.each do |resource|
176
- resource.method_base = @method_base
177
- end
178
- self.discovered_methods.each do |method|
179
- method.method_base = @method_base
180
- end
181
- end
182
-
183
- ##
184
- # Returns the base URI for batch calls to this service.
185
- #
186
- # @return [Addressable::URI] The base URI that methods are joined to.
187
- def batch_path
188
- if @discovery_document['batchPath']
189
- return @batch_path ||= (
190
- self.document_base.join(Addressable::URI.parse('/' +
191
- @discovery_document['batchPath']))
192
- ).normalize
193
- else
194
- return nil
195
- end
196
- end
197
-
198
- ##
199
- # A list of schemas available for this version of the API.
200
- #
201
- # @return [Hash] A list of {Google::APIClient::Schema} objects.
202
- def schemas
203
- return @schemas ||= (
204
- (@discovery_document['schemas'] || []).inject({}) do |accu, (k, v)|
205
- accu[k] = Google::APIClient::Schema.parse(self, v)
206
- accu
207
- end
208
- )
209
- end
210
-
211
- ##
212
- # Returns a schema for a kind value.
213
- #
214
- # @return [Google::APIClient::Schema] The associated Schema object.
215
- def schema_for_kind(kind)
216
- api_name, schema_name = kind.split('#', 2)
217
- if api_name != self.name
218
- raise ArgumentError,
219
- "The kind does not match this API. " +
220
- "Expected '#{self.name}', got '#{api_name}'."
221
- end
222
- for k, v in self.schemas
223
- return v if k.downcase == schema_name.downcase
224
- end
225
- return nil
226
- end
227
-
228
- ##
229
- # A list of resources available at the root level of this version of the
230
- # API.
231
- #
232
- # @return [Array] A list of {Google::APIClient::Resource} objects.
233
- def discovered_resources
234
- return @discovered_resources ||= (
235
- (@discovery_document['resources'] || []).inject([]) do |accu, (k, v)|
236
- accu << Google::APIClient::Resource.new(
237
- self, self.method_base, k, v
238
- )
239
- accu
240
- end
241
- )
242
- end
243
-
244
- ##
245
- # A list of methods available at the root level of this version of the
246
- # API.
247
- #
248
- # @return [Array] A list of {Google::APIClient::Method} objects.
249
- def discovered_methods
250
- return @discovered_methods ||= (
251
- (@discovery_document['methods'] || []).inject([]) do |accu, (k, v)|
252
- accu << Google::APIClient::Method.new(self, self.method_base, k, v)
253
- accu
254
- end
255
- )
256
- end
257
-
258
- ##
259
- # Allows deep inspection of the discovery document.
260
- def [](key)
261
- return @discovery_document[key]
262
- end
263
-
264
- ##
265
- # Converts the service to a flat mapping of RPC names and method objects.
266
- #
267
- # @return [Hash] All methods available on the service.
268
- #
269
- # @example
270
- # # Discover available methods
271
- # method_names = client.discovered_api('buzz').to_h.keys
272
- def to_h
273
- return @hash ||= (begin
274
- methods_hash = {}
275
- self.discovered_methods.each do |method|
276
- methods_hash[method.id] = method
277
- end
278
- self.discovered_resources.each do |resource|
279
- methods_hash.merge!(resource.to_h)
280
- end
281
- methods_hash
282
- end)
283
- end
284
-
285
- ##
286
- # Returns a <code>String</code> representation of the service's state.
287
- #
288
- # @return [String] The service's state, as a <code>String</code>.
289
- def inspect
290
- sprintf(
291
- "#<%s:%#0x ID:%s>", self.class.to_s, self.object_id, self.id
292
- )
293
- end
294
-
295
- ##
296
- # Marshalling support - serialize the API to a string (doc base + original
297
- # discovery document).
298
- def _dump(level)
299
- MultiJson.dump([@document_base.to_s, @discovery_document])
300
- end
301
-
302
- ##
303
- # Marshalling support - Restore an API instance from serialized form
304
- def self._load(obj)
305
- new(*MultiJson.load(obj))
306
- end
307
-
308
- end
309
- end
310
- end
@@ -1,77 +0,0 @@
1
- # Copyright 2010 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
-
16
- require 'addressable/uri'
17
- require 'addressable/template'
18
-
19
- require 'google/api_client/errors'
20
-
21
-
22
- module Google
23
- class APIClient
24
- ##
25
- # Media upload elements for discovered methods
26
- class MediaUpload
27
-
28
- ##
29
- # Creates a description of a particular method.
30
- #
31
- # @param [Google::APIClient::API] api
32
- # Base discovery document for the API
33
- # @param [Addressable::URI] method_base
34
- # The base URI for the service.
35
- # @param [Hash] discovery_document
36
- # The media upload section of the discovery document.
37
- #
38
- # @return [Google::APIClient::Method] The constructed method object.
39
- def initialize(api, method_base, discovery_document)
40
- @api = api
41
- @method_base = method_base
42
- @discovery_document = discovery_document
43
- end
44
-
45
- ##
46
- # List of acceptable mime types
47
- #
48
- # @return [Array]
49
- # List of acceptable mime types for uploaded content
50
- def accepted_types
51
- @discovery_document['accept']
52
- end
53
-
54
- ##
55
- # Maximum size of an uplad
56
- # TODO: Parse & convert to numeric value
57
- #
58
- # @return [String]
59
- def max_size
60
- @discovery_document['maxSize']
61
- end
62
-
63
- ##
64
- # Returns the URI template for the method. A parameter list can be
65
- # used to expand this into a URI.
66
- #
67
- # @return [Addressable::Template] The URI template.
68
- def uri_template
69
- return @uri_template ||= Addressable::Template.new(
70
- @api.method_base.join(Addressable::URI.parse(@discovery_document['protocols']['simple']['path']))
71
- )
72
- end
73
-
74
- end
75
-
76
- end
77
- end
@@ -1,363 +0,0 @@
1
- # Copyright 2010 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
-
16
- require 'addressable/uri'
17
- require 'addressable/template'
18
-
19
- require 'google/api_client/errors'
20
-
21
-
22
- module Google
23
- class APIClient
24
- ##
25
- # A method that has been described by a discovery document.
26
- class Method
27
-
28
- ##
29
- # Creates a description of a particular method.
30
- #
31
- # @param [Google::APIClient::API] api
32
- # The API this method belongs to.
33
- # @param [Addressable::URI] method_base
34
- # The base URI for the service.
35
- # @param [String] method_name
36
- # The identifier for the method.
37
- # @param [Hash] discovery_document
38
- # The section of the discovery document that applies to this method.
39
- #
40
- # @return [Google::APIClient::Method] The constructed method object.
41
- def initialize(api, method_base, method_name, discovery_document)
42
- @api = api
43
- @method_base = method_base
44
- @name = method_name
45
- @discovery_document = discovery_document
46
- end
47
-
48
- # @return [String] unparsed discovery document for the method
49
- attr_reader :discovery_document
50
-
51
- ##
52
- # Returns the API this method belongs to.
53
- #
54
- # @return [Google::APIClient::API] The API this method belongs to.
55
- attr_reader :api
56
-
57
- ##
58
- # Returns the identifier for the method.
59
- #
60
- # @return [String] The method identifier.
61
- attr_reader :name
62
-
63
- ##
64
- # Returns the base URI for the method.
65
- #
66
- # @return [Addressable::URI]
67
- # The base URI that this method will be joined to.
68
- attr_reader :method_base
69
-
70
- ##
71
- # Updates the method with the new base.
72
- #
73
- # @param [Addressable::URI, #to_str, String] new_method_base
74
- # The new base URI to use for the method.
75
- def method_base=(new_method_base)
76
- @method_base = Addressable::URI.parse(new_method_base)
77
- @uri_template = nil
78
- end
79
-
80
- ##
81
- # Returns a human-readable description of the method.
82
- #
83
- # @return [Hash] The API description.
84
- def description
85
- return @discovery_document['description']
86
- end
87
-
88
- ##
89
- # Returns the method ID.
90
- #
91
- # @return [String] The method identifier.
92
- def id
93
- return @discovery_document['id']
94
- end
95
-
96
- ##
97
- # Returns the HTTP method or 'GET' if none is specified.
98
- #
99
- # @return [String] The HTTP method that will be used in the request.
100
- def http_method
101
- return @discovery_document['httpMethod'] || 'GET'
102
- end
103
-
104
- ##
105
- # Returns the URI template for the method. A parameter list can be
106
- # used to expand this into a URI.
107
- #
108
- # @return [Addressable::Template] The URI template.
109
- def uri_template
110
- return @uri_template ||= Addressable::Template.new(
111
- self.method_base.join(Addressable::URI.parse("./" + @discovery_document['path']))
112
- )
113
- end
114
-
115
- ##
116
- # Returns media upload information for this method, if supported
117
- #
118
- # @return [Google::APIClient::MediaUpload] Description of upload endpoints
119
- def media_upload
120
- if @discovery_document['mediaUpload']
121
- return @media_upload ||= Google::APIClient::MediaUpload.new(self, self.method_base, @discovery_document['mediaUpload'])
122
- else
123
- return nil
124
- end
125
- end
126
-
127
- ##
128
- # Returns the Schema object for the method's request, if any.
129
- #
130
- # @return [Google::APIClient::Schema] The request schema.
131
- def request_schema
132
- if @discovery_document['request']
133
- schema_name = @discovery_document['request']['$ref']
134
- return @api.schemas[schema_name]
135
- else
136
- return nil
137
- end
138
- end
139
-
140
- ##
141
- # Returns the Schema object for the method's response, if any.
142
- #
143
- # @return [Google::APIClient::Schema] The response schema.
144
- def response_schema
145
- if @discovery_document['response']
146
- schema_name = @discovery_document['response']['$ref']
147
- return @api.schemas[schema_name]
148
- else
149
- return nil
150
- end
151
- end
152
-
153
- ##
154
- # Normalizes parameters, converting to the appropriate types.
155
- #
156
- # @param [Hash, Array] parameters
157
- # The parameters to normalize.
158
- #
159
- # @return [Hash] The normalized parameters.
160
- def normalize_parameters(parameters={})
161
- # Convert keys to Strings when appropriate
162
- if parameters.kind_of?(Hash) || parameters.kind_of?(Array)
163
- # Returning an array since parameters can be repeated (ie, Adsense Management API)
164
- parameters = parameters.inject([]) do |accu, (k, v)|
165
- k = k.to_s if k.kind_of?(Symbol)
166
- k = k.to_str if k.respond_to?(:to_str)
167
- unless k.kind_of?(String)
168
- raise TypeError, "Expected String, got #{k.class}."
169
- end
170
- accu << [k, v]
171
- accu
172
- end
173
- else
174
- raise TypeError,
175
- "Expected Hash or Array, got #{parameters.class}."
176
- end
177
- return parameters
178
- end
179
-
180
- ##
181
- # Expands the method's URI template using a parameter list.
182
- #
183
- # @api private
184
- # @param [Hash, Array] parameters
185
- # The parameter list to use.
186
- #
187
- # @return [Addressable::URI] The URI after expansion.
188
- def generate_uri(parameters={})
189
- parameters = self.normalize_parameters(parameters)
190
-
191
- self.validate_parameters(parameters)
192
- template_variables = self.uri_template.variables
193
- upload_type = parameters.assoc('uploadType') || parameters.assoc('upload_type')
194
- if upload_type
195
- unless self.media_upload
196
- raise ArgumentException, "Media upload not supported for this method"
197
- end
198
- case upload_type.last
199
- when 'media', 'multipart', 'resumable'
200
- uri = self.media_upload.uri_template.expand(parameters)
201
- else
202
- raise ArgumentException, "Invalid uploadType '#{upload_type}'"
203
- end
204
- else
205
- uri = self.uri_template.expand(parameters)
206
- end
207
- query_parameters = parameters.reject do |k, v|
208
- template_variables.include?(k)
209
- end
210
- # encode all non-template parameters
211
- params = ""
212
- unless query_parameters.empty?
213
- params = "?" + Addressable::URI.form_encode(query_parameters.sort)
214
- end
215
- # Normalization is necessary because of undesirable percent-escaping
216
- # during URI template expansion
217
- return uri.normalize + params
218
- end
219
-
220
- ##
221
- # Generates an HTTP request for this method.
222
- #
223
- # @api private
224
- # @param [Hash, Array] parameters
225
- # The parameters to send.
226
- # @param [String, StringIO] body The body for the HTTP request.
227
- # @param [Hash, Array] headers The HTTP headers for the request.
228
- # @option options [Faraday::Connection] :connection
229
- # The HTTP connection to use.
230
- #
231
- # @return [Array] The generated HTTP request.
232
- def generate_request(parameters={}, body='', headers={}, options={})
233
- if !headers.kind_of?(Array) && !headers.kind_of?(Hash)
234
- raise TypeError, "Expected Hash or Array, got #{headers.class}."
235
- end
236
- method = self.http_method.to_s.downcase.to_sym
237
- uri = self.generate_uri(parameters)
238
- headers = Faraday::Utils::Headers.new(headers)
239
- return [method, uri, headers, body]
240
- end
241
-
242
-
243
- ##
244
- # Returns a <code>Hash</code> of the parameter descriptions for
245
- # this method.
246
- #
247
- # @return [Hash] The parameter descriptions.
248
- def parameter_descriptions
249
- @parameter_descriptions ||= (
250
- @discovery_document['parameters'] || {}
251
- ).inject({}) { |h,(k,v)| h[k]=v; h }
252
- end
253
-
254
- ##
255
- # Returns an <code>Array</code> of the parameters for this method.
256
- #
257
- # @return [Array] The parameters.
258
- def parameters
259
- @parameters ||= ((
260
- @discovery_document['parameters'] || {}
261
- ).inject({}) { |h,(k,v)| h[k]=v; h }).keys
262
- end
263
-
264
- ##
265
- # Returns an <code>Array</code> of the required parameters for this
266
- # method.
267
- #
268
- # @return [Array] The required parameters.
269
- #
270
- # @example
271
- # # A list of all required parameters.
272
- # method.required_parameters
273
- def required_parameters
274
- @required_parameters ||= ((self.parameter_descriptions.select do |k, v|
275
- v['required']
276
- end).inject({}) { |h,(k,v)| h[k]=v; h }).keys
277
- end
278
-
279
- ##
280
- # Returns an <code>Array</code> of the optional parameters for this
281
- # method.
282
- #
283
- # @return [Array] The optional parameters.
284
- #
285
- # @example
286
- # # A list of all optional parameters.
287
- # method.optional_parameters
288
- def optional_parameters
289
- @optional_parameters ||= ((self.parameter_descriptions.reject do |k, v|
290
- v['required']
291
- end).inject({}) { |h,(k,v)| h[k]=v; h }).keys
292
- end
293
-
294
- ##
295
- # Verifies that the parameters are valid for this method. Raises an
296
- # exception if validation fails.
297
- #
298
- # @api private
299
- # @param [Hash, Array] parameters
300
- # The parameters to verify.
301
- #
302
- # @return [NilClass] <code>nil</code> if validation passes.
303
- def validate_parameters(parameters={})
304
- parameters = self.normalize_parameters(parameters)
305
- required_variables = ((self.parameter_descriptions.select do |k, v|
306
- v['required']
307
- end).inject({}) { |h,(k,v)| h[k]=v; h }).keys
308
- missing_variables = required_variables - parameters.map { |(k, _)| k }
309
- if missing_variables.size > 0
310
- raise ArgumentError,
311
- "Missing required parameters: #{missing_variables.join(', ')}."
312
- end
313
- parameters.each do |k, v|
314
- # Handle repeated parameters.
315
- if self.parameter_descriptions[k] &&
316
- self.parameter_descriptions[k]['repeated'] &&
317
- v.kind_of?(Array)
318
- # If this is a repeated parameter and we've got an array as a
319
- # value, just provide the whole array to the loop below.
320
- items = v
321
- else
322
- # If this is not a repeated parameter, or if it is but we're
323
- # being given a single value, wrap the value in an array, so that
324
- # the loop below still works for the single element.
325
- items = [v]
326
- end
327
-
328
- items.each do |item|
329
- if self.parameter_descriptions[k]
330
- enum = self.parameter_descriptions[k]['enum']
331
- if enum && !enum.include?(item)
332
- raise ArgumentError,
333
- "Parameter '#{k}' has an invalid value: #{item}. " +
334
- "Must be one of #{enum.inspect}."
335
- end
336
- pattern = self.parameter_descriptions[k]['pattern']
337
- if pattern
338
- regexp = Regexp.new("^#{pattern}$")
339
- if item !~ regexp
340
- raise ArgumentError,
341
- "Parameter '#{k}' has an invalid value: #{item}. " +
342
- "Must match: /^#{pattern}$/."
343
- end
344
- end
345
- end
346
- end
347
- end
348
- return nil
349
- end
350
-
351
- ##
352
- # Returns a <code>String</code> representation of the method's state.
353
- #
354
- # @return [String] The method's state, as a <code>String</code>.
355
- def inspect
356
- sprintf(
357
- "#<%s:%#0x ID:%s>",
358
- self.class.to_s, self.object_id, self.id
359
- )
360
- end
361
- end
362
- end
363
- end