google-api-client 0.8.3 → 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.
- 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 +22 -0
- data/.yardopts +12 -0
- data/CHANGELOG.md +52 -2
- data/CONTRIBUTING.md +31 -0
- data/Gemfile +35 -1
- data/MIGRATING.md +171 -0
- data/README.md +181 -148
- data/Rakefile +1 -40
- data/api_names.yaml +1036 -0
- data/api_names_out.yaml +26053 -0
- data/bin/generate-api +95 -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/adexchangeseller_v2_0/classes.rb +792 -0
- data/generated/google/apis/adexchangeseller_v2_0/representations.rb +309 -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 +118 -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 +1029 -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 +231 -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 +1285 -0
- data/generated/google/apis/adsense_v1_4/representations.rb +494 -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 +834 -0
- data/generated/google/apis/adsensehost_v4_1/representations.rb +327 -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 +1662 -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 +538 -0
- data/generated/google/apis/androidenterprise_v1/service.rb +2602 -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 +646 -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 +1532 -0
- data/generated/google/apis/appengine_v1beta4/representations.rb +526 -0
- data/generated/google/apis/appengine_v1beta4/service.rb +476 -0
- data/generated/google/apis/appengine_v1beta4.rb +35 -0
- data/generated/google/apis/appsactivity_v1/classes.rb +392 -0
- data/generated/google/apis/appsactivity_v1/representations.rb +184 -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 +79 -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 +281 -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 +2471 -0
- data/generated/google/apis/bigquery_v2/representations.rb +816 -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 +562 -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 +3956 -0
- data/generated/google/apis/books_v1/representations.rb +1538 -0
- data/generated/google/apis/books_v1/service.rb +2290 -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 +567 -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 +383 -0
- data/generated/google/apis/civicinfo_v2/service.rb +279 -0
- data/{lib/google/api_client/service_account.rb → generated/google/apis/civicinfo_v2.rb} +18 -8
- data/generated/google/apis/classroom_v1/classes.rb +512 -0
- data/generated/google/apis/classroom_v1/representations.rb +217 -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 +79 -0
- data/generated/google/apis/cloudbilling_v1/service.rb +258 -0
- data/generated/google/apis/cloudbilling_v1.rb +35 -0
- data/generated/google/apis/clouddebugger_v2/classes.rb +1004 -0
- data/generated/google/apis/clouddebugger_v2/representations.rb +410 -0
- data/generated/google/apis/clouddebugger_v2/service.rb +370 -0
- data/generated/google/apis/clouddebugger_v2.rb +41 -0
- data/generated/google/apis/cloudmonitoring_v2beta2/classes.rb +679 -0
- data/generated/google/apis/cloudmonitoring_v2beta2/representations.rb +311 -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 +437 -0
- data/generated/google/apis/cloudresourcemanager_v1beta1/representations.rb +188 -0
- data/generated/google/apis/cloudresourcemanager_v1beta1/service.rb +623 -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 +92 -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 +313 -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 +9128 -0
- data/generated/google/apis/compute_beta/representations.rb +3048 -0
- data/generated/google/apis/compute_beta/service.rb +10154 -0
- data/generated/google/apis/compute_beta.rb +49 -0
- data/generated/google/apis/compute_v1/classes.rb +8681 -0
- data/generated/google/apis/compute_v1/representations.rb +2895 -0
- data/generated/google/apis/compute_v1/service.rb +9252 -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 +175 -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 +5986 -0
- data/generated/google/apis/content_v2/representations.rb +2288 -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 +285 -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 +276 -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/datastore_v1beta2/classes.rb +1186 -0
- data/generated/google/apis/datastore_v1beta2/representations.rb +526 -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 +1091 -0
- data/generated/google/apis/deploymentmanager_v2/representations.rb +422 -0
- data/generated/google/apis/deploymentmanager_v2/service.rb +857 -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/discovery_v1/classes.rb +961 -0
- data/generated/google/apis/discovery_v1/representations.rb +357 -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 +151 -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 +716 -0
- data/generated/google/apis/doubleclickbidmanager_v1/representations.rb +298 -0
- data/generated/google/apis/doubleclickbidmanager_v1/service.rb +341 -0
- data/generated/google/apis/doubleclickbidmanager_v1.rb +31 -0
- data/generated/google/apis/doubleclicksearch_v2/classes.rb +956 -0
- data/generated/google/apis/doubleclicksearch_v2/representations.rb +316 -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 +2562 -0
- data/generated/google/apis/drive_v2/representations.rb +795 -0
- data/generated/google/apis/drive_v2/service.rb +2696 -0
- data/generated/google/apis/drive_v2.rb +58 -0
- data/generated/google/apis/drive_v3/classes.rb +1534 -0
- data/generated/google/apis/drive_v3/representations.rb +497 -0
- data/generated/google/apis/drive_v3/service.rb +1541 -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 +320 -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 +409 -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 +206 -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 +524 -0
- data/generated/google/apis/games_management_v1management/representations.rb +231 -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 +4617 -0
- data/generated/google/apis/games_v1/representations.rb +1584 -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 +428 -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 +909 -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 +339 -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 +38 -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 +64 -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 +1466 -0
- data/generated/google/apis/identitytoolkit_v3/representations.rb +509 -0
- data/generated/google/apis/identitytoolkit_v3/service.rb +581 -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 +39 -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 +68 -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/manager_v1beta2/classes.rb +1287 -0
- data/generated/google/apis/manager_v1beta2/representations.rb +536 -0
- data/generated/google/apis/manager_v1beta2/service.rb +372 -0
- data/generated/google/apis/manager_v1beta2.rb +53 -0
- data/generated/google/apis/mapsengine_v1/classes.rb +2873 -0
- data/generated/google/apis/mapsengine_v1/representations.rb +1235 -0
- data/generated/google/apis/mapsengine_v1/service.rb +3388 -0
- data/generated/google/apis/mapsengine_v1.rb +38 -0
- data/generated/google/apis/mirror_v1/classes.rb +1072 -0
- data/generated/google/apis/mirror_v1/representations.rb +350 -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 +94 -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 +244 -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 +402 -0
- data/generated/google/apis/partners_v2/service.rb +400 -0
- data/generated/google/apis/partners_v2.rb +32 -0
- data/generated/google/apis/plus_domains_v1/classes.rb +2609 -0
- data/generated/google/apis/plus_domains_v1/representations.rb +987 -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 +805 -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 +327 -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 +274 -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 +281 -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 +424 -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 +236 -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 +264 -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 +520 -0
- data/generated/google/apis/reseller_v1/representations.rb +200 -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 +269 -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 +106 -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 +101 -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 +2001 -0
- data/generated/google/apis/sqladmin_v1beta4/representations.rb +758 -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 +445 -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 +370 -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 +1384 -0
- data/generated/google/apis/tagmanager_v1/representations.rb +515 -0
- data/generated/google/apis/tagmanager_v1/service.rb +1817 -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 +114 -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 +115 -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 +109 -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 +111 -0
- data/generated/google/apis/urlshortener_v1/service.rb +176 -0
- data/generated/google/apis/urlshortener_v1.rb +34 -0
- data/generated/google/apis/webmasters_v3/classes.rb +563 -0
- data/generated/google/apis/webmasters_v3/representations.rb +250 -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 +243 -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 +8136 -0
- data/generated/google/apis/youtube_v3/representations.rb +2838 -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 +128 -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 +27 -39
- data/lib/google/api_client/auth/installed_app.rb +7 -5
- data/lib/google/api_client/auth/key_utils.rb +12 -11
- data/lib/google/api_client/auth/storage.rb +5 -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 +4 -5
- data/lib/google/apis/core/api_command.rb +135 -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 +312 -0
- data/lib/google/apis/core/json_representation.rb +127 -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 +288 -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 +15 -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/Gemfile +7 -0
- data/samples/README.md +51 -0
- data/samples/google-api-samples +32 -0
- data/samples/lib/base_cli.rb +94 -0
- data/samples/lib/samples/analytics.rb +62 -0
- data/samples/lib/samples/calendar.rb +83 -0
- data/samples/lib/samples/drive.rb +82 -0
- data/samples/lib/samples/gmail.rb +50 -0
- data/samples/lib/samples/pubsub.rb +114 -0
- data/samples/lib/samples/translate.rb +44 -0
- data/samples/lib/samples/you_tube.rb +44 -0
- data/script/generate +95 -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 +38 -1
- 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 +284 -0
- data/spec/google/apis/core/json_representation_spec.rb +192 -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 +272 -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 +533 -170
- 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 -325
- data/lib/google/api_client/charset.rb +0 -33
- data/lib/google/api_client/discovery/api.rb +0 -300
- 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 -119
- 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 -662
- 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,60 @@
|
|
|
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 'google/apis/core/base_service'
|
|
16
|
+
require 'google/apis/core/json_representation'
|
|
17
|
+
require 'google/apis/core/hashable'
|
|
18
|
+
require 'google/apis/errors'
|
|
19
|
+
|
|
20
|
+
module Google
|
|
21
|
+
module Apis
|
|
22
|
+
module <%= api.module_name %>
|
|
23
|
+
# <%= api.title %>
|
|
24
|
+
#
|
|
25
|
+
# <%= block_comment(api.description, 6, 2) %>
|
|
26
|
+
#
|
|
27
|
+
# @example
|
|
28
|
+
# require '<%= to_path(api.qualified_name) %>'
|
|
29
|
+
#
|
|
30
|
+
# <%= api.name %> = <%= api.qualified_name %> # Alias the module
|
|
31
|
+
# service = <%= api.name %>::<%= api.service_name %>.new
|
|
32
|
+
#
|
|
33
|
+
<% if api.documentation_link -%>
|
|
34
|
+
# @see <%= api.documentation_link %>
|
|
35
|
+
<% end -%>
|
|
36
|
+
class <%= api.service_name %> < Google::Apis::Core::BaseService
|
|
37
|
+
<% for param in api.parameters.values.reject {|p| p.name == 'fields'} -%>
|
|
38
|
+
# @return [<%= param.generated_type %>]
|
|
39
|
+
# <%= block_comment(param.description, 8, 2) %>
|
|
40
|
+
attr_accessor :<%= param.generated_name %>
|
|
41
|
+
|
|
42
|
+
<% end -%>
|
|
43
|
+
def initialize
|
|
44
|
+
super('<%= api.root_url %>', '<%= api.service_path %>')
|
|
45
|
+
end
|
|
46
|
+
<% for api_method in api.all_methods -%>
|
|
47
|
+
<%= indent(include('method', :api_method => api_method, :api => api), 8) -%>
|
|
48
|
+
<% end -%>
|
|
49
|
+
|
|
50
|
+
protected
|
|
51
|
+
|
|
52
|
+
def apply_command_defaults(command)
|
|
53
|
+
<% for param in api.parameters.values.reject {|p| p.name == 'fields'} -%>
|
|
54
|
+
command.query['<%= param.name %>'] = <%= param.generated_name %> unless <%= param.generated_name %>.nil?
|
|
55
|
+
<% end -%>
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
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 'google/apis/discovery_v1'
|
|
16
|
+
require 'google/apis/generator/annotator'
|
|
17
|
+
require 'google/apis/generator/model'
|
|
18
|
+
require 'google/apis/generator/template'
|
|
19
|
+
require 'active_support/inflector'
|
|
20
|
+
require 'yaml'
|
|
21
|
+
|
|
22
|
+
module Google
|
|
23
|
+
module Apis
|
|
24
|
+
# Generates ruby classes for APIs from discovery documents
|
|
25
|
+
# @private
|
|
26
|
+
class Generator
|
|
27
|
+
Discovery = Google::Apis::DiscoveryV1
|
|
28
|
+
|
|
29
|
+
# Load templates
|
|
30
|
+
def initialize(api_names: nil)
|
|
31
|
+
@names = Google::Apis::Generator::Names.new(api_names || File.join(Google::Apis::ROOT, 'api_names.yaml'))
|
|
32
|
+
@module_template = Template.load('module.rb')
|
|
33
|
+
@service_template = Template.load('service.rb')
|
|
34
|
+
@classes_template = Template.load('classes.rb')
|
|
35
|
+
@representations_template = Template.load('representations.rb')
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Generates ruby source for an API
|
|
39
|
+
#
|
|
40
|
+
# @param [String] json
|
|
41
|
+
# API Description, as JSON text
|
|
42
|
+
# @return [Hash<String,String>]
|
|
43
|
+
# Hash of generated files keyed by path
|
|
44
|
+
def render(json)
|
|
45
|
+
api = parse_description(json)
|
|
46
|
+
Annotator.process(api, @names)
|
|
47
|
+
base_path = ActiveSupport::Inflector.underscore(api.qualified_name)
|
|
48
|
+
context = {
|
|
49
|
+
'api' => api
|
|
50
|
+
}
|
|
51
|
+
files = {}
|
|
52
|
+
files[base_path + '.rb'] = @module_template.render(context)
|
|
53
|
+
files[File.join(base_path, 'service.rb')] = @service_template.render(context)
|
|
54
|
+
files[File.join(base_path, 'classes.rb')] = @classes_template.render(context)
|
|
55
|
+
files[File.join(base_path, 'representations.rb')] = @representations_template.render(context)
|
|
56
|
+
files
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Dump mapping of API names
|
|
60
|
+
# @return [String] Mapping of paths to ruby names in YAML format
|
|
61
|
+
def dump_api_names
|
|
62
|
+
@names.dump
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def parse_description(json)
|
|
66
|
+
Discovery::RestDescription::Representation.new(Discovery::RestDescription.new).from_json(json)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,85 @@
|
|
|
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
|
+
module Google
|
|
16
|
+
module Apis
|
|
17
|
+
# General options for API requests
|
|
18
|
+
ClientOptions = Struct.new(
|
|
19
|
+
:application_name,
|
|
20
|
+
:application_version,
|
|
21
|
+
:proxy_url,
|
|
22
|
+
:use_net_http)
|
|
23
|
+
|
|
24
|
+
RequestOptions = Struct.new(
|
|
25
|
+
:authorization,
|
|
26
|
+
:retries,
|
|
27
|
+
:header,
|
|
28
|
+
:timeout_sec,
|
|
29
|
+
:open_timeout_sec)
|
|
30
|
+
|
|
31
|
+
# General client options
|
|
32
|
+
class ClientOptions
|
|
33
|
+
# @!attribute [rw] application_name
|
|
34
|
+
# @return [String] Name of the application, for identification in the User-Agent header
|
|
35
|
+
# @!attribute [rw] application_version
|
|
36
|
+
# @return [String] Version of the application, for identification in the User-Agent header
|
|
37
|
+
# @!attribute [rw] proxy_url
|
|
38
|
+
# @return [String] URL of a proxy server
|
|
39
|
+
|
|
40
|
+
# Get the default options
|
|
41
|
+
# @return [Google::Apis::ClientOptions]
|
|
42
|
+
def self.default
|
|
43
|
+
@options ||= ClientOptions.new
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Request options
|
|
48
|
+
class RequestOptions
|
|
49
|
+
# @!attribute [rw] authorization
|
|
50
|
+
# @return [Signet::OAuth2::Client, #apply(Hash)] OAuth2 credentials
|
|
51
|
+
# @!attribute [rw] retries
|
|
52
|
+
# @return [Fixnum] Number of times to retry requests on server error
|
|
53
|
+
# @!attribute [rw] timeout_sec
|
|
54
|
+
# @return [Fixnum] How long, in seconds, before requests time out
|
|
55
|
+
# @!attribute [rw] open_timeout_sec
|
|
56
|
+
# @return [Fixnum] How long, in seconds, before failed connections time out
|
|
57
|
+
# @!attribute [rw] header
|
|
58
|
+
# @return [Hash<String,String] Additional HTTP headers to include in requests
|
|
59
|
+
|
|
60
|
+
# Get the default options
|
|
61
|
+
# @return [Google::Apis::RequestOptions]
|
|
62
|
+
def self.default
|
|
63
|
+
@options ||= RequestOptions.new
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def merge(options)
|
|
67
|
+
return self if options.nil?
|
|
68
|
+
|
|
69
|
+
new_options = dup
|
|
70
|
+
members.each do |opt|
|
|
71
|
+
opt = opt.to_sym
|
|
72
|
+
new_options[opt] = options[opt] unless options[opt].nil?
|
|
73
|
+
end
|
|
74
|
+
new_options
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
ClientOptions.default.use_net_http = false
|
|
79
|
+
ClientOptions.default.application_name = 'unknown'
|
|
80
|
+
ClientOptions.default.application_version = '0.0.0'
|
|
81
|
+
|
|
82
|
+
RequestOptions.default.retries = 0
|
|
83
|
+
RequestOptions.default.open_timeout_sec = 20
|
|
84
|
+
end
|
|
85
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
module Google
|
|
16
|
+
module Apis
|
|
17
|
+
# Client library version
|
|
18
|
+
VERSION = '0.9'
|
|
19
|
+
|
|
20
|
+
# Current operating system
|
|
21
|
+
# @private
|
|
22
|
+
OS_VERSION = begin
|
|
23
|
+
if RUBY_PLATFORM =~ /mswin|win32|mingw|bccwin|cygwin/
|
|
24
|
+
`ver`.sub(/\s*\[Version\s*/, '/').sub(']', '').strip
|
|
25
|
+
elsif RUBY_PLATFORM =~ /darwin/i
|
|
26
|
+
"Mac OS X/#{`sw_vers -productVersion`}"
|
|
27
|
+
elsif RUBY_PLATFORM == 'java'
|
|
28
|
+
require 'java'
|
|
29
|
+
name = java.lang.System.getProperty('os.name')
|
|
30
|
+
version = java.lang.System.getProperty('os.version')
|
|
31
|
+
"#{name}/#{version}"
|
|
32
|
+
else
|
|
33
|
+
`uname -sr`.sub(' ', '/')
|
|
34
|
+
end
|
|
35
|
+
rescue
|
|
36
|
+
RUBY_PLATFORM
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
data/lib/google/apis.rb
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
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 'google/apis/version'
|
|
16
|
+
require 'logger'
|
|
17
|
+
|
|
18
|
+
module Google
|
|
19
|
+
module Apis
|
|
20
|
+
ROOT = File.expand_path('..', File.dirname(__dir__))
|
|
21
|
+
|
|
22
|
+
# @!attribute [rw] logger
|
|
23
|
+
# @return [Logger] The logger.
|
|
24
|
+
def self.logger
|
|
25
|
+
@logger ||= rails_logger || default_logger
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
class << self
|
|
29
|
+
attr_writer :logger
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
private
|
|
33
|
+
|
|
34
|
+
# Create and configure a logger
|
|
35
|
+
# @return [Logger]
|
|
36
|
+
def self.default_logger
|
|
37
|
+
logger = Logger.new($stdout)
|
|
38
|
+
logger.level = Logger::WARN
|
|
39
|
+
logger
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Check to see if client is being used in a Rails environment and ge the logger if present
|
|
43
|
+
# @return [Logger]
|
|
44
|
+
def self.rails_logger
|
|
45
|
+
::Rails.logger if defined?(::Rails) && ::Rails.respond_to?(:logger) && ::Rails.logger
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
namespace :metrics do
|
|
2
|
+
task :lines do
|
|
3
|
+
lines, codelines, total_lines, total_codelines = 0, 0, 0, 0
|
|
4
|
+
for file_name in FileList['lib/**/*.rb', 'bin/generate-api']
|
|
5
|
+
f = File.open(file_name)
|
|
6
|
+
while line = f.gets
|
|
7
|
+
lines += 1
|
|
8
|
+
next if line =~ /^\s*$/
|
|
9
|
+
next if line =~ /^\s*#/
|
|
10
|
+
codelines += 1
|
|
11
|
+
end
|
|
12
|
+
puts "L: #{sprintf('%4d', lines)}, " +
|
|
13
|
+
"LOC #{sprintf('%4d', codelines)} | #{file_name}"
|
|
14
|
+
total_lines += lines
|
|
15
|
+
total_codelines += codelines
|
|
16
|
+
|
|
17
|
+
lines, codelines = 0, 0
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
puts "Total: Lines #{total_lines}, LOC #{total_codelines}"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
require 'rubocop/rake_task'
|
|
2
|
+
|
|
3
|
+
desc 'Run RuboCop on the lib directory'
|
|
4
|
+
RuboCop::RakeTask.new(:rubocop) do |task|
|
|
5
|
+
task.patterns = ['lib/**/*.rb']
|
|
6
|
+
# only show the files with failures
|
|
7
|
+
task.formatters = ['progress']
|
|
8
|
+
# don't abort rake on failure
|
|
9
|
+
task.fail_on_error = false
|
|
10
|
+
end
|
data/rakelib/spec.rake
ADDED
data/rakelib/yard.rake
ADDED
data/samples/Gemfile
ADDED
data/samples/README.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# API Samples
|
|
2
|
+
|
|
3
|
+
This directory contains a small but growing collection of samples for various
|
|
4
|
+
APIs. Each sample can be run on the command line from the `google-api-samples`
|
|
5
|
+
script.
|
|
6
|
+
|
|
7
|
+
Contributions of new samples are welcome.
|
|
8
|
+
|
|
9
|
+
# Setup
|
|
10
|
+
|
|
11
|
+
Depending on which particular samples you want to run, different
|
|
12
|
+
steps may be required. Some samples, like Pub/Sub, require a service account,
|
|
13
|
+
others like Drive, Calendar, and YouTube require an OAuth Client ID. And in
|
|
14
|
+
some cases like Translate, only an API key is needed.
|
|
15
|
+
|
|
16
|
+
* Create a project at https://console.developers.google.com
|
|
17
|
+
* Go to the `API Manager` and enable the APIs you'd like to try
|
|
18
|
+
* Go to `Credentials` and create the appropriate type of credential for the sample
|
|
19
|
+
* For keys, use 'Server key' as the type
|
|
20
|
+
* For OAuth Client IDs, use 'Other' as the type
|
|
21
|
+
* For service accounts, use the 'JSON' key type
|
|
22
|
+
|
|
23
|
+
Additional details on how to enable APIs and create credentials can be
|
|
24
|
+
found in the help guide in the console.
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
## Example Environment Settings
|
|
28
|
+
|
|
29
|
+
For convenience, application credentials can be read from the shell environment
|
|
30
|
+
or placed in a .env file.
|
|
31
|
+
|
|
32
|
+
After setup, your .env file might look something like:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
GOOGLE_API_KEY=AIzaSyC6GvjvPlEzJpTW2bW2t0MPHXXXXXXXXXX
|
|
36
|
+
GOOGLE_CLIENT_ID=479164972499-i7j6av7bp2s4on5ltb7pjXXXXXXXXXX.apps.googleusercontent.com
|
|
37
|
+
GOOGLE_CLIENT_SECRET=JBotCTG5biFWGzXXXXXXXXXX
|
|
38
|
+
GOOGLE_APPLICATION_CREDENTIALS=~/ruby-samples-cred.json
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
# Running the samples
|
|
42
|
+
|
|
43
|
+
To list the available sample modules, run the script:
|
|
44
|
+
```
|
|
45
|
+
google-api-samples
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
To get help on a specific set of samples, run:
|
|
49
|
+
```
|
|
50
|
+
google-api-samples help <module>
|
|
51
|
+
```
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
$:.unshift(File.expand_path("../lib", __FILE__))
|
|
4
|
+
|
|
5
|
+
require 'thor'
|
|
6
|
+
require 'dotenv'
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# Small script to allow executing samples from the command line.
|
|
10
|
+
# Each sample is loaded as a subcommand.
|
|
11
|
+
#
|
|
12
|
+
# Example usage:
|
|
13
|
+
#
|
|
14
|
+
# google-api-samples drive upload myfile.txt
|
|
15
|
+
#
|
|
16
|
+
#
|
|
17
|
+
class App < Thor
|
|
18
|
+
|
|
19
|
+
# Load all the samples and register them as subcommands
|
|
20
|
+
Dir.glob('./lib/samples/*.rb').each do |file|
|
|
21
|
+
require file
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
Samples.constants.each do |const|
|
|
25
|
+
desc const.downcase, "#{const} samples"
|
|
26
|
+
subcommand const.downcase, Samples.const_get(const)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
Dotenv.load
|
|
32
|
+
App.start(ARGV)
|
|
@@ -0,0 +1,94 @@
|
|
|
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 'googleauth'
|
|
16
|
+
require 'googleauth/stores/file_token_store'
|
|
17
|
+
require 'fileutils'
|
|
18
|
+
require 'thor'
|
|
19
|
+
require 'os'
|
|
20
|
+
|
|
21
|
+
# Base command line module for samples. Provides authorization support,
|
|
22
|
+
# either using application default credentials or user authorization
|
|
23
|
+
# depending on the use case.
|
|
24
|
+
class BaseCli < Thor
|
|
25
|
+
include Thor::Actions
|
|
26
|
+
|
|
27
|
+
OOB_URI = 'urn:ietf:wg:oauth:2.0:oob'
|
|
28
|
+
|
|
29
|
+
class_option :user, :type => :string
|
|
30
|
+
class_option :api_key, :type => :string
|
|
31
|
+
|
|
32
|
+
no_commands do
|
|
33
|
+
|
|
34
|
+
# Returns the path to the client_secrets.json file.
|
|
35
|
+
def client_secrets_path
|
|
36
|
+
return ENV['GOOGLE_CLIENT_SECRETS'] if ENV.has_key?('GOOGLE_CLIENT_SECRETS')
|
|
37
|
+
return well_known_path_for('client_secrets.json')
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Returns the path to the token store.
|
|
41
|
+
def token_store_path
|
|
42
|
+
return ENV['GOOGLE_CREDENTIAL_STORE'] if ENV.has_key?('GOOGLE_CREDENTIAL_STORE')
|
|
43
|
+
return well_known_path_for('credentials.yaml')
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Builds a path to a file in $HOME/.config/google (or %APPDATA%/google,
|
|
47
|
+
# on Windows)
|
|
48
|
+
def well_known_path_for(file)
|
|
49
|
+
if OS.windows?
|
|
50
|
+
File.join(ENV['APPDATA'], 'google', file)
|
|
51
|
+
else
|
|
52
|
+
File.join(ENV['HOME'], '.config', 'google', file)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Returns application credentials for the given scope.
|
|
57
|
+
def application_credentials_for(scope)
|
|
58
|
+
Google::Auth.get_application_default(scope)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Returns user credentials for the given scope. Requests authorization
|
|
62
|
+
# if requrired.
|
|
63
|
+
def user_credentials_for(scope)
|
|
64
|
+
FileUtils.mkdir_p(File.dirname(token_store_path))
|
|
65
|
+
|
|
66
|
+
if ENV['GOOGLE_CLIENT_ID']
|
|
67
|
+
client_id = Google::Auth::ClientId.new(ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET'])
|
|
68
|
+
else
|
|
69
|
+
client_id = Google::Auth::ClientId.from_file(client_secrets_path)
|
|
70
|
+
end
|
|
71
|
+
token_store = Google::Auth::Stores::FileTokenStore.new(:file => token_store_path)
|
|
72
|
+
authorizer = Google::Auth::UserAuthorizer.new(client_id, scope, token_store)
|
|
73
|
+
|
|
74
|
+
user_id = options[:user] || 'default'
|
|
75
|
+
|
|
76
|
+
credentials = authorizer.get_credentials(user_id)
|
|
77
|
+
if credentials.nil?
|
|
78
|
+
url = authorizer.get_authorization_url(base_url: OOB_URI)
|
|
79
|
+
say "Open the following URL in your browser and authorize the application."
|
|
80
|
+
say url
|
|
81
|
+
code = ask "Enter the authorization code:"
|
|
82
|
+
credentials = authorizer.get_and_store_credentials_from_code(
|
|
83
|
+
user_id: user_id, code: code, base_url: OOB_URI)
|
|
84
|
+
end
|
|
85
|
+
credentials
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Gets the API key of the client
|
|
89
|
+
def api_key
|
|
90
|
+
ENV['GOOGLE_API_KEY'] || options[:api_key]
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
end
|
|
94
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
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/analytics_v3'
|
|
16
|
+
require 'base_cli'
|
|
17
|
+
|
|
18
|
+
module Samples
|
|
19
|
+
# Examples for the Google Analytics APIs
|
|
20
|
+
#
|
|
21
|
+
# Sample usage session:
|
|
22
|
+
#
|
|
23
|
+
# $ ./google-api-samples analytics show_visits 55622900 --start='2015-12-01' --end='2015-12-08'
|
|
24
|
+
# ga:date ga:sessions ga:users ga:newUsers ga:percentNewSessions ga:sessionDuration ga:avgSessionDuration
|
|
25
|
+
# 20151201 0 0 0 0.0 0.0 0.0
|
|
26
|
+
# 20151202 0 0 0 0.0 0.0 0.0
|
|
27
|
+
# 20151203 1 1 1 100.0 0.0 0.0
|
|
28
|
+
# 20151204 2 2 1 50.0 616.0 308.0
|
|
29
|
+
# 20151205 0 0 0 0.0 0.0 0.0
|
|
30
|
+
# 20151206 1 1 1 100.0 0.0 0.0
|
|
31
|
+
# 20151207 0 0 0 0.0 0.0 0.0
|
|
32
|
+
# 20151208 2 2 1 50.0 0.0 0.0
|
|
33
|
+
#
|
|
34
|
+
class Analytics < BaseCli
|
|
35
|
+
Analytics = Google::Apis::AnalyticsV3
|
|
36
|
+
|
|
37
|
+
desc 'show_visits PROFILE_ID', 'Show visists for the given analytics profile ID'
|
|
38
|
+
method_option :start, type: :string, required: true
|
|
39
|
+
method_option :end, type: :string, required: true
|
|
40
|
+
def show_visits(profile_id)
|
|
41
|
+
analytics = Analytics::AnalyticsService.new
|
|
42
|
+
analytics.authorization = user_credentials_for(Analytics::AUTH_ANALYTICS)
|
|
43
|
+
|
|
44
|
+
dimensions = %w(ga:date)
|
|
45
|
+
metrics = %w(ga:sessions ga:users ga:newUsers ga:percentNewSessions
|
|
46
|
+
ga:sessionDuration ga:avgSessionDuration)
|
|
47
|
+
sort = %w(ga:date)
|
|
48
|
+
result = analytics.get_ga_data("ga:#{profile_id}",
|
|
49
|
+
options[:start],
|
|
50
|
+
options[:end],
|
|
51
|
+
metrics.join(','),
|
|
52
|
+
dimensions: dimensions.join(','),
|
|
53
|
+
sort: sort.join(','))
|
|
54
|
+
|
|
55
|
+
data = []
|
|
56
|
+
data.push(result.column_headers.map { |h| h.name })
|
|
57
|
+
data.push(*result.rows)
|
|
58
|
+
print_table(data)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
end
|
|
62
|
+
end
|