google-api-client 0.8.6 → 0.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +20 -0
- data/.rspec +2 -0
- data/.rubocop.yml +7 -0
- data/.rubocop_todo.yml +63 -0
- data/.travis.yml +23 -0
- data/.yardopts +12 -0
- data/CHANGELOG.md +58 -2
- data/CONTRIBUTING.md +31 -0
- data/Gemfile +38 -2
- data/MIGRATING.md +171 -0
- data/README.md +189 -147
- data/Rakefile +1 -40
- data/api_names.yaml +1088 -0
- data/api_names_out.yaml +26978 -0
- data/bin/generate-api +109 -0
- data/generated/google/apis/adexchangebuyer_v1_3/classes.rb +1335 -0
- data/generated/google/apis/adexchangebuyer_v1_3/representations.rb +446 -0
- data/generated/google/apis/adexchangebuyer_v1_3/service.rb +872 -0
- data/generated/google/apis/adexchangebuyer_v1_3.rb +35 -0
- data/generated/google/apis/adexchangebuyer_v1_4/classes.rb +3025 -0
- data/generated/google/apis/adexchangebuyer_v1_4/representations.rb +1240 -0
- data/generated/google/apis/adexchangebuyer_v1_4/service.rb +1446 -0
- data/generated/google/apis/adexchangebuyer_v1_4.rb +35 -0
- data/generated/google/apis/adexchangeseller_v2_0/classes.rb +792 -0
- data/generated/google/apis/adexchangeseller_v2_0/representations.rb +347 -0
- data/generated/google/apis/adexchangeseller_v2_0/service.rb +668 -0
- data/generated/google/apis/adexchangeseller_v2_0.rb +38 -0
- data/generated/google/apis/admin_datatransfer_v1/classes.rb +267 -0
- data/generated/google/apis/admin_datatransfer_v1/representations.rb +130 -0
- data/generated/google/apis/admin_datatransfer_v1/service.rb +262 -0
- data/generated/google/apis/admin_datatransfer_v1.rb +37 -0
- data/generated/google/apis/admin_directory_v1/classes.rb +3141 -0
- data/generated/google/apis/admin_directory_v1/representations.rb +1147 -0
- data/generated/google/apis/admin_directory_v1/service.rb +3818 -0
- data/generated/google/apis/admin_directory_v1.rb +113 -0
- data/generated/google/apis/admin_reports_v1/classes.rb +582 -0
- data/generated/google/apis/admin_reports_v1/representations.rb +257 -0
- data/generated/google/apis/admin_reports_v1/service.rb +336 -0
- data/generated/google/apis/admin_reports_v1.rb +38 -0
- data/generated/google/apis/adsense_v1_4/classes.rb +1280 -0
- data/generated/google/apis/adsense_v1_4/representations.rb +555 -0
- data/generated/google/apis/adsense_v1_4/service.rb +1714 -0
- data/generated/google/apis/adsense_v1_4.rb +38 -0
- data/generated/google/apis/adsensehost_v4_1/classes.rb +837 -0
- data/generated/google/apis/adsensehost_v4_1/representations.rb +367 -0
- data/generated/google/apis/adsensehost_v4_1/service.rb +1164 -0
- data/generated/google/apis/adsensehost_v4_1.rb +35 -0
- data/generated/google/apis/analytics_v3/classes.rb +5118 -0
- data/generated/google/apis/analytics_v3/representations.rb +1850 -0
- data/generated/google/apis/analytics_v3/service.rb +3568 -0
- data/generated/google/apis/analytics_v3.rb +49 -0
- data/generated/google/apis/androidenterprise_v1/classes.rb +1443 -0
- data/generated/google/apis/androidenterprise_v1/representations.rb +614 -0
- data/generated/google/apis/androidenterprise_v1/service.rb +2607 -0
- data/generated/google/apis/androidenterprise_v1.rb +35 -0
- data/generated/google/apis/androidpublisher_v2/classes.rb +1411 -0
- data/generated/google/apis/androidpublisher_v2/representations.rb +738 -0
- data/generated/google/apis/androidpublisher_v2/service.rb +2338 -0
- data/generated/google/apis/androidpublisher_v2.rb +34 -0
- data/generated/google/apis/appengine_v1beta4/classes.rb +1585 -0
- data/generated/google/apis/appengine_v1beta4/representations.rb +542 -0
- data/generated/google/apis/appengine_v1beta4/service.rb +477 -0
- data/generated/google/apis/appengine_v1beta4.rb +35 -0
- data/generated/google/apis/appengine_v1beta5/classes.rb +1544 -0
- data/generated/google/apis/appengine_v1beta5/representations.rb +594 -0
- data/generated/google/apis/appengine_v1beta5/service.rb +521 -0
- data/generated/google/apis/appengine_v1beta5.rb +35 -0
- data/generated/google/apis/appsactivity_v1/classes.rb +392 -0
- data/generated/google/apis/appsactivity_v1/representations.rb +206 -0
- data/generated/google/apis/appsactivity_v1/service.rb +128 -0
- data/generated/google/apis/appsactivity_v1.rb +46 -0
- data/generated/google/apis/appstate_v1/classes.rb +154 -0
- data/generated/google/apis/appstate_v1/representations.rb +87 -0
- data/generated/google/apis/appstate_v1/service.rb +260 -0
- data/generated/google/apis/appstate_v1.rb +34 -0
- data/generated/google/apis/autoscaler_v1beta2/classes.rb +747 -0
- data/generated/google/apis/autoscaler_v1beta2/representations.rb +313 -0
- data/generated/google/apis/autoscaler_v1beta2/service.rb +478 -0
- data/generated/google/apis/autoscaler_v1beta2.rb +38 -0
- data/generated/google/apis/bigquery_v2/classes.rb +2503 -0
- data/generated/google/apis/bigquery_v2/representations.rb +914 -0
- data/generated/google/apis/bigquery_v2/service.rb +982 -0
- data/generated/google/apis/bigquery_v2.rb +52 -0
- data/generated/google/apis/blogger_v3/classes.rb +1354 -0
- data/generated/google/apis/blogger_v3/representations.rb +632 -0
- data/generated/google/apis/blogger_v3/service.rb +1587 -0
- data/generated/google/apis/blogger_v3.rb +37 -0
- data/generated/google/apis/books_v1/classes.rb +4006 -0
- data/generated/google/apis/books_v1/representations.rb +1742 -0
- data/generated/google/apis/books_v1/service.rb +2293 -0
- data/generated/google/apis/books_v1.rb +34 -0
- data/generated/google/apis/calendar_v3/classes.rb +1742 -0
- data/generated/google/apis/calendar_v3/representations.rb +631 -0
- data/generated/google/apis/calendar_v3/service.rb +1968 -0
- data/generated/google/apis/calendar_v3.rb +37 -0
- data/generated/google/apis/civicinfo_v2/classes.rb +1127 -0
- data/generated/google/apis/civicinfo_v2/representations.rb +423 -0
- data/generated/google/apis/civicinfo_v2/service.rb +279 -0
- data/generated/google/apis/civicinfo_v2.rb +31 -0
- data/generated/google/apis/classroom_v1/classes.rb +512 -0
- data/generated/google/apis/classroom_v1/representations.rb +245 -0
- data/generated/google/apis/classroom_v1/service.rb +970 -0
- data/generated/google/apis/classroom_v1.rb +49 -0
- data/generated/google/apis/classroom_v1beta1/classes.rb +447 -0
- data/generated/google/apis/classroom_v1beta1/representations.rb +190 -0
- data/generated/google/apis/classroom_v1beta1/service.rb +791 -0
- data/generated/google/apis/classroom_v1beta1.rb +49 -0
- data/generated/google/apis/cloudbilling_v1/classes.rb +169 -0
- data/generated/google/apis/cloudbilling_v1/representations.rb +87 -0
- data/generated/google/apis/cloudbilling_v1/service.rb +258 -0
- data/generated/google/apis/cloudbilling_v1.rb +35 -0
- data/generated/google/apis/cloudbuild_v1/classes.rb +521 -0
- data/generated/google/apis/cloudbuild_v1/representations.rb +214 -0
- data/generated/google/apis/cloudbuild_v1/service.rb +278 -0
- data/generated/google/apis/cloudbuild_v1.rb +35 -0
- data/generated/google/apis/clouddebugger_v2/classes.rb +1004 -0
- data/generated/google/apis/clouddebugger_v2/representations.rb +464 -0
- data/generated/google/apis/clouddebugger_v2/service.rb +370 -0
- data/generated/google/apis/clouddebugger_v2.rb +41 -0
- data/generated/google/apis/cloudlatencytest_v2/classes.rb +195 -0
- data/generated/google/apis/cloudlatencytest_v2/representations.rb +127 -0
- data/generated/google/apis/cloudlatencytest_v2/service.rb +135 -0
- data/generated/google/apis/cloudlatencytest_v2.rb +34 -0
- data/generated/google/apis/cloudmonitoring_v2beta2/classes.rb +679 -0
- data/generated/google/apis/cloudmonitoring_v2beta2/representations.rb +353 -0
- data/generated/google/apis/cloudmonitoring_v2beta2/service.rb +452 -0
- data/generated/google/apis/cloudmonitoring_v2beta2.rb +37 -0
- data/generated/google/apis/cloudresourcemanager_v1beta1/classes.rb +450 -0
- data/generated/google/apis/cloudresourcemanager_v1beta1/representations.rb +226 -0
- data/generated/google/apis/cloudresourcemanager_v1beta1/service.rb +626 -0
- data/generated/google/apis/cloudresourcemanager_v1beta1.rb +38 -0
- data/generated/google/apis/cloudtrace_v1/classes.rb +188 -0
- data/generated/google/apis/cloudtrace_v1/representations.rb +102 -0
- data/generated/google/apis/cloudtrace_v1/service.rb +190 -0
- data/generated/google/apis/cloudtrace_v1.rb +35 -0
- data/generated/google/apis/clouduseraccounts_beta/classes.rb +823 -0
- data/generated/google/apis/clouduseraccounts_beta/representations.rb +351 -0
- data/generated/google/apis/clouduseraccounts_beta/service.rb +854 -0
- data/generated/google/apis/clouduseraccounts_beta.rb +43 -0
- data/generated/google/apis/compute_beta/classes.rb +9741 -0
- data/generated/google/apis/compute_beta/representations.rb +3649 -0
- data/generated/google/apis/compute_beta/service.rb +10636 -0
- data/generated/google/apis/compute_beta.rb +49 -0
- data/generated/google/apis/compute_v1/classes.rb +9095 -0
- data/generated/google/apis/compute_v1/representations.rb +3389 -0
- data/generated/google/apis/compute_v1/service.rb +9627 -0
- data/generated/google/apis/compute_v1.rb +49 -0
- data/generated/google/apis/container_v1/classes.rb +463 -0
- data/generated/google/apis/container_v1/representations.rb +195 -0
- data/generated/google/apis/container_v1/service.rb +367 -0
- data/generated/google/apis/container_v1.rb +35 -0
- data/generated/google/apis/container_v1beta1/classes.rb +466 -0
- data/generated/google/apis/container_v1beta1/representations.rb +177 -0
- data/generated/google/apis/container_v1beta1/service.rb +394 -0
- data/generated/google/apis/container_v1beta1.rb +35 -0
- data/generated/google/apis/content_v2/classes.rb +6114 -0
- data/generated/google/apis/content_v2/representations.rb +2624 -0
- data/generated/google/apis/content_v2/service.rb +2338 -0
- data/generated/google/apis/content_v2.rb +35 -0
- data/generated/google/apis/coordinate_v1/classes.rb +669 -0
- data/generated/google/apis/coordinate_v1/representations.rb +321 -0
- data/generated/google/apis/coordinate_v1/service.rb +678 -0
- data/generated/google/apis/coordinate_v1.rb +37 -0
- data/generated/google/apis/customsearch_v1/classes.rb +771 -0
- data/generated/google/apis/customsearch_v1/representations.rb +302 -0
- data/generated/google/apis/customsearch_v1/service.rb +207 -0
- data/{lib/google/api_client/auth/compute_service_account.rb → generated/google/apis/customsearch_v1.rb} +13 -10
- data/generated/google/apis/dataproc_v1/classes.rb +1590 -0
- data/generated/google/apis/dataproc_v1/representations.rb +653 -0
- data/generated/google/apis/dataproc_v1/service.rb +719 -0
- data/generated/google/apis/dataproc_v1.rb +43 -0
- data/generated/google/apis/datastore_v1beta2/classes.rb +1186 -0
- data/generated/google/apis/datastore_v1beta2/representations.rb +594 -0
- data/generated/google/apis/datastore_v1beta2/service.rb +294 -0
- data/generated/google/apis/datastore_v1beta2.rb +40 -0
- data/generated/google/apis/deploymentmanager_v2/classes.rb +1162 -0
- data/generated/google/apis/deploymentmanager_v2/representations.rb +508 -0
- data/generated/google/apis/deploymentmanager_v2/service.rb +862 -0
- data/generated/google/apis/deploymentmanager_v2.rb +44 -0
- data/generated/google/apis/deploymentmanager_v2beta2/classes.rb +843 -0
- data/generated/google/apis/deploymentmanager_v2beta2/representations.rb +306 -0
- data/generated/google/apis/deploymentmanager_v2beta2/service.rb +689 -0
- data/generated/google/apis/deploymentmanager_v2beta2.rb +44 -0
- data/generated/google/apis/dfareporting_v2_1/classes.rb +10770 -0
- data/generated/google/apis/dfareporting_v2_1/representations.rb +3438 -0
- data/generated/google/apis/dfareporting_v2_1/service.rb +8585 -0
- data/generated/google/apis/dfareporting_v2_1.rb +37 -0
- data/generated/google/apis/dfareporting_v2_3/classes.rb +10830 -0
- data/generated/google/apis/dfareporting_v2_3/representations.rb +3829 -0
- data/generated/google/apis/dfareporting_v2_3/service.rb +8581 -0
- data/generated/google/apis/dfareporting_v2_3.rb +37 -0
- data/generated/google/apis/discovery_v1/classes.rb +961 -0
- data/generated/google/apis/discovery_v1/representations.rb +397 -0
- data/generated/google/apis/discovery_v1/service.rb +142 -0
- data/generated/google/apis/discovery_v1.rb +32 -0
- data/generated/google/apis/dns_v1/classes.rb +406 -0
- data/generated/google/apis/dns_v1/representations.rb +167 -0
- data/generated/google/apis/dns_v1/service.rb +454 -0
- data/generated/google/apis/dns_v1.rb +44 -0
- data/generated/google/apis/doubleclickbidmanager_v1/classes.rb +802 -0
- data/generated/google/apis/doubleclickbidmanager_v1/representations.rb +371 -0
- data/generated/google/apis/doubleclickbidmanager_v1/service.rb +374 -0
- data/generated/google/apis/doubleclickbidmanager_v1.rb +31 -0
- data/generated/google/apis/doubleclicksearch_v2/classes.rb +958 -0
- data/generated/google/apis/doubleclicksearch_v2/representations.rb +350 -0
- data/generated/google/apis/doubleclicksearch_v2/service.rb +480 -0
- data/generated/google/apis/doubleclicksearch_v2.rb +35 -0
- data/generated/google/apis/drive_v2/classes.rb +2569 -0
- data/generated/google/apis/drive_v2/representations.rb +878 -0
- data/generated/google/apis/drive_v2/service.rb +2740 -0
- data/generated/google/apis/drive_v2.rb +58 -0
- data/generated/google/apis/drive_v3/classes.rb +1541 -0
- data/generated/google/apis/drive_v3/representations.rb +548 -0
- data/generated/google/apis/drive_v3/service.rb +1542 -0
- data/generated/google/apis/drive_v3.rb +55 -0
- data/generated/google/apis/fitness_v1/classes.rb +885 -0
- data/generated/google/apis/fitness_v1/representations.rb +360 -0
- data/generated/google/apis/fitness_v1/service.rb +675 -0
- data/generated/google/apis/fitness_v1.rb +49 -0
- data/generated/google/apis/fusiontables_v2/classes.rb +1048 -0
- data/generated/google/apis/fusiontables_v2/representations.rb +457 -0
- data/generated/google/apis/fusiontables_v2/service.rb +1463 -0
- data/generated/google/apis/fusiontables_v2.rb +37 -0
- data/generated/google/apis/games_configuration_v1configuration/classes.rb +506 -0
- data/generated/google/apis/games_configuration_v1configuration/representations.rb +228 -0
- data/generated/google/apis/games_configuration_v1configuration/service.rb +565 -0
- data/generated/google/apis/games_configuration_v1configuration.rb +34 -0
- data/generated/google/apis/games_management_v1management/classes.rb +533 -0
- data/generated/google/apis/games_management_v1management/representations.rb +262 -0
- data/generated/google/apis/games_management_v1management/service.rb +994 -0
- data/generated/google/apis/games_management_v1management.rb +37 -0
- data/generated/google/apis/games_v1/classes.rb +4626 -0
- data/generated/google/apis/games_v1/representations.rb +1783 -0
- data/generated/google/apis/games_v1/service.rb +2290 -0
- data/generated/google/apis/games_v1.rb +40 -0
- data/generated/google/apis/gan_v1beta1/classes.rb +1428 -0
- data/generated/google/apis/gan_v1beta1/representations.rb +462 -0
- data/generated/google/apis/gan_v1beta1/service.rb +682 -0
- data/generated/google/apis/gan_v1beta1.rb +31 -0
- data/generated/google/apis/genomics_v1/classes.rb +2609 -0
- data/generated/google/apis/genomics_v1/representations.rb +1029 -0
- data/generated/google/apis/genomics_v1/service.rb +1676 -0
- data/generated/google/apis/genomics_v1.rb +49 -0
- data/generated/google/apis/genomics_v1beta2/classes.rb +3288 -0
- data/generated/google/apis/genomics_v1beta2/representations.rb +1194 -0
- data/generated/google/apis/genomics_v1beta2/service.rb +2392 -0
- data/generated/google/apis/genomics_v1beta2.rb +46 -0
- data/generated/google/apis/gmail_v1/classes.rb +794 -0
- data/generated/google/apis/gmail_v1/representations.rb +383 -0
- data/generated/google/apis/gmail_v1/service.rb +1470 -0
- data/generated/google/apis/gmail_v1.rb +52 -0
- data/generated/google/apis/groupsmigration_v1/classes.rb +51 -0
- data/generated/google/apis/groupsmigration_v1/representations.rb +40 -0
- data/generated/google/apis/groupsmigration_v1/service.rb +110 -0
- data/generated/google/apis/groupsmigration_v1.rb +34 -0
- data/generated/google/apis/groupssettings_v1/classes.rb +221 -0
- data/generated/google/apis/groupssettings_v1/representations.rb +66 -0
- data/generated/google/apis/groupssettings_v1/service.rb +179 -0
- data/generated/google/apis/groupssettings_v1.rb +34 -0
- data/generated/google/apis/identitytoolkit_v3/classes.rb +1637 -0
- data/generated/google/apis/identitytoolkit_v3/representations.rb +618 -0
- data/generated/google/apis/identitytoolkit_v3/service.rb +616 -0
- data/generated/google/apis/identitytoolkit_v3.rb +31 -0
- data/generated/google/apis/kgsearch_v1/classes.rb +59 -0
- data/generated/google/apis/kgsearch_v1/representations.rb +41 -0
- data/generated/google/apis/kgsearch_v1/service.rb +111 -0
- data/{spec/google/api_client/request_spec.rb → generated/google/apis/kgsearch_v1.rb} +16 -13
- data/generated/google/apis/licensing_v1/classes.rb +132 -0
- data/generated/google/apis/licensing_v1/representations.rb +74 -0
- data/generated/google/apis/licensing_v1/service.rb +369 -0
- data/generated/google/apis/licensing_v1.rb +34 -0
- data/generated/google/apis/logging_v1beta3/classes.rb +1079 -0
- data/generated/google/apis/logging_v1beta3/representations.rb +366 -0
- data/generated/google/apis/logging_v1beta3/service.rb +1001 -0
- data/generated/google/apis/logging_v1beta3.rb +47 -0
- data/generated/google/apis/logging_v2beta1/classes.rb +990 -0
- data/generated/google/apis/logging_v2beta1/representations.rb +377 -0
- data/generated/google/apis/logging_v2beta1/service.rb +547 -0
- data/generated/google/apis/logging_v2beta1.rb +47 -0
- data/generated/google/apis/manager_v1beta2/classes.rb +1287 -0
- data/generated/google/apis/manager_v1beta2/representations.rb +606 -0
- data/generated/google/apis/manager_v1beta2/service.rb +372 -0
- data/generated/google/apis/manager_v1beta2.rb +53 -0
- data/generated/google/apis/mirror_v1/classes.rb +1072 -0
- data/generated/google/apis/mirror_v1/representations.rb +390 -0
- data/generated/google/apis/mirror_v1/service.rb +977 -0
- data/generated/google/apis/mirror_v1.rb +37 -0
- data/generated/google/apis/oauth2_v2/classes.rb +245 -0
- data/generated/google/apis/oauth2_v2/representations.rb +102 -0
- data/generated/google/apis/oauth2_v2/service.rb +199 -0
- data/generated/google/apis/oauth2_v2.rb +43 -0
- data/generated/google/apis/pagespeedonline_v2/classes.rb +614 -0
- data/generated/google/apis/pagespeedonline_v2/representations.rb +272 -0
- data/generated/google/apis/pagespeedonline_v2/service.rb +119 -0
- data/generated/google/apis/pagespeedonline_v2.rb +32 -0
- data/generated/google/apis/partners_v2/classes.rb +942 -0
- data/generated/google/apis/partners_v2/representations.rb +454 -0
- data/generated/google/apis/partners_v2/service.rb +400 -0
- data/generated/google/apis/partners_v2.rb +32 -0
- data/generated/google/apis/people_v1/classes.rb +1521 -0
- data/generated/google/apis/people_v1/representations.rb +663 -0
- data/generated/google/apis/people_v1/service.rb +189 -0
- data/generated/google/apis/people_v1.rb +59 -0
- data/generated/google/apis/plus_domains_v1/classes.rb +2609 -0
- data/generated/google/apis/plus_domains_v1/representations.rb +1111 -0
- data/generated/google/apis/plus_domains_v1/service.rb +904 -0
- data/generated/google/apis/plus_domains_v1.rb +61 -0
- data/generated/google/apis/plus_v1/classes.rb +2094 -0
- data/generated/google/apis/plus_v1/representations.rb +907 -0
- data/generated/google/apis/plus_v1/service.rb +470 -0
- data/generated/google/apis/plus_v1.rb +43 -0
- data/generated/google/apis/prediction_v1_6/classes.rb +751 -0
- data/generated/google/apis/prediction_v1_6/representations.rb +369 -0
- data/generated/google/apis/prediction_v1_6/service.rb +380 -0
- data/generated/google/apis/prediction_v1_6.rb +44 -0
- data/generated/google/apis/proximitybeacon_v1beta1/classes.rb +639 -0
- data/generated/google/apis/proximitybeacon_v1beta1/representations.rb +312 -0
- data/generated/google/apis/proximitybeacon_v1beta1/service.rb +591 -0
- data/generated/google/apis/proximitybeacon_v1beta1.rb +31 -0
- data/generated/google/apis/pubsub_v1/classes.rb +614 -0
- data/generated/google/apis/pubsub_v1/representations.rb +323 -0
- data/generated/google/apis/pubsub_v1/service.rb +774 -0
- data/generated/google/apis/pubsub_v1.rb +37 -0
- data/generated/google/apis/pubsub_v1beta2/classes.rb +620 -0
- data/generated/google/apis/pubsub_v1beta2/representations.rb +282 -0
- data/generated/google/apis/pubsub_v1beta2/service.rb +774 -0
- data/generated/google/apis/pubsub_v1beta2.rb +37 -0
- data/generated/google/apis/qpx_express_v1/classes.rb +1268 -0
- data/generated/google/apis/qpx_express_v1/representations.rb +472 -0
- data/generated/google/apis/qpx_express_v1/service.rb +100 -0
- data/generated/google/apis/qpx_express_v1.rb +31 -0
- data/generated/google/apis/replicapool_v1beta2/classes.rb +631 -0
- data/generated/google/apis/replicapool_v1beta2/representations.rb +264 -0
- data/generated/google/apis/replicapool_v1beta2/service.rb +608 -0
- data/generated/google/apis/replicapool_v1beta2.rb +44 -0
- data/generated/google/apis/replicapoolupdater_v1beta1/classes.rb +733 -0
- data/generated/google/apis/replicapoolupdater_v1beta1/representations.rb +294 -0
- data/generated/google/apis/replicapoolupdater_v1beta1/service.rb +508 -0
- data/generated/google/apis/replicapoolupdater_v1beta1.rb +44 -0
- data/generated/google/apis/reseller_v1/classes.rb +526 -0
- data/generated/google/apis/reseller_v1/representations.rb +223 -0
- data/generated/google/apis/reseller_v1/service.rb +623 -0
- data/generated/google/apis/reseller_v1.rb +37 -0
- data/generated/google/apis/resourceviews_v1beta2/classes.rb +660 -0
- data/generated/google/apis/resourceviews_v1beta2/representations.rb +301 -0
- data/generated/google/apis/resourceviews_v1beta2/service.rb +563 -0
- data/generated/google/apis/resourceviews_v1beta2.rb +50 -0
- data/generated/google/apis/script_v1/classes.rb +259 -0
- data/generated/google/apis/script_v1/representations.rb +118 -0
- data/generated/google/apis/script_v1/service.rb +98 -0
- data/generated/google/apis/script_v1.rb +61 -0
- data/generated/google/apis/site_verification_v1/classes.rb +185 -0
- data/generated/google/apis/site_verification_v1/representations.rb +113 -0
- data/generated/google/apis/site_verification_v1/service.rb +315 -0
- data/generated/google/apis/site_verification_v1.rb +37 -0
- data/generated/google/apis/sqladmin_v1beta4/classes.rb +2030 -0
- data/generated/google/apis/sqladmin_v1beta4/representations.rb +856 -0
- data/generated/google/apis/sqladmin_v1beta4/service.rb +1625 -0
- data/generated/google/apis/sqladmin_v1beta4.rb +37 -0
- data/generated/google/apis/storage_v1/classes.rb +1222 -0
- data/generated/google/apis/storage_v1/representations.rb +497 -0
- data/generated/google/apis/storage_v1/service.rb +1903 -0
- data/generated/google/apis/storage_v1.rb +46 -0
- data/generated/google/apis/storagetransfer_v1/classes.rb +1046 -0
- data/generated/google/apis/storagetransfer_v1/representations.rb +418 -0
- data/generated/google/apis/storagetransfer_v1/service.rb +473 -0
- data/generated/google/apis/storagetransfer_v1.rb +35 -0
- data/generated/google/apis/tagmanager_v1/classes.rb +1494 -0
- data/generated/google/apis/tagmanager_v1/representations.rb +611 -0
- data/generated/google/apis/tagmanager_v1/service.rb +2119 -0
- data/generated/google/apis/tagmanager_v1.rb +52 -0
- data/generated/google/apis/taskqueue_v1beta2/classes.rb +254 -0
- data/generated/google/apis/taskqueue_v1beta2/representations.rb +126 -0
- data/generated/google/apis/taskqueue_v1beta2/service.rb +408 -0
- data/generated/google/apis/taskqueue_v1beta2.rb +37 -0
- data/generated/google/apis/tasks_v1/classes.rb +296 -0
- data/generated/google/apis/tasks_v1/representations.rb +125 -0
- data/generated/google/apis/tasks_v1/service.rb +643 -0
- data/generated/google/apis/tasks_v1.rb +37 -0
- data/generated/google/apis/translate_v2/classes.rb +168 -0
- data/generated/google/apis/translate_v2/representations.rb +121 -0
- data/generated/google/apis/translate_v2/service.rb +182 -0
- data/generated/google/apis/translate_v2.rb +31 -0
- data/generated/google/apis/urlshortener_v1/classes.rb +246 -0
- data/generated/google/apis/urlshortener_v1/representations.rb +121 -0
- data/generated/google/apis/urlshortener_v1/service.rb +176 -0
- data/generated/google/apis/urlshortener_v1.rb +34 -0
- data/generated/google/apis/vision_v1/classes.rb +1259 -0
- data/generated/google/apis/vision_v1/representations.rb +418 -0
- data/generated/google/apis/vision_v1/service.rb +91 -0
- data/generated/google/apis/vision_v1.rb +37 -0
- data/generated/google/apis/webmasters_v3/classes.rb +563 -0
- data/generated/google/apis/webmasters_v3/representations.rb +282 -0
- data/generated/google/apis/webmasters_v3/service.rb +573 -0
- data/generated/google/apis/webmasters_v3.rb +37 -0
- data/generated/google/apis/youtube_analytics_v1/classes.rb +546 -0
- data/generated/google/apis/youtube_analytics_v1/representations.rb +273 -0
- data/generated/google/apis/youtube_analytics_v1/service.rb +562 -0
- data/generated/google/apis/youtube_analytics_v1.rb +46 -0
- data/generated/google/apis/youtube_v3/classes.rb +8071 -0
- data/generated/google/apis/youtube_v3/representations.rb +3134 -0
- data/generated/google/apis/youtube_v3/service.rb +4403 -0
- data/generated/google/apis/youtube_v3.rb +49 -0
- data/generated/google/apis/youtubereporting_v1/classes.rb +258 -0
- data/generated/google/apis/youtubereporting_v1/representations.rb +144 -0
- data/generated/google/apis/youtubereporting_v1/service.rb +364 -0
- data/generated/google/apis/youtubereporting_v1.rb +38 -0
- data/google-api-client.gemspec +25 -39
- data/lib/google/api_client/auth/installed_app.rb +7 -5
- data/lib/google/api_client/auth/key_utils.rb +1 -0
- data/lib/google/api_client/auth/storage.rb +4 -2
- data/lib/google/api_client/auth/storages/file_store.rb +2 -3
- data/lib/google/api_client/auth/storages/redis_store.rb +7 -2
- data/lib/google/api_client/client_secrets.rb +7 -9
- data/lib/google/apis/core/api_command.rb +136 -0
- data/lib/google/apis/core/base_service.rb +317 -0
- data/lib/google/apis/core/batch.rb +239 -0
- data/lib/google/apis/core/download.rb +94 -0
- data/lib/google/apis/core/hashable.rb +44 -0
- data/lib/google/apis/core/http_client_adapter.rb +82 -0
- data/lib/google/apis/core/http_command.rb +328 -0
- data/lib/google/apis/core/json_representation.rb +145 -0
- data/lib/google/{api_client/version.rb → apis/core/logging.rb} +12 -8
- data/lib/google/apis/core/multipart.rb +187 -0
- data/lib/google/apis/core/upload.rb +289 -0
- data/lib/google/{api_client → apis}/errors.rb +39 -28
- data/lib/google/apis/generator/annotator.rb +295 -0
- data/lib/google/apis/generator/helpers.rb +74 -0
- data/lib/google/apis/generator/model.rb +143 -0
- data/lib/google/apis/generator/template.rb +124 -0
- data/lib/google/apis/generator/templates/_class.tmpl +40 -0
- data/lib/google/apis/generator/templates/_method.tmpl +92 -0
- data/lib/google/apis/generator/templates/_representation.tmpl +51 -0
- data/lib/google/apis/generator/templates/_representation_stub.tmpl +17 -0
- data/lib/google/apis/generator/templates/_representation_type.tmpl +10 -0
- data/lib/google/{api_client/reference.rb → apis/generator/templates/classes.rb.tmpl} +11 -9
- data/lib/google/apis/generator/templates/module.rb.tmpl +40 -0
- data/lib/google/apis/generator/templates/representations.rb.tmpl +32 -0
- data/lib/google/apis/generator/templates/service.rb.tmpl +60 -0
- data/lib/google/apis/generator.rb +70 -0
- data/lib/google/apis/options.rb +85 -0
- data/lib/google/apis/version.rb +39 -0
- data/lib/google/apis.rb +48 -0
- data/rakelib/metrics.rake +22 -0
- data/rakelib/rubocop.rake +10 -0
- data/rakelib/spec.rake +11 -0
- data/rakelib/yard.rake +11 -0
- data/samples/cli/Gemfile +7 -0
- data/samples/cli/README.md +51 -0
- data/samples/cli/google-api-samples +32 -0
- data/samples/cli/lib/base_cli.rb +95 -0
- data/samples/cli/lib/samples/analytics.rb +62 -0
- data/samples/cli/lib/samples/androidpublisher.rb +47 -0
- data/samples/cli/lib/samples/calendar.rb +83 -0
- data/samples/cli/lib/samples/drive.rb +82 -0
- data/samples/cli/lib/samples/gmail.rb +50 -0
- data/samples/cli/lib/samples/pubsub.rb +114 -0
- data/samples/cli/lib/samples/translate.rb +44 -0
- data/samples/cli/lib/samples/you_tube.rb +44 -0
- data/samples/web/Gemfile +7 -0
- data/samples/web/README.md +44 -0
- data/samples/web/app.rb +120 -0
- data/samples/web/views/calendar.erb +34 -0
- data/{lib/google/api_client/service_account.rb → samples/web/views/drive.erb} +20 -8
- data/samples/web/views/home.erb +35 -0
- data/samples/web/views/layout.erb +40 -0
- data/script/generate +100 -0
- data/script/package +8 -0
- data/script/release +15 -0
- data/spec/fixtures/files/api_names.yaml +3 -0
- data/spec/fixtures/files/auth_stored_credentials.json +8 -0
- data/spec/fixtures/files/child/.gitignore +0 -0
- data/spec/fixtures/files/client_secrets.json +1 -0
- data/spec/fixtures/files/invalid.json +1 -0
- data/spec/fixtures/files/test.blah +1 -0
- data/spec/fixtures/files/test.txt +1 -0
- data/spec/fixtures/files/test_api.json +440 -0
- data/spec/google/api_client/auth/storage_spec.rb +1 -3
- data/spec/google/api_client/auth/storages/file_store_spec.rb +1 -2
- data/spec/google/api_client/auth/storages/redis_store_spec.rb +1 -3
- data/spec/google/api_client/client_secrets_spec.rb +338 -2
- data/spec/google/apis/core/api_command_spec.rb +209 -0
- data/spec/google/apis/core/batch_spec.rb +142 -0
- data/spec/google/apis/core/download_spec.rb +103 -0
- data/spec/google/apis/core/hashable_spec.rb +60 -0
- data/spec/google/apis/core/http_command_spec.rb +303 -0
- data/spec/google/apis/core/json_representation_spec.rb +199 -0
- data/spec/google/apis/core/service_spec.rb +247 -0
- data/spec/google/apis/core/upload_spec.rb +300 -0
- data/{lib/google/api_client/discovery.rb → spec/google/apis/generated_spec.rb} +13 -5
- data/spec/google/apis/generator/generator_spec.rb +324 -0
- data/spec/google/apis/logging_spec.rb +45 -0
- data/spec/google/apis/options_spec.rb +40 -0
- data/spec/integration_tests/adsense_spec.rb +29 -0
- data/spec/integration_tests/drive_spec.rb +35 -0
- data/spec/integration_tests/pubsub_spec.rb +48 -0
- data/spec/integration_tests/url_shortener_spec.rb +45 -0
- data/spec/spec_helper/load_path_spec.rb +33 -0
- data/spec/spec_helper.rb +131 -44
- data/third_party/hurley_patches.rb +103 -0
- metadata +563 -188
- data/lib/compat/multi_json.rb +0 -19
- data/lib/google/api_client/auth/file_storage.rb +0 -59
- data/lib/google/api_client/auth/jwt_asserter.rb +0 -126
- data/lib/google/api_client/auth/pkcs12.rb +0 -41
- data/lib/google/api_client/batch.rb +0 -326
- data/lib/google/api_client/charset.rb +0 -33
- data/lib/google/api_client/discovery/api.rb +0 -310
- data/lib/google/api_client/discovery/media.rb +0 -77
- data/lib/google/api_client/discovery/method.rb +0 -363
- data/lib/google/api_client/discovery/resource.rb +0 -156
- data/lib/google/api_client/discovery/schema.rb +0 -117
- data/lib/google/api_client/environment.rb +0 -42
- data/lib/google/api_client/gzip.rb +0 -28
- data/lib/google/api_client/logging.rb +0 -32
- data/lib/google/api_client/media.rb +0 -259
- data/lib/google/api_client/railtie.rb +0 -18
- data/lib/google/api_client/request.rb +0 -350
- data/lib/google/api_client/result.rb +0 -255
- data/lib/google/api_client/service/batch.rb +0 -110
- data/lib/google/api_client/service/request.rb +0 -144
- data/lib/google/api_client/service/resource.rb +0 -40
- data/lib/google/api_client/service/result.rb +0 -162
- data/lib/google/api_client/service/simple_file_store.rb +0 -151
- data/lib/google/api_client/service/stub_generator.rb +0 -61
- data/lib/google/api_client/service.rb +0 -233
- data/lib/google/api_client.rb +0 -750
- data/spec/google/api_client/batch_spec.rb +0 -248
- data/spec/google/api_client/discovery_spec.rb +0 -708
- data/spec/google/api_client/gzip_spec.rb +0 -98
- data/spec/google/api_client/media_spec.rb +0 -178
- data/spec/google/api_client/result_spec.rb +0 -207
- data/spec/google/api_client/service_account_spec.rb +0 -169
- data/spec/google/api_client/service_spec.rb +0 -618
- data/spec/google/api_client/simple_file_store_spec.rb +0 -133
- data/spec/google/api_client_spec.rb +0 -352
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Copyright 2016 Google Inc.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
require 'google/apis/calendar_v3'
|
|
16
|
+
require 'base_cli'
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
module Samples
|
|
20
|
+
# Examples for the Google Calendar API
|
|
21
|
+
#
|
|
22
|
+
# Sample usage:
|
|
23
|
+
#
|
|
24
|
+
# $ ./google-api-samples calendar list --limit 10
|
|
25
|
+
class Calendar < BaseCli
|
|
26
|
+
Calendar = Google::Apis::CalendarV3
|
|
27
|
+
|
|
28
|
+
desc 'schedule', 'Create an event'
|
|
29
|
+
method_option :summary, type: :string, required: true
|
|
30
|
+
method_option :start, type: :string, required: true
|
|
31
|
+
method_option :end , type: :string, required: true
|
|
32
|
+
method_option :attendees, type: :array
|
|
33
|
+
def schedule
|
|
34
|
+
calendar = Calendar::CalendarService.new
|
|
35
|
+
calendar.authorization = user_credentials_for(Calendar::AUTH_CALENDAR)
|
|
36
|
+
|
|
37
|
+
event = {
|
|
38
|
+
summary: options[:summary],
|
|
39
|
+
attendees: Array(options[:attenddes]).map { |email| { email: email } },
|
|
40
|
+
start: {
|
|
41
|
+
date_time: DateTime.parse(options[:start])
|
|
42
|
+
},
|
|
43
|
+
end: {
|
|
44
|
+
date_time: DateTime.parse(options[:end])
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
event = calendar.insert_event('primary', event, send_notifications: true)
|
|
49
|
+
say "Created event '#{event.summary}' (#{event.id})"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
desc 'list', 'List upcoming events'
|
|
53
|
+
method_option :limit, type: :numeric
|
|
54
|
+
def list()
|
|
55
|
+
calendar = Calendar::CalendarService.new
|
|
56
|
+
calendar.authorization = user_credentials_for(Calendar::AUTH_CALENDAR)
|
|
57
|
+
|
|
58
|
+
page_token = nil
|
|
59
|
+
limit = options[:limit] || 1000
|
|
60
|
+
now = Time.now.iso8601
|
|
61
|
+
begin
|
|
62
|
+
result = calendar.list_events('primary',
|
|
63
|
+
max_results: [limit, 100].min,
|
|
64
|
+
single_events: true,
|
|
65
|
+
order_by: 'startTime',
|
|
66
|
+
time_min: now,
|
|
67
|
+
page_token: page_token,
|
|
68
|
+
fields: 'items(id,summary,start),next_page_token')
|
|
69
|
+
|
|
70
|
+
result.items.each do |event|
|
|
71
|
+
time = event.start.date_time || event.start.date
|
|
72
|
+
say "#{time}, #{event.summary}"
|
|
73
|
+
end
|
|
74
|
+
limit -= result.items.length
|
|
75
|
+
if result.next_page_token
|
|
76
|
+
page_token = result.next_page_token
|
|
77
|
+
else
|
|
78
|
+
page_token = nil
|
|
79
|
+
end
|
|
80
|
+
end while !page_token.nil? && limit > 0
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Copyright 2016 Google Inc.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
require 'google/apis/drive_v3'
|
|
16
|
+
require 'base_cli'
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
module Samples
|
|
20
|
+
# Examples for the Google Drive API
|
|
21
|
+
#
|
|
22
|
+
# Sample usage:
|
|
23
|
+
#
|
|
24
|
+
# $ ./google-api-samples drive upload ~/myvideo.mov
|
|
25
|
+
class Drive < BaseCli
|
|
26
|
+
Drive = Google::Apis::DriveV3
|
|
27
|
+
|
|
28
|
+
desc 'upload FILE', 'Upload a file to Google Drive'
|
|
29
|
+
method_option :name, type: :string
|
|
30
|
+
def upload(file)
|
|
31
|
+
drive = Drive::DriveService.new
|
|
32
|
+
drive.authorization = user_credentials_for(Drive::AUTH_DRIVE)
|
|
33
|
+
|
|
34
|
+
metadata = {
|
|
35
|
+
name: options[:name] || file
|
|
36
|
+
}
|
|
37
|
+
result = drive.create_file(metadata, upload_source: file)
|
|
38
|
+
say "Upload complete"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
desc 'download FILE_ID', 'Download a file from Google Drive'
|
|
42
|
+
method_option :out, type: :string
|
|
43
|
+
def download(file_id)
|
|
44
|
+
drive = Drive::DriveService.new
|
|
45
|
+
drive.authorization = user_credentials_for(Drive::AUTH_DRIVE)
|
|
46
|
+
|
|
47
|
+
dest = options[:out] || StringIO.new
|
|
48
|
+
drive.get_file(file_id, download_dest: dest)
|
|
49
|
+
|
|
50
|
+
if dest.is_a?(StringIO)
|
|
51
|
+
dest.rewind
|
|
52
|
+
STDOUT.write(dest.read)
|
|
53
|
+
else
|
|
54
|
+
say "File downloaded to #{options[:out]}"
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
desc 'list QUERY', 'Search for files'
|
|
59
|
+
method_option :limit, type: :numeric
|
|
60
|
+
def list(query)
|
|
61
|
+
drive = Drive::DriveService.new
|
|
62
|
+
drive.authorization = user_credentials_for(Drive::AUTH_DRIVE)
|
|
63
|
+
|
|
64
|
+
page_token = nil
|
|
65
|
+
limit = options[:limit] || 1000
|
|
66
|
+
begin
|
|
67
|
+
result = drive.list_files(q: query,
|
|
68
|
+
page_size: [limit, 100].min,
|
|
69
|
+
page_token: page_token,
|
|
70
|
+
fields: 'files(id,name),next_page_token')
|
|
71
|
+
|
|
72
|
+
result.files.each { |file| puts "#{file.id}, #{file.name}" }
|
|
73
|
+
limit -= result.files.length
|
|
74
|
+
if result.next_page_token
|
|
75
|
+
page_token = result.next_page_token
|
|
76
|
+
else
|
|
77
|
+
page_token = nil
|
|
78
|
+
end
|
|
79
|
+
end while !page_token.nil? && limit > 0
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Copyright 2016 Google Inc.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
require 'google/apis/gmail_v1'
|
|
16
|
+
require 'base_cli'
|
|
17
|
+
require 'rmail'
|
|
18
|
+
|
|
19
|
+
module Samples
|
|
20
|
+
# Examples for the Gmail API
|
|
21
|
+
#
|
|
22
|
+
# Sample usage:
|
|
23
|
+
#
|
|
24
|
+
# $ ./google-api-samples gmail send 'Hello there!' \
|
|
25
|
+
# --to='recipient@example.com' --from='user@example.com' \
|
|
26
|
+
# --subject='Hello'
|
|
27
|
+
#
|
|
28
|
+
class Gmail < BaseCli
|
|
29
|
+
Gmail = Google::Apis::GmailV1
|
|
30
|
+
|
|
31
|
+
desc 'send TEXT', 'Send a message with the gmail API'
|
|
32
|
+
method_option :to, type: :string, required: true
|
|
33
|
+
method_option :from, type: :string, required: true
|
|
34
|
+
method_option :subject, type: :string, required: true
|
|
35
|
+
def send(body)
|
|
36
|
+
gmail = Gmail::GmailService.new
|
|
37
|
+
gmail.authorization = user_credentials_for(Gmail::AUTH_SCOPE)
|
|
38
|
+
|
|
39
|
+
message = RMail::Message.new
|
|
40
|
+
message.header['To'] = options[:to]
|
|
41
|
+
message.header['From'] = options[:from]
|
|
42
|
+
message.header['Subject'] = options[:subject]
|
|
43
|
+
message.body = body
|
|
44
|
+
|
|
45
|
+
gmail.send_user_message('me',
|
|
46
|
+
upload_source: StringIO.new(message.to_s),
|
|
47
|
+
content_type: 'message/rfc822')
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Copyright 2016 Google Inc.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
require 'google/apis/pubsub_v1'
|
|
16
|
+
require 'base_cli'
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
module Samples
|
|
20
|
+
# Examples for the Google Cloud Pub/Sub API.
|
|
21
|
+
#
|
|
22
|
+
# Sample usage session:
|
|
23
|
+
#
|
|
24
|
+
# $ ./google-api-samples pubsub create_topic mytopic --project=623040240964
|
|
25
|
+
# # ./google-api-samples pubsub subscribe mysub --topic=mytopic --project=623040240964
|
|
26
|
+
# $ ./google-api-samples pubsub publish 'Hello!' --topic=mytopic --project=623040240964
|
|
27
|
+
# $ ./google-api-samples pubsub pull mysub --project=623040240964
|
|
28
|
+
# Received: Hello!
|
|
29
|
+
# $ ./google-api-samples pubsub unsubscribe mysub --project=623040240964
|
|
30
|
+
# $ ./google-api-samples pubsub delete_topic mytopic --project=623040240964
|
|
31
|
+
#
|
|
32
|
+
class PubSub < BaseCli
|
|
33
|
+
Pubsub = Google::Apis::PubsubV1
|
|
34
|
+
|
|
35
|
+
desc 'create_topic TOPIC_NAME', 'Create a topic'
|
|
36
|
+
method_option :project, type: :string, required: true
|
|
37
|
+
def create_topic(name)
|
|
38
|
+
pubsub = Pubsub::PubsubService.new
|
|
39
|
+
pubsub.authorization = Google::Auth.get_application_default([Pubsub::AUTH_PUBSUB])
|
|
40
|
+
topic = "projects/#{options[:project]}/topics/#{name}"
|
|
41
|
+
|
|
42
|
+
pubsub.create_topic(topic)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
desc 'delete_topic TOPIC_NAME', 'Delete a topic'
|
|
46
|
+
method_option :project, type: :string, required: true
|
|
47
|
+
def delete_topic(name)
|
|
48
|
+
pubsub = Pubsub::PubsubService.new
|
|
49
|
+
pubsub.authorization = Google::Auth.get_application_default([Pubsub::AUTH_PUBSUB])
|
|
50
|
+
|
|
51
|
+
topic = "projects/#{options[:project]}/topics/#{name}"
|
|
52
|
+
|
|
53
|
+
pubsub.delete_topic(topic)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
desc 'subscribe SUBSCRIPTION_NAME', 'Subscribe to a topic'
|
|
57
|
+
method_option :project, type: :string, required: true
|
|
58
|
+
method_option :topic, type: :string, required: true
|
|
59
|
+
def subscribe(name)
|
|
60
|
+
pubsub = Pubsub::PubsubService.new
|
|
61
|
+
pubsub.authorization = Google::Auth.get_application_default([Pubsub::AUTH_PUBSUB])
|
|
62
|
+
|
|
63
|
+
topic = "projects/#{options[:project]}/topics/#{options[:topic]}"
|
|
64
|
+
subscription = "projects/#{options[:project]}/subscriptions/#{name}"
|
|
65
|
+
pubsub.create_subscription(subscription, Pubsub::Subscription.new(topic: topic))
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
desc 'unsubscribe subscription_name', 'Ububscribe from a topic'
|
|
69
|
+
method_option :project, type: :string, required: true
|
|
70
|
+
def unsubscribe(name)
|
|
71
|
+
pubsub = Pubsub::PubsubService.new
|
|
72
|
+
pubsub.authorization = Google::Auth.get_application_default([Pubsub::AUTH_PUBSUB])
|
|
73
|
+
|
|
74
|
+
subscription = "projects/#{options[:project]}/subscriptions/#{name}"
|
|
75
|
+
pubsub.delete_subscription(subscription)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
desc 'publish MESSAGE', 'Publish a message to a topic'
|
|
80
|
+
method_option :project, type: :string, required: true
|
|
81
|
+
method_option :topic, type: :string, required: true
|
|
82
|
+
def publish(message)
|
|
83
|
+
pubsub = Pubsub::PubsubService.new
|
|
84
|
+
pubsub.authorization = Google::Auth.get_application_default([Pubsub::AUTH_PUBSUB])
|
|
85
|
+
topic = "projects/#{options[:project]}/topics/#{options[:topic]}"
|
|
86
|
+
|
|
87
|
+
request = Pubsub::PublishRequest.new(messages: [])
|
|
88
|
+
request.messages << Pubsub::Message.new(data: message)
|
|
89
|
+
|
|
90
|
+
pubsub.publish_topic(topic, request)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
desc 'pull SUBSCRIPTION_NAME', 'Pull message(s) from the topic'
|
|
94
|
+
method_option :project, type: :string, required: true
|
|
95
|
+
method_option :max, type: :numeric, default: 5
|
|
96
|
+
def pull(name)
|
|
97
|
+
pubsub = Pubsub::PubsubService.new
|
|
98
|
+
pubsub.authorization = Google::Auth.get_application_default([Pubsub::AUTH_PUBSUB])
|
|
99
|
+
|
|
100
|
+
subscription = "projects/#{options[:project]}/subscriptions/#{name}"
|
|
101
|
+
|
|
102
|
+
# Pull messages
|
|
103
|
+
response = pubsub.pull_subscription(subscription, Pubsub::PullRequest.new(max_messages: options[:max]))
|
|
104
|
+
response.received_messages.each do |received_message|
|
|
105
|
+
data = received_message.message.data
|
|
106
|
+
puts "Received: #{data}"
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# Acknowledge receipt
|
|
110
|
+
ack_ids = response.received_messages.map{ |msg| msg.ack_id }
|
|
111
|
+
pubsub.acknowledge_subscription(subscription, Pubsub::AcknowledgeRequest.new(ack_ids: ack_ids))
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Copyright 2016 Google Inc.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
require 'google/apis/translate_v2'
|
|
16
|
+
require 'base_cli'
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
module Samples
|
|
20
|
+
# Examples for the Google Translate API
|
|
21
|
+
#
|
|
22
|
+
# Sample usage:
|
|
23
|
+
#
|
|
24
|
+
# $ ./google-api-samples translate 'Hola!' --target='en'
|
|
25
|
+
# Hello
|
|
26
|
+
#
|
|
27
|
+
class Translate < BaseCli
|
|
28
|
+
Translate = Google::Apis::TranslateV2
|
|
29
|
+
|
|
30
|
+
desc 'translate PHRASE', 'Translate a phrase'
|
|
31
|
+
method_option :source, type: :string
|
|
32
|
+
method_option :target, type: :string, required: true
|
|
33
|
+
def translate(phrase)
|
|
34
|
+
translate = Translate::TranslateService.new
|
|
35
|
+
translate.key = api_key
|
|
36
|
+
|
|
37
|
+
result = translate.list_translations(phrase, options[:target], source: options[:source])
|
|
38
|
+
puts result.translations.first.translated_text
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
default_task :translate
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Copyright 2016 Google Inc.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
require 'google/apis/youtube_v3'
|
|
16
|
+
require 'base_cli'
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
module Samples
|
|
20
|
+
# Examples for the YouTube APIs
|
|
21
|
+
#
|
|
22
|
+
# Sample usage:
|
|
23
|
+
#
|
|
24
|
+
# $ ./google-api-samples youtube upload ~/myvideo.mov --title="So funny!"
|
|
25
|
+
#
|
|
26
|
+
class YouTube < BaseCli
|
|
27
|
+
YT = Google::Apis::YoutubeV3
|
|
28
|
+
|
|
29
|
+
desc 'upload FILE', 'Upload a video to YouTube'
|
|
30
|
+
method_option :title, type: :string
|
|
31
|
+
def upload(file)
|
|
32
|
+
youtube = YT::YouTubeService.new
|
|
33
|
+
youtube.authorization = user_credentials_for(YT::AUTH_YOUTUBE)
|
|
34
|
+
|
|
35
|
+
metadata = {
|
|
36
|
+
snippet: {
|
|
37
|
+
title: options[:title] || file
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
result = youtube.insert_video('snippet', metadata, upload_source: file)
|
|
41
|
+
say "Upload complete"
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
data/samples/web/Gemfile
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# API Samples
|
|
2
|
+
|
|
3
|
+
This directory contains a simple Sinatra web app illustrating how to use the client
|
|
4
|
+
in a server-side web environment.
|
|
5
|
+
|
|
6
|
+
It illustrates a few key concepts:
|
|
7
|
+
|
|
8
|
+
* Using [Google Sign-in](https://developers.google.com/identity) for authentication.
|
|
9
|
+
* Using the [googleauth gem](https://github.com/google/google-auth-library-ruby) to
|
|
10
|
+
request incremental authorization as more permissions are needed.
|
|
11
|
+
|
|
12
|
+
# Setup
|
|
13
|
+
|
|
14
|
+
* Create a project at https://console.developers.google.com
|
|
15
|
+
* Go to the `API Manager` and enable the `Drive` and `Calendar` APIs
|
|
16
|
+
* Go to `Credentials` and create a new OAuth Client ID of type 'Web application'
|
|
17
|
+
* Use `http://localhost:4567/oauth2callback` as the redirect URL
|
|
18
|
+
* Use `http://localhost:4567` as the JavaScript origin
|
|
19
|
+
|
|
20
|
+
Additional details on how to enable APIs and create credentials can be
|
|
21
|
+
found in the help guide in the console.
|
|
22
|
+
|
|
23
|
+
## Example Environment Settings
|
|
24
|
+
|
|
25
|
+
For convenience, application credentials can be read from the shell environment
|
|
26
|
+
or placed in a .env file.
|
|
27
|
+
|
|
28
|
+
After setup, your .env file might look something like:
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
GOOGLE_CLIENT_ID=479164972499-i7j6av7bp2s4on5ltb7pjXXXXXXXXXX.apps.googleusercontent.com
|
|
32
|
+
GOOGLE_CLIENT_SECRET=JBotCTG5biFWGzXXXXXXXXXX
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
# Running the samples
|
|
36
|
+
|
|
37
|
+
To start the server, run
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
ruby app.rb
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Open `http://localhost:4567/` in your browser to explore the sample.
|
|
44
|
+
|
data/samples/web/app.rb
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Copyright 2015 Google Inc.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
require 'sinatra'
|
|
16
|
+
require 'googleauth'
|
|
17
|
+
require 'googleauth/stores/redis_token_store'
|
|
18
|
+
require 'google/apis/drive_v3'
|
|
19
|
+
require 'google/apis/calendar_v3'
|
|
20
|
+
require 'google-id-token'
|
|
21
|
+
require 'dotenv'
|
|
22
|
+
|
|
23
|
+
LOGIN_URL = '/'
|
|
24
|
+
|
|
25
|
+
configure do
|
|
26
|
+
Dotenv.load
|
|
27
|
+
|
|
28
|
+
Google::Apis::ClientOptions.default.application_name = 'Ruby client samples'
|
|
29
|
+
Google::Apis::ClientOptions.default.application_version = '0.9'
|
|
30
|
+
Google::Apis::RequestOptions.default.retries = 3
|
|
31
|
+
|
|
32
|
+
enable :sessions
|
|
33
|
+
set :show_exceptions, false
|
|
34
|
+
set :client_id, Google::Auth::ClientId.new(ENV['GOOGLE_CLIENT_ID'],
|
|
35
|
+
ENV['GOOGLE_CLIENT_SECRET'])
|
|
36
|
+
set :token_store, Google::Auth::Stores::RedisTokenStore.new(redis: Redis.new)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
helpers do
|
|
40
|
+
# Returns credentials authorized for the requested scopes. If no credentials are available,
|
|
41
|
+
# redirects the user to authorize access.
|
|
42
|
+
def credentials_for(scope)
|
|
43
|
+
authorizer = Google::Auth::WebUserAuthorizer.new(settings.client_id, scope, settings.token_store)
|
|
44
|
+
user_id = session[:user_id]
|
|
45
|
+
redirect LOGIN_URL if user_id.nil?
|
|
46
|
+
credentials = authorizer.get_credentials(user_id, request)
|
|
47
|
+
if credentials.nil?
|
|
48
|
+
redirect authorizer.get_authorization_url(login_hint: user_id, request: request)
|
|
49
|
+
end
|
|
50
|
+
credentials
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def resize(url, width)
|
|
54
|
+
url.sub(/s220/, sprintf('s%d', width))
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Home page
|
|
59
|
+
get('/') do
|
|
60
|
+
@client_id = settings.client_id.id
|
|
61
|
+
erb :home
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Log in the user by validating the identity token generated by the Google Sign-In button.
|
|
65
|
+
# This checks that the token is signed by Google, current, and is intended for this application.
|
|
66
|
+
#
|
|
67
|
+
post('/signin') do
|
|
68
|
+
audience = settings.client_id.id
|
|
69
|
+
# Important: The google-id-token gem is not production ready. If using, consider fetching and
|
|
70
|
+
# supplying the valid keys separately rather than using the built-in certificate fetcher.
|
|
71
|
+
validator = GoogleIDToken::Validator.new
|
|
72
|
+
claim = validator.check(params['id_token'], audience, audience)
|
|
73
|
+
if claim
|
|
74
|
+
session[:user_id] = claim['sub']
|
|
75
|
+
session[:user_email] = claim['email']
|
|
76
|
+
200
|
|
77
|
+
else
|
|
78
|
+
logger.info('No valid identity token present')
|
|
79
|
+
401
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Retrieve the 10 most recently modified files in Google Drive
|
|
84
|
+
get('/drive') do
|
|
85
|
+
drive = Google::Apis::DriveV3::DriveService.new
|
|
86
|
+
drive.authorization = credentials_for(Google::Apis::DriveV3::AUTH_DRIVE)
|
|
87
|
+
@result = drive.list_files(page_size: 10,
|
|
88
|
+
fields: 'files(name,modified_time,web_view_link),next_page_token')
|
|
89
|
+
erb :drive
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Retrieve the next 10 upcoming events from Google Calendar
|
|
93
|
+
get('/calendar') do
|
|
94
|
+
calendar = Google::Apis::CalendarV3::CalendarService.new
|
|
95
|
+
calendar.authorization = credentials_for(Google::Apis::CalendarV3::AUTH_CALENDAR)
|
|
96
|
+
calendar_id = 'primary'
|
|
97
|
+
@result = calendar.list_events(calendar_id,
|
|
98
|
+
max_results: 10,
|
|
99
|
+
single_events: true,
|
|
100
|
+
order_by: 'startTime',
|
|
101
|
+
time_min: Time.now.iso8601)
|
|
102
|
+
erb :calendar
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
# Callback for authorization requests. This saves the autorization code and
|
|
107
|
+
# redirects back to the URL that originally requested authorization. The code is
|
|
108
|
+
# redeemed on the next request.
|
|
109
|
+
#
|
|
110
|
+
# Important: While the deferred approach is generally easier, it doesn't play well
|
|
111
|
+
# with developer mode and sinatra's default cookie-based session implementation. Changes to the
|
|
112
|
+
# session state are lost if the page doesn't render due to error, which can lead to further
|
|
113
|
+
# errors indicating the code has already been redeemed.
|
|
114
|
+
#
|
|
115
|
+
# Disabling show_exceptions or using a different session provider (E.g. Rack::Session::Memcache)
|
|
116
|
+
# avoids the issue.
|
|
117
|
+
get('/oauth2callback') do
|
|
118
|
+
target_url = Google::Auth::WebUserAuthorizer.handle_auth_callback_deferred(request)
|
|
119
|
+
redirect target_url
|
|
120
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<%#
|
|
2
|
+
# Copyright 2016 Google Inc.
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
%>
|
|
16
|
+
<section>
|
|
17
|
+
<h5>Next 10 events</h5>
|
|
18
|
+
<table class="">
|
|
19
|
+
<thead>
|
|
20
|
+
<tr>
|
|
21
|
+
<th class="">Time</th>
|
|
22
|
+
<th class="">Summary</th>
|
|
23
|
+
</tr>
|
|
24
|
+
</thead>
|
|
25
|
+
<tbody>
|
|
26
|
+
<% @result.items.each do |event| %>
|
|
27
|
+
<tr>
|
|
28
|
+
<td class=""><%= event.start.date_time || event.start.date %></td>
|
|
29
|
+
<td class=""><%= event.summary %></td>
|
|
30
|
+
</tr>
|
|
31
|
+
<% end %>
|
|
32
|
+
</tbody>
|
|
33
|
+
</table>
|
|
34
|
+
</section>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
<%#
|
|
2
|
+
# Copyright 2016 Google Inc.
|
|
2
3
|
#
|
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
5
|
# you may not use this file except in compliance with the License.
|
|
@@ -11,11 +12,22 @@
|
|
|
11
12
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
13
|
# See the License for the specific language governing permissions and
|
|
13
14
|
# limitations under the License.
|
|
15
|
+
%>
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
<h5>10 most recently modified files</h5>
|
|
18
|
+
<table class="">
|
|
19
|
+
<thead>
|
|
20
|
+
<tr>
|
|
21
|
+
<th class="">Name</th>
|
|
22
|
+
<th class="">Last Modified</th>
|
|
23
|
+
</tr>
|
|
24
|
+
</thead>
|
|
25
|
+
<tbody>
|
|
26
|
+
<% @result.files.each do |file| %>
|
|
27
|
+
<tr>
|
|
28
|
+
<td class=""><a href="<%= file.web_view_link %>"><%= file.name %></a></td>
|
|
29
|
+
<td class=""><%= file.modified_time %></td>
|
|
30
|
+
</tr>
|
|
31
|
+
<% end %>
|
|
32
|
+
</tbody>
|
|
33
|
+
</table>
|