google-api-client 0.10.3 → 0.11.0
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/.travis.yml +12 -18
- data/CHANGELOG.md +22 -2
- data/Gemfile +5 -7
- data/MIGRATING.md +33 -0
- data/README.md +10 -2
- data/Rakefile +1 -0
- data/bin/generate-api +7 -1
- data/dl.rb +0 -0
- data/generated/google/apis/acceleratedmobilepageurl_v1/classes.rb +6 -6
- data/generated/google/apis/acceleratedmobilepageurl_v1/representations.rb +1 -1
- data/generated/google/apis/acceleratedmobilepageurl_v1/service.rb +1 -0
- data/generated/google/apis/adexchangebuyer2_v2beta1.rb +1 -1
- data/generated/google/apis/adexchangebuyer2_v2beta1/classes.rb +759 -759
- data/generated/google/apis/adexchangebuyer2_v2beta1/representations.rb +152 -152
- data/generated/google/apis/adexchangebuyer2_v2beta1/service.rb +376 -375
- data/generated/google/apis/adexchangebuyer_v1_4/classes.rb +58 -58
- data/generated/google/apis/adexchangebuyer_v1_4/representations.rb +45 -45
- data/generated/google/apis/adexchangebuyer_v1_4/service.rb +22 -21
- data/generated/google/apis/adexchangeseller_v2_0/classes.rb +5 -5
- data/generated/google/apis/adexchangeseller_v2_0/representations.rb +5 -5
- data/generated/google/apis/adexchangeseller_v2_0/service.rb +1 -0
- data/generated/google/apis/admin_datatransfer_v1/classes.rb +2 -2
- data/generated/google/apis/admin_datatransfer_v1/representations.rb +2 -2
- data/generated/google/apis/admin_datatransfer_v1/service.rb +2 -1
- data/generated/google/apis/admin_directory_v1/classes.rb +11 -11
- data/generated/google/apis/admin_directory_v1/representations.rb +11 -11
- data/generated/google/apis/admin_directory_v1/service.rb +1 -0
- data/generated/google/apis/admin_reports_v1/classes.rb +5 -5
- data/generated/google/apis/admin_reports_v1/representations.rb +4 -4
- data/generated/google/apis/admin_reports_v1/service.rb +1 -0
- data/generated/google/apis/adsense_v1_4.rb +1 -1
- data/generated/google/apis/adsense_v1_4/classes.rb +2 -2
- data/generated/google/apis/adsense_v1_4/representations.rb +2 -2
- data/generated/google/apis/adsense_v1_4/service.rb +1 -0
- data/generated/google/apis/adsensehost_v4_1.rb +1 -1
- data/generated/google/apis/adsensehost_v4_1/classes.rb +1 -1
- data/generated/google/apis/adsensehost_v4_1/representations.rb +1 -1
- data/generated/google/apis/adsensehost_v4_1/service.rb +1 -0
- data/generated/google/apis/analytics_v3/classes.rb +10 -10
- data/generated/google/apis/analytics_v3/representations.rb +10 -10
- data/generated/google/apis/analytics_v3/service.rb +1 -0
- data/generated/google/apis/analyticsreporting_v4/classes.rb +933 -933
- data/generated/google/apis/analyticsreporting_v4/representations.rb +197 -197
- data/generated/google/apis/analyticsreporting_v4/service.rb +5 -4
- data/generated/google/apis/androidenterprise_v1.rb +1 -1
- data/generated/google/apis/androidenterprise_v1/classes.rb +1 -1
- data/generated/google/apis/androidenterprise_v1/representations.rb +1 -1
- data/generated/google/apis/androidenterprise_v1/service.rb +1 -0
- data/generated/google/apis/androidpublisher_v2/classes.rb +13 -13
- data/generated/google/apis/androidpublisher_v2/representations.rb +13 -13
- data/generated/google/apis/androidpublisher_v2/service.rb +3 -2
- data/generated/google/apis/appengine_v1/classes.rb +2 -2
- data/generated/google/apis/appengine_v1/representations.rb +2 -2
- data/generated/google/apis/appengine_v1/service.rb +1 -0
- data/generated/google/apis/appsactivity_v1/classes.rb +1 -1
- data/generated/google/apis/appsactivity_v1/representations.rb +1 -1
- data/generated/google/apis/appsactivity_v1/service.rb +1 -0
- data/generated/google/apis/appsmarket_v2.rb +35 -0
- data/generated/google/apis/appsmarket_v2/classes.rb +396 -0
- data/generated/google/apis/appsmarket_v2/representations.rb +180 -0
- data/generated/google/apis/appsmarket_v2/service.rb +187 -0
- data/generated/google/apis/appstate_v1.rb +1 -1
- data/generated/google/apis/appstate_v1/service.rb +1 -0
- data/generated/google/apis/bigquery_v2/classes.rb +39 -39
- data/generated/google/apis/bigquery_v2/representations.rb +38 -38
- data/generated/google/apis/bigquery_v2/service.rb +3 -2
- data/generated/google/apis/blogger_v3/classes.rb +2 -2
- data/generated/google/apis/blogger_v3/representations.rb +2 -2
- data/generated/google/apis/blogger_v3/service.rb +1 -0
- data/generated/google/apis/books_v1/classes.rb +5 -5
- data/generated/google/apis/books_v1/representations.rb +4 -4
- data/generated/google/apis/books_v1/service.rb +1 -0
- data/generated/google/apis/calendar_v3/classes.rb +1 -1
- data/generated/google/apis/calendar_v3/representations.rb +1 -1
- data/generated/google/apis/calendar_v3/service.rb +1 -0
- data/generated/google/apis/civicinfo_v2/classes.rb +6 -6
- data/generated/google/apis/civicinfo_v2/representations.rb +6 -6
- data/generated/google/apis/civicinfo_v2/service.rb +2 -1
- data/generated/google/apis/classroom_v1/service.rb +1 -0
- data/generated/google/apis/cloudbilling_v1/service.rb +1 -0
- data/generated/google/apis/cloudbuild_v1.rb +1 -1
- data/generated/google/apis/cloudbuild_v1/classes.rb +626 -626
- data/generated/google/apis/cloudbuild_v1/representations.rb +109 -109
- data/generated/google/apis/cloudbuild_v1/service.rb +159 -158
- data/generated/google/apis/clouddebugger_v2/classes.rb +358 -358
- data/generated/google/apis/clouddebugger_v2/representations.rb +99 -99
- data/generated/google/apis/clouddebugger_v2/service.rb +42 -41
- data/generated/google/apis/clouderrorreporting_v1beta1.rb +1 -1
- data/generated/google/apis/clouderrorreporting_v1beta1/classes.rb +220 -220
- data/generated/google/apis/clouderrorreporting_v1beta1/representations.rb +52 -52
- data/generated/google/apis/clouderrorreporting_v1beta1/service.rb +59 -58
- data/generated/google/apis/cloudfunctions_v1/classes.rb +7 -7
- data/generated/google/apis/cloudfunctions_v1/representations.rb +1 -1
- data/generated/google/apis/cloudfunctions_v1/service.rb +5 -4
- data/generated/google/apis/cloudkms_v1/classes.rb +311 -311
- data/generated/google/apis/cloudkms_v1/representations.rb +87 -87
- data/generated/google/apis/cloudkms_v1/service.rb +168 -167
- data/generated/google/apis/cloudmonitoring_v2beta2/classes.rb +4 -4
- data/generated/google/apis/cloudmonitoring_v2beta2/representations.rb +4 -4
- data/generated/google/apis/cloudmonitoring_v2beta2/service.rb +1 -0
- data/generated/google/apis/cloudresourcemanager_v1.rb +3 -3
- data/generated/google/apis/cloudresourcemanager_v1/classes.rb +341 -341
- data/generated/google/apis/cloudresourcemanager_v1/representations.rb +62 -62
- data/generated/google/apis/cloudresourcemanager_v1/service.rb +458 -457
- data/generated/google/apis/cloudresourcemanager_v1beta1/classes.rb +327 -327
- data/generated/google/apis/cloudresourcemanager_v1beta1/representations.rb +71 -71
- data/generated/google/apis/cloudresourcemanager_v1beta1/service.rb +237 -236
- data/generated/google/apis/cloudtrace_v1.rb +3 -3
- data/generated/google/apis/cloudtrace_v1/classes.rb +38 -38
- data/generated/google/apis/cloudtrace_v1/representations.rb +13 -13
- data/generated/google/apis/cloudtrace_v1/service.rb +14 -13
- data/generated/google/apis/clouduseraccounts_beta/classes.rb +4 -4
- data/generated/google/apis/clouduseraccounts_beta/representations.rb +4 -4
- data/generated/google/apis/clouduseraccounts_beta/service.rb +1 -0
- data/generated/google/apis/compute_beta/classes.rb +52 -52
- data/generated/google/apis/compute_beta/representations.rb +52 -52
- data/generated/google/apis/compute_beta/service.rb +2 -1
- data/generated/google/apis/compute_v1/classes.rb +48 -48
- data/generated/google/apis/compute_v1/representations.rb +48 -48
- data/generated/google/apis/compute_v1/service.rb +2 -1
- data/generated/google/apis/container_v1/service.rb +1 -0
- data/generated/google/apis/content_v2.rb +1 -1
- data/generated/google/apis/content_v2/classes.rb +38 -660
- data/generated/google/apis/content_v2/representations.rb +37 -303
- data/generated/google/apis/content_v2/service.rb +63 -279
- data/generated/google/apis/customsearch_v1/classes.rb +2 -2
- data/generated/google/apis/customsearch_v1/representations.rb +2 -2
- data/generated/google/apis/customsearch_v1/service.rb +1 -0
- data/generated/google/apis/dataflow_v1b3/classes.rb +3281 -3281
- data/generated/google/apis/dataflow_v1b3/representations.rb +777 -777
- data/generated/google/apis/dataflow_v1b3/service.rb +106 -105
- data/generated/google/apis/dataproc_v1/classes.rb +395 -395
- data/generated/google/apis/dataproc_v1/representations.rb +91 -91
- data/generated/google/apis/dataproc_v1/service.rb +356 -355
- data/generated/google/apis/datastore_v1/classes.rb +506 -506
- data/generated/google/apis/datastore_v1/representations.rb +147 -147
- data/generated/google/apis/datastore_v1/service.rb +46 -45
- data/generated/google/apis/deploymentmanager_v2/classes.rb +6 -6
- data/generated/google/apis/deploymentmanager_v2/representations.rb +6 -6
- data/generated/google/apis/deploymentmanager_v2/service.rb +1 -0
- data/generated/google/apis/dfareporting_v2_6/classes.rb +280 -280
- data/generated/google/apis/dfareporting_v2_6/representations.rb +266 -266
- data/generated/google/apis/dfareporting_v2_6/service.rb +421 -420
- data/generated/google/apis/dfareporting_v2_7/classes.rb +280 -280
- data/generated/google/apis/dfareporting_v2_7/representations.rb +266 -266
- data/generated/google/apis/dfareporting_v2_7/service.rb +423 -422
- data/generated/google/apis/discovery_v1/service.rb +1 -0
- data/generated/google/apis/dns_v1/classes.rb +2 -2
- data/generated/google/apis/dns_v1/representations.rb +2 -2
- data/generated/google/apis/dns_v1/service.rb +1 -0
- data/generated/google/apis/dns_v2beta1/classes.rb +2 -2
- data/generated/google/apis/dns_v2beta1/representations.rb +2 -2
- data/generated/google/apis/dns_v2beta1/service.rb +1 -0
- data/generated/google/apis/doubleclickbidmanager_v1/classes.rb +15 -15
- data/generated/google/apis/doubleclickbidmanager_v1/representations.rb +13 -13
- data/generated/google/apis/doubleclickbidmanager_v1/service.rb +5 -4
- data/generated/google/apis/doubleclicksearch_v2/classes.rb +28 -28
- data/generated/google/apis/doubleclicksearch_v2/representations.rb +28 -28
- data/generated/google/apis/doubleclicksearch_v2/service.rb +13 -12
- data/generated/google/apis/drive_v2/classes.rb +17 -17
- data/generated/google/apis/drive_v2/representations.rb +17 -17
- data/generated/google/apis/drive_v2/service.rb +5 -4
- data/generated/google/apis/drive_v3/classes.rb +13 -13
- data/generated/google/apis/drive_v3/representations.rb +12 -12
- data/generated/google/apis/drive_v3/service.rb +1 -0
- data/generated/google/apis/firebasedynamiclinks_v1.rb +1 -1
- data/generated/google/apis/firebasedynamiclinks_v1/classes.rb +81 -81
- data/generated/google/apis/firebasedynamiclinks_v1/representations.rb +24 -24
- data/generated/google/apis/firebasedynamiclinks_v1/service.rb +1 -0
- data/generated/google/apis/firebaserules_v1/classes.rb +201 -201
- data/generated/google/apis/firebaserules_v1/representations.rb +61 -61
- data/generated/google/apis/firebaserules_v1/service.rb +1 -0
- data/generated/google/apis/fitness_v1/classes.rb +18 -18
- data/generated/google/apis/fitness_v1/representations.rb +18 -18
- data/generated/google/apis/fitness_v1/service.rb +6 -5
- data/generated/google/apis/fusiontables_v2/classes.rb +2 -2
- data/generated/google/apis/fusiontables_v2/representations.rb +2 -2
- data/generated/google/apis/fusiontables_v2/service.rb +1 -0
- data/generated/google/apis/games_configuration_v1configuration.rb +1 -1
- data/generated/google/apis/games_configuration_v1configuration/classes.rb +2 -2
- data/generated/google/apis/games_configuration_v1configuration/representations.rb +2 -2
- data/generated/google/apis/games_configuration_v1configuration/service.rb +1 -0
- data/generated/google/apis/games_management_v1management.rb +1 -1
- data/generated/google/apis/games_management_v1management/classes.rb +6 -6
- data/generated/google/apis/games_management_v1management/representations.rb +6 -6
- data/generated/google/apis/games_management_v1management/service.rb +1 -0
- data/generated/google/apis/games_v1.rb +1 -1
- data/generated/google/apis/games_v1/classes.rb +47 -47
- data/generated/google/apis/games_v1/representations.rb +47 -47
- data/generated/google/apis/games_v1/service.rb +58 -57
- data/generated/google/apis/genomics_v1.rb +6 -6
- data/generated/google/apis/genomics_v1/classes.rb +2354 -2354
- data/generated/google/apis/genomics_v1/representations.rb +487 -487
- data/generated/google/apis/genomics_v1/service.rb +1188 -1187
- data/generated/google/apis/gmail_v1/classes.rb +11 -11
- data/generated/google/apis/gmail_v1/representations.rb +11 -11
- data/generated/google/apis/gmail_v1/service.rb +2 -1
- data/generated/google/apis/groupsmigration_v1/service.rb +1 -0
- data/generated/google/apis/groupssettings_v1/service.rb +1 -0
- data/generated/google/apis/iam_v1/classes.rb +437 -437
- data/generated/google/apis/iam_v1/representations.rb +95 -95
- data/generated/google/apis/iam_v1/service.rb +87 -86
- data/generated/google/apis/identitytoolkit_v3/classes.rb +20 -20
- data/generated/google/apis/identitytoolkit_v3/representations.rb +20 -20
- data/generated/google/apis/identitytoolkit_v3/service.rb +1 -0
- data/generated/google/apis/kgsearch_v1/service.rb +9 -8
- data/generated/google/apis/language_v1.rb +1 -1
- data/generated/google/apis/language_v1/classes.rb +245 -245
- data/generated/google/apis/language_v1/representations.rb +65 -65
- data/generated/google/apis/language_v1/service.rb +1 -0
- data/generated/google/apis/language_v1beta1.rb +1 -1
- data/generated/google/apis/language_v1beta1/classes.rb +277 -277
- data/generated/google/apis/language_v1beta1/representations.rb +83 -83
- data/generated/google/apis/language_v1beta1/service.rb +31 -30
- data/generated/google/apis/licensing_v1/service.rb +1 -0
- data/generated/google/apis/logging_v2/classes.rb +408 -408
- data/generated/google/apis/logging_v2/representations.rb +93 -93
- data/generated/google/apis/logging_v2/service.rb +408 -407
- data/generated/google/apis/logging_v2beta1.rb +3 -3
- data/generated/google/apis/logging_v2beta1/classes.rb +892 -892
- data/generated/google/apis/logging_v2beta1/representations.rb +128 -128
- data/generated/google/apis/logging_v2beta1/service.rb +89 -88
- data/generated/google/apis/manufacturers_v1/classes.rb +309 -309
- data/generated/google/apis/manufacturers_v1/representations.rb +64 -64
- data/generated/google/apis/manufacturers_v1/service.rb +1 -0
- data/generated/google/apis/mirror_v1/service.rb +1 -0
- data/generated/google/apis/ml_v1/classes.rb +1185 -1185
- data/generated/google/apis/ml_v1/representations.rb +171 -171
- data/generated/google/apis/ml_v1/service.rb +282 -281
- data/generated/google/apis/monitoring_v3.rb +3 -3
- data/generated/google/apis/monitoring_v3/classes.rb +334 -334
- data/generated/google/apis/monitoring_v3/representations.rb +86 -86
- data/generated/google/apis/monitoring_v3/service.rb +344 -343
- data/generated/google/apis/mybusiness_v3/service.rb +1 -0
- data/generated/google/apis/oauth2_v2/service.rb +1 -0
- data/generated/google/apis/pagespeedonline_v2/classes.rb +8 -8
- data/generated/google/apis/pagespeedonline_v2/representations.rb +8 -8
- data/generated/google/apis/pagespeedonline_v2/service.rb +1 -0
- data/generated/google/apis/partners_v2/classes.rb +1466 -1466
- data/generated/google/apis/partners_v2/representations.rb +371 -371
- data/generated/google/apis/partners_v2/service.rb +530 -529
- data/generated/google/apis/people_v1.rb +4 -4
- data/generated/google/apis/people_v1/classes.rb +1009 -1009
- data/generated/google/apis/people_v1/representations.rb +249 -249
- data/generated/google/apis/people_v1/service.rb +13 -12
- data/generated/google/apis/plus_domains_v1/classes.rb +2 -2
- data/generated/google/apis/plus_domains_v1/representations.rb +2 -2
- data/generated/google/apis/plus_domains_v1/service.rb +1 -0
- data/generated/google/apis/plus_v1/service.rb +1 -0
- data/generated/google/apis/prediction_v1_6/classes.rb +9 -9
- data/generated/google/apis/prediction_v1_6/representations.rb +9 -9
- data/generated/google/apis/prediction_v1_6/service.rb +1 -0
- data/generated/google/apis/proximitybeacon_v1beta1/classes.rb +221 -221
- data/generated/google/apis/proximitybeacon_v1beta1/representations.rb +55 -55
- data/generated/google/apis/proximitybeacon_v1beta1/service.rb +378 -377
- data/generated/google/apis/pubsub_v1/classes.rb +99 -99
- data/generated/google/apis/pubsub_v1/representations.rb +25 -25
- data/generated/google/apis/pubsub_v1/service.rb +236 -235
- data/generated/google/apis/qpx_express_v1/service.rb +1 -0
- data/generated/google/apis/replicapool_v1beta2/classes.rb +3 -3
- data/generated/google/apis/replicapool_v1beta2/representations.rb +3 -3
- data/generated/google/apis/replicapool_v1beta2/service.rb +1 -0
- data/generated/google/apis/replicapoolupdater_v1beta1/classes.rb +2 -2
- data/generated/google/apis/replicapoolupdater_v1beta1/representations.rb +2 -2
- data/generated/google/apis/replicapoolupdater_v1beta1/service.rb +1 -0
- data/generated/google/apis/reseller_v1/classes.rb +5 -5
- data/generated/google/apis/reseller_v1/representations.rb +5 -5
- data/generated/google/apis/reseller_v1/service.rb +1 -0
- data/generated/google/apis/resourceviews_v1beta2/classes.rb +2 -2
- data/generated/google/apis/resourceviews_v1beta2/representations.rb +2 -2
- data/generated/google/apis/resourceviews_v1beta2/service.rb +1 -0
- data/generated/google/apis/runtimeconfig_v1.rb +3 -3
- data/generated/google/apis/runtimeconfig_v1/classes.rb +28 -28
- data/generated/google/apis/runtimeconfig_v1/representations.rb +3 -3
- data/generated/google/apis/runtimeconfig_v1/service.rb +53 -52
- data/generated/google/apis/script_v1.rb +18 -18
- data/generated/google/apis/script_v1/classes.rb +84 -84
- data/generated/google/apis/script_v1/representations.rb +18 -18
- data/generated/google/apis/script_v1/service.rb +11 -10
- data/generated/google/apis/searchconsole_v1/classes.rb +75 -75
- data/generated/google/apis/searchconsole_v1/representations.rb +32 -32
- data/generated/google/apis/searchconsole_v1/service.rb +11 -10
- data/generated/google/apis/servicecontrol_v1/classes.rb +582 -582
- data/generated/google/apis/servicecontrol_v1/representations.rb +113 -113
- data/generated/google/apis/servicecontrol_v1/service.rb +71 -70
- data/generated/google/apis/servicemanagement_v1.rb +3 -3
- data/generated/google/apis/servicemanagement_v1/classes.rb +3725 -3725
- data/generated/google/apis/servicemanagement_v1/representations.rb +255 -255
- data/generated/google/apis/servicemanagement_v1/service.rb +179 -178
- data/generated/google/apis/serviceuser_v1.rb +3 -3
- data/generated/google/apis/serviceuser_v1/classes.rb +2845 -2845
- data/generated/google/apis/serviceuser_v1/representations.rb +228 -228
- data/generated/google/apis/serviceuser_v1/service.rb +47 -46
- data/generated/google/apis/sheets_v4.rb +1 -1
- data/generated/google/apis/sheets_v4/classes.rb +4456 -4456
- data/generated/google/apis/sheets_v4/representations.rb +859 -859
- data/generated/google/apis/sheets_v4/service.rb +180 -179
- data/generated/google/apis/site_verification_v1/service.rb +1 -0
- data/generated/google/apis/slides_v1.rb +1 -1
- data/generated/google/apis/slides_v1/classes.rb +2856 -2856
- data/generated/google/apis/slides_v1/representations.rb +683 -683
- data/generated/google/apis/slides_v1/service.rb +27 -26
- data/generated/google/apis/sourcerepo_v1/classes.rb +281 -281
- data/generated/google/apis/sourcerepo_v1/representations.rb +79 -79
- data/generated/google/apis/sourcerepo_v1/service.rb +112 -111
- data/generated/google/apis/spanner_v1/classes.rb +2177 -2177
- data/generated/google/apis/spanner_v1/representations.rb +325 -325
- data/generated/google/apis/spanner_v1/service.rb +374 -373
- data/generated/google/apis/speech_v1beta1/classes.rb +197 -197
- data/generated/google/apis/speech_v1beta1/representations.rb +36 -36
- data/generated/google/apis/speech_v1beta1/service.rb +27 -26
- data/generated/google/apis/sqladmin_v1beta4/classes.rb +14 -14
- data/generated/google/apis/sqladmin_v1beta4/representations.rb +14 -14
- data/generated/google/apis/sqladmin_v1beta4/service.rb +3 -2
- data/generated/google/apis/storage_v1.rb +1 -1
- data/generated/google/apis/storage_v1/classes.rb +11 -11
- data/generated/google/apis/storage_v1/representations.rb +11 -11
- data/generated/google/apis/storage_v1/service.rb +65 -64
- data/generated/google/apis/storagetransfer_v1/classes.rb +239 -239
- data/generated/google/apis/storagetransfer_v1/representations.rb +79 -79
- data/generated/google/apis/storagetransfer_v1/service.rb +133 -132
- data/generated/google/apis/surveys_v2/classes.rb +4 -4
- data/generated/google/apis/surveys_v2/representations.rb +4 -4
- data/generated/google/apis/surveys_v2/service.rb +1 -0
- data/generated/google/apis/tagmanager_v1/classes.rb +7 -7
- data/generated/google/apis/tagmanager_v1/representations.rb +7 -7
- data/generated/google/apis/tagmanager_v1/service.rb +1 -0
- data/generated/google/apis/tagmanager_v2/classes.rb +6 -6
- data/generated/google/apis/tagmanager_v2/representations.rb +6 -6
- data/generated/google/apis/tagmanager_v2/service.rb +1 -0
- data/generated/google/apis/taskqueue_v1beta2/classes.rb +5 -5
- data/generated/google/apis/taskqueue_v1beta2/representations.rb +5 -5
- data/generated/google/apis/taskqueue_v1beta2/service.rb +1 -0
- data/generated/google/apis/tasks_v1/service.rb +3 -2
- data/generated/google/apis/toolresults_v1beta3.rb +1 -1
- data/generated/google/apis/toolresults_v1beta3/classes.rb +4 -4
- data/generated/google/apis/toolresults_v1beta3/representations.rb +4 -4
- data/generated/google/apis/toolresults_v1beta3/service.rb +1 -0
- data/generated/google/apis/tracing_v1/classes.rb +421 -421
- data/generated/google/apis/tracing_v1/representations.rb +86 -86
- data/generated/google/apis/tracing_v1/service.rb +60 -59
- data/generated/google/apis/translate_v2/service.rb +1 -0
- data/generated/google/apis/urlshortener_v1/classes.rb +3 -3
- data/generated/google/apis/urlshortener_v1/representations.rb +3 -3
- data/generated/google/apis/urlshortener_v1/service.rb +1 -0
- data/generated/google/apis/vision_v1/classes.rb +1290 -1290
- data/generated/google/apis/vision_v1/representations.rb +184 -184
- data/generated/google/apis/vision_v1/service.rb +11 -10
- data/generated/google/apis/webfonts_v1/service.rb +1 -0
- data/generated/google/apis/webmasters_v3/classes.rb +5 -5
- data/generated/google/apis/webmasters_v3/representations.rb +5 -5
- data/generated/google/apis/webmasters_v3/service.rb +1 -0
- data/generated/google/apis/youtube_analytics_v1/classes.rb +1 -1
- data/generated/google/apis/youtube_analytics_v1/representations.rb +1 -1
- data/generated/google/apis/youtube_analytics_v1/service.rb +1 -0
- data/generated/google/apis/youtube_partner_v1/classes.rb +13 -13
- data/generated/google/apis/youtube_partner_v1/representations.rb +13 -13
- data/generated/google/apis/youtube_partner_v1/service.rb +1 -0
- data/generated/google/apis/youtube_v3/classes.rb +31 -31
- data/generated/google/apis/youtube_v3/representations.rb +31 -31
- data/generated/google/apis/youtube_v3/service.rb +2 -1
- data/generated/google/apis/youtubereporting_v1.rb +4 -4
- data/generated/google/apis/youtubereporting_v1/classes.rb +73 -73
- data/generated/google/apis/youtubereporting_v1/representations.rb +18 -18
- data/generated/google/apis/youtubereporting_v1/service.rb +77 -76
- data/google-api-client.gemspec +4 -6
- data/lib/google/apis/core/api_command.rb +8 -3
- data/lib/google/apis/core/base_service.rb +47 -18
- data/lib/google/apis/core/batch.rb +13 -18
- data/lib/google/apis/core/composite_io.rb +97 -0
- data/lib/google/apis/core/download.rb +24 -20
- data/lib/google/apis/core/http_command.rb +49 -38
- data/lib/google/apis/core/json_representation.rb +5 -1
- data/lib/google/apis/core/multipart.rb +43 -95
- data/lib/google/apis/core/upload.rb +59 -84
- data/lib/google/apis/generator/model.rb +2 -0
- data/lib/google/apis/generator/templates/_representation.tmpl +1 -1
- data/lib/google/apis/generator/templates/service.rb.tmpl +1 -0
- data/lib/google/apis/options.rb +24 -12
- data/lib/google/apis/version.rb +1 -1
- data/samples/web/Gemfile +0 -1
- metadata +39 -37
- data/lib/google/apis/core/http_client_adapter.rb +0 -82
- data/third_party/hurley_patches.rb +0 -103
@@ -54,8 +54,12 @@ module Google
|
|
54
54
|
def prepare!
|
55
55
|
query[FIELDS_PARAM] = normalize_fields_param(query[FIELDS_PARAM]) if query.key?(FIELDS_PARAM)
|
56
56
|
if request_representation && request_object
|
57
|
-
header[
|
58
|
-
|
57
|
+
header['Content-Type'] ||= JSON_CONTENT_TYPE
|
58
|
+
if options && options.skip_serialization
|
59
|
+
self.body = request_object
|
60
|
+
else
|
61
|
+
self.body = request_representation.new(request_object).to_json(user_options: { skip_undefined: true })
|
62
|
+
end
|
59
63
|
end
|
60
64
|
super
|
61
65
|
end
|
@@ -71,6 +75,7 @@ module Google
|
|
71
75
|
# noinspection RubyUnusedLocalVariable
|
72
76
|
def decode_response_body(content_type, body)
|
73
77
|
return super unless response_representation
|
78
|
+
return super if options && options.skip_deserialization
|
74
79
|
return super if content_type.nil?
|
75
80
|
return nil unless content_type.start_with?(JSON_CONTENT_TYPE)
|
76
81
|
instance = response_class.new
|
@@ -82,7 +87,7 @@ module Google
|
|
82
87
|
#
|
83
88
|
# @param [Fixnum] status
|
84
89
|
# HTTP status code of response
|
85
|
-
# @param [
|
90
|
+
# @param [Hash] header
|
86
91
|
# HTTP response headers
|
87
92
|
# @param [String] body
|
88
93
|
# HTTP response body
|
@@ -19,11 +19,9 @@ require 'google/apis/core/api_command'
|
|
19
19
|
require 'google/apis/core/batch'
|
20
20
|
require 'google/apis/core/upload'
|
21
21
|
require 'google/apis/core/download'
|
22
|
-
require 'google/apis/core/http_client_adapter'
|
23
22
|
require 'google/apis/options'
|
24
23
|
require 'googleauth'
|
25
|
-
require '
|
26
|
-
require 'hurley/addressable'
|
24
|
+
require 'httpclient'
|
27
25
|
|
28
26
|
module Google
|
29
27
|
module Apis
|
@@ -86,6 +84,8 @@ module Google
|
|
86
84
|
# Base service for all APIs. Not to be used directly.
|
87
85
|
#
|
88
86
|
class BaseService
|
87
|
+
include Logging
|
88
|
+
|
89
89
|
# Root URL (host/port) for the API
|
90
90
|
# @return [Addressable::URI]
|
91
91
|
attr_accessor :root_url
|
@@ -103,7 +103,7 @@ module Google
|
|
103
103
|
attr_accessor :batch_path
|
104
104
|
|
105
105
|
# HTTP client
|
106
|
-
# @return [
|
106
|
+
# @return [HTTPClient]
|
107
107
|
attr_accessor :client
|
108
108
|
|
109
109
|
# General settings
|
@@ -164,10 +164,10 @@ module Google
|
|
164
164
|
batch_command.options = request_options.merge(options)
|
165
165
|
apply_command_defaults(batch_command)
|
166
166
|
begin
|
167
|
-
|
167
|
+
start_batch(batch_command)
|
168
168
|
yield self
|
169
169
|
ensure
|
170
|
-
|
170
|
+
end_batch
|
171
171
|
end
|
172
172
|
batch_command.execute(client)
|
173
173
|
end
|
@@ -196,16 +196,16 @@ module Google
|
|
196
196
|
batch_command.options = request_options.merge(options)
|
197
197
|
apply_command_defaults(batch_command)
|
198
198
|
begin
|
199
|
-
|
199
|
+
start_batch(batch_command)
|
200
200
|
yield self
|
201
201
|
ensure
|
202
|
-
|
202
|
+
end_batch
|
203
203
|
end
|
204
204
|
batch_command.execute(client)
|
205
205
|
end
|
206
206
|
|
207
207
|
# Get the current HTTP client
|
208
|
-
# @return [
|
208
|
+
# @return [HTTPClient]
|
209
209
|
def client
|
210
210
|
@client ||= new_client
|
211
211
|
end
|
@@ -347,6 +347,7 @@ module Google
|
|
347
347
|
def execute_or_queue_command(command, &callback)
|
348
348
|
batch_command = current_batch
|
349
349
|
if batch_command
|
350
|
+
fail "Can not combine services in a batch" if Thread.current[:google_api_batch_service] != self
|
350
351
|
batch_command.add(command, &callback)
|
351
352
|
nil
|
352
353
|
else
|
@@ -374,20 +375,48 @@ module Google
|
|
374
375
|
!current_batch.nil?
|
375
376
|
end
|
376
377
|
|
378
|
+
# Start a new thread-local batch context
|
379
|
+
# @param [Google::Apis::Core::BatchCommand] cmd
|
380
|
+
def start_batch(cmd)
|
381
|
+
fail "Batch already in progress" if batch?
|
382
|
+
Thread.current[:google_api_batch] = cmd
|
383
|
+
Thread.current[:google_api_batch_service] = self
|
384
|
+
end
|
385
|
+
|
386
|
+
# Clear thread-local batch context
|
387
|
+
def end_batch
|
388
|
+
Thread.current[:google_api_batch] = nil
|
389
|
+
Thread.current[:google_api_batch_service] = nil
|
390
|
+
end
|
391
|
+
|
377
392
|
# Create a new HTTP client
|
378
|
-
# @return [
|
393
|
+
# @return [HTTPClient]
|
379
394
|
def new_client
|
380
|
-
client =
|
381
|
-
|
382
|
-
client.
|
383
|
-
client.
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
395
|
+
client = ::HTTPClient.new
|
396
|
+
|
397
|
+
client.transparent_gzip_decompression = true
|
398
|
+
client.proxy = client_options.proxy_url if client_options.proxy_url
|
399
|
+
|
400
|
+
if client_options.open_timeout_sec
|
401
|
+
client.connect_timeout = client_options.open_timeout_sec
|
402
|
+
end
|
403
|
+
|
404
|
+
if client_options.read_timeout_sec
|
405
|
+
client.receive_timeout = client_options.read_timeout_sec
|
406
|
+
end
|
407
|
+
|
408
|
+
if client_options.send_timeout_sec
|
409
|
+
client.send_timeout = client_options.send_timeout_sec
|
410
|
+
end
|
411
|
+
|
412
|
+
client.follow_redirect_count = 5
|
413
|
+
client.default_header = { 'User-Agent' => user_agent }
|
414
|
+
|
415
|
+
client.debug_dev = logger if client_options.log_http_requests
|
388
416
|
client
|
389
417
|
end
|
390
418
|
|
419
|
+
|
391
420
|
# Build the user agent header
|
392
421
|
# @return [String]
|
393
422
|
def user_agent
|
@@ -25,19 +25,19 @@
|
|
25
25
|
# See the License for the specific language governing permissions and
|
26
26
|
# limitations under the License.
|
27
27
|
|
28
|
-
require 'hurley'
|
29
28
|
require 'google/apis/core/multipart'
|
30
29
|
require 'google/apis/core/http_command'
|
31
30
|
require 'google/apis/core/upload'
|
32
31
|
require 'google/apis/core/download'
|
32
|
+
require 'google/apis/core/composite_io'
|
33
33
|
require 'addressable/uri'
|
34
34
|
require 'securerandom'
|
35
|
+
|
35
36
|
module Google
|
36
37
|
module Apis
|
37
38
|
module Core
|
38
39
|
# Wrapper request for batching multiple calls in a single server request
|
39
40
|
class BatchCommand < HttpCommand
|
40
|
-
BATCH_BOUNDARY = 'RubyApiBatchRequest'.freeze
|
41
41
|
MULTIPART_MIXED = 'multipart/mixed'
|
42
42
|
|
43
43
|
# @param [symbol] method
|
@@ -81,7 +81,7 @@ module Google
|
|
81
81
|
parts.each_index do |index|
|
82
82
|
response = deserializer.to_http_response(parts[index])
|
83
83
|
outer_header = response.shift
|
84
|
-
call_id = header_to_id(outer_header[
|
84
|
+
call_id = header_to_id(outer_header['Content-ID'].first) || index
|
85
85
|
call, callback = @calls[call_id]
|
86
86
|
begin
|
87
87
|
result = call.process_response(*response) unless call.nil?
|
@@ -106,17 +106,16 @@ module Google
|
|
106
106
|
fail BatchError, 'Cannot make an empty batch request' if @calls.empty?
|
107
107
|
|
108
108
|
serializer = CallSerializer.new
|
109
|
-
multipart = Multipart.new(
|
109
|
+
multipart = Multipart.new(content_type: MULTIPART_MIXED)
|
110
110
|
@calls.each_index do |index|
|
111
111
|
call, _ = @calls[index]
|
112
112
|
content_id = id_to_header(index)
|
113
|
-
io = serializer.
|
114
|
-
multipart.add_upload(io, content_id: content_id)
|
113
|
+
io = serializer.to_part(call)
|
114
|
+
multipart.add_upload(io, content_type: 'application/http', content_id: content_id)
|
115
115
|
end
|
116
116
|
self.body = multipart.assemble
|
117
117
|
|
118
|
-
header[
|
119
|
-
header[:content_length] = "#{body.length}"
|
118
|
+
header['Content-Type'] = multipart.content_type
|
120
119
|
super
|
121
120
|
end
|
122
121
|
|
@@ -155,24 +154,20 @@ module Google
|
|
155
154
|
# Serializes a command for embedding in a multipart batch request
|
156
155
|
# @private
|
157
156
|
class CallSerializer
|
158
|
-
HTTP_CONTENT_TYPE = 'application/http'
|
159
|
-
|
160
157
|
##
|
161
158
|
# Serialize a single batched call for assembling the multipart message
|
162
159
|
#
|
163
160
|
# @param [Google::Apis::Core::HttpCommand] call
|
164
161
|
# the call to serialize.
|
165
|
-
# @return [
|
162
|
+
# @return [IO]
|
166
163
|
# the serialized request
|
167
|
-
def
|
164
|
+
def to_part(call)
|
168
165
|
call.prepare!
|
169
166
|
parts = []
|
170
167
|
parts << build_head(call)
|
171
168
|
parts << build_body(call) unless call.body.nil?
|
172
169
|
length = parts.inject(0) { |a, e| a + e.length }
|
173
|
-
|
174
|
-
HTTP_CONTENT_TYPE,
|
175
|
-
'ruby-api-request')
|
170
|
+
Google::Apis::Core::CompositeIO.new(*parts)
|
176
171
|
end
|
177
172
|
|
178
173
|
protected
|
@@ -201,7 +196,7 @@ module Google
|
|
201
196
|
#
|
202
197
|
# @param [String] call_response
|
203
198
|
# the response to parse.
|
204
|
-
# @return [Array<(Fixnum,
|
199
|
+
# @return [Array<(Fixnum, Hash, String)>]
|
205
200
|
# Status, header, and response body.
|
206
201
|
def to_http_response(call_response)
|
207
202
|
outer_header, outer_body = split_header_and_body(call_response)
|
@@ -218,10 +213,10 @@ module Google
|
|
218
213
|
#
|
219
214
|
# @param [String] response
|
220
215
|
# the response to parse.
|
221
|
-
# @return [Array<(
|
216
|
+
# @return [Array<(HTTP::Message::Headers, String)>]
|
222
217
|
# the header and the body, separately.
|
223
218
|
def split_header_and_body(response)
|
224
|
-
header =
|
219
|
+
header = HTTP::Message::Headers.new
|
225
220
|
payload = response.lstrip
|
226
221
|
while payload
|
227
222
|
line, payload = payload.split(/\n/, 2)
|
@@ -0,0 +1,97 @@
|
|
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
|
+
# Copyright 2015 Google Inc.
|
15
|
+
#
|
16
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
17
|
+
# you may not use this file except in compliance with the License.
|
18
|
+
# You may obtain a copy of the License at
|
19
|
+
#
|
20
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
21
|
+
#
|
22
|
+
# Unless required by applicable law or agreed to in writing, software
|
23
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
24
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
25
|
+
# See the License for the specific language governing permissions and
|
26
|
+
# limitations under the License.
|
27
|
+
|
28
|
+
require 'google/apis/core/http_command'
|
29
|
+
require 'google/apis/core/upload'
|
30
|
+
require 'google/apis/core/download'
|
31
|
+
require 'addressable/uri'
|
32
|
+
require 'securerandom'
|
33
|
+
module Google
|
34
|
+
module Apis
|
35
|
+
module Core
|
36
|
+
class CompositeIO
|
37
|
+
def initialize(*ios)
|
38
|
+
@ios = ios.flatten
|
39
|
+
@pos = 0
|
40
|
+
@index = 0
|
41
|
+
@sizes = @ios.map(&:size)
|
42
|
+
end
|
43
|
+
|
44
|
+
def read(length = nil, buf = nil)
|
45
|
+
buf = buf ? buf.replace('') : ''
|
46
|
+
|
47
|
+
begin
|
48
|
+
io = @ios[@index]
|
49
|
+
break if io.nil?
|
50
|
+
result = io.read(length)
|
51
|
+
if result
|
52
|
+
buf << result
|
53
|
+
if length
|
54
|
+
length -= result.length
|
55
|
+
break if length == 0
|
56
|
+
end
|
57
|
+
end
|
58
|
+
@index += 1
|
59
|
+
end while @index < @ios.length
|
60
|
+
buf.length > 0 ? buf : nil
|
61
|
+
end
|
62
|
+
|
63
|
+
def size
|
64
|
+
@sizes.reduce(:+)
|
65
|
+
end
|
66
|
+
|
67
|
+
alias_method :length, :size
|
68
|
+
|
69
|
+
def pos
|
70
|
+
@pos
|
71
|
+
end
|
72
|
+
|
73
|
+
def pos=(pos)
|
74
|
+
fail ArgumentError, "Position can not be negative" if pos < 0
|
75
|
+
@pos = pos
|
76
|
+
new_index = nil
|
77
|
+
@ios.each_with_index do |io,idx|
|
78
|
+
size = io.size
|
79
|
+
if pos <= size
|
80
|
+
new_index ||= idx
|
81
|
+
io.pos = pos
|
82
|
+
pos = 0
|
83
|
+
else
|
84
|
+
io.pos = size
|
85
|
+
pos -= size
|
86
|
+
end
|
87
|
+
end
|
88
|
+
@index = new_index unless new_index.nil?
|
89
|
+
end
|
90
|
+
|
91
|
+
def rewind
|
92
|
+
self.pos = 0
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -12,7 +12,6 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
require 'google/apis/core/multipart'
|
16
15
|
require 'google/apis/core/api_command'
|
17
16
|
require 'google/apis/errors'
|
18
17
|
require 'addressable/uri'
|
@@ -22,7 +21,7 @@ module Google
|
|
22
21
|
module Core
|
23
22
|
# Streaming/resumable media download support
|
24
23
|
class DownloadCommand < ApiCommand
|
25
|
-
RANGE_HEADER = '
|
24
|
+
RANGE_HEADER = 'Range'
|
26
25
|
OK_STATUS = [200, 201, 206]
|
27
26
|
|
28
27
|
# File or IO to write content to
|
@@ -58,7 +57,7 @@ module Google
|
|
58
57
|
# of file content.
|
59
58
|
#
|
60
59
|
# @private
|
61
|
-
# @param [
|
60
|
+
# @param [HTTPClient] client
|
62
61
|
# HTTP client
|
63
62
|
# @yield [result, err] Result or error if block supplied
|
64
63
|
# @return [Object]
|
@@ -66,40 +65,45 @@ module Google
|
|
66
65
|
# @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
|
67
66
|
# @raise [Google::Apis::AuthorizationError] Authorization is required
|
68
67
|
def execute_once(client, &block)
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
68
|
+
request_header = header.dup
|
69
|
+
apply_request_options(request_header)
|
70
|
+
|
71
|
+
check_if_rewind_needed = false
|
72
|
+
if @offset > 0
|
73
|
+
logger.debug { sprintf('Resuming download from offset %d', @offset) }
|
74
|
+
request_header[RANGE_HEADER] = sprintf('bytes=%d-', @offset)
|
75
|
+
check_if_rewind_needed = true
|
76
|
+
end
|
77
|
+
|
78
|
+
http_res = client.get(url.to_s,
|
79
|
+
query: query,
|
80
|
+
header: request_header,
|
81
|
+
follow_redirect: true) do |res, chunk|
|
82
|
+
status = res.http_header.status_code.to_i
|
83
|
+
if OK_STATUS.include?(status)
|
84
|
+
if check_if_rewind_needed && status != 206
|
80
85
|
# Oh no! Requested a chunk, but received the entire content
|
81
86
|
# Attempt to rewind the stream
|
82
87
|
@download_io.rewind
|
83
88
|
check_if_rewind_needed = false
|
84
89
|
end
|
85
|
-
|
86
|
-
logger.debug { sprintf('Writing chunk (%d bytes)', chunk.length) }
|
87
|
-
@offset += chunk.length
|
90
|
+
# logger.debug { sprintf('Writing chunk (%d bytes, %d total)', chunk.length, bytes_read) }
|
88
91
|
@download_io.write(chunk)
|
89
|
-
@
|
92
|
+
@offset += chunk.length
|
90
93
|
end
|
91
94
|
end
|
92
95
|
|
93
|
-
|
94
|
-
check_status(response.status_code, response.body) unless OK_STATUS.include?(response.status_code.to_i)
|
96
|
+
@download_io.flush
|
95
97
|
|
96
98
|
if @close_io_on_finish
|
97
99
|
result = nil
|
98
100
|
else
|
99
101
|
result = @download_io
|
100
102
|
end
|
103
|
+
check_status(http_res.status.to_i, http_res.header, http_res.body)
|
101
104
|
success(result, &block)
|
102
105
|
rescue => e
|
106
|
+
@download_io.flush
|
103
107
|
error(e, rethrow: true, &block)
|
104
108
|
end
|
105
109
|
end
|
@@ -17,9 +17,6 @@ require 'addressable/template'
|
|
17
17
|
require 'google/apis/options'
|
18
18
|
require 'google/apis/errors'
|
19
19
|
require 'retriable'
|
20
|
-
require 'hurley'
|
21
|
-
require 'hurley/addressable'
|
22
|
-
require 'hurley_patches'
|
23
20
|
require 'google/apis/core/logging'
|
24
21
|
require 'pp'
|
25
22
|
|
@@ -41,7 +38,7 @@ module Google
|
|
41
38
|
attr_accessor :url
|
42
39
|
|
43
40
|
# HTTP headers
|
44
|
-
# @return [
|
41
|
+
# @return [Hash]
|
45
42
|
attr_accessor :header
|
46
43
|
|
47
44
|
# Request body
|
@@ -53,7 +50,7 @@ module Google
|
|
53
50
|
attr_accessor :method
|
54
51
|
|
55
52
|
# HTTP Client
|
56
|
-
# @return [
|
53
|
+
# @return [HTTPClient]
|
57
54
|
attr_accessor :connection
|
58
55
|
|
59
56
|
# Query params
|
@@ -75,7 +72,7 @@ module Google
|
|
75
72
|
self.url = url
|
76
73
|
self.url = Addressable::Template.new(url) if url.is_a?(String)
|
77
74
|
self.method = method
|
78
|
-
self.header =
|
75
|
+
self.header = Hash.new
|
79
76
|
self.body = body
|
80
77
|
self.query = {}
|
81
78
|
self.params = {}
|
@@ -83,7 +80,7 @@ module Google
|
|
83
80
|
|
84
81
|
# Execute the command, retrying as necessary
|
85
82
|
#
|
86
|
-
# @param [
|
83
|
+
# @param [HTTPClient] client
|
87
84
|
# HTTP client
|
88
85
|
# @yield [result, err] Result or error if block supplied
|
89
86
|
# @return [Object]
|
@@ -142,8 +139,12 @@ module Google
|
|
142
139
|
# @private
|
143
140
|
# @return [void]
|
144
141
|
def prepare!
|
145
|
-
|
146
|
-
|
142
|
+
normalize_unicode = true
|
143
|
+
if options
|
144
|
+
header.update(options.header) if options.header
|
145
|
+
normalize_unicode = options.normalize_unicode
|
146
|
+
end
|
147
|
+
self.url = url.expand(params, nil, normalize_unicode) if url.is_a?(Addressable::Template)
|
147
148
|
url.query_values = query.merge(url.query_values || {})
|
148
149
|
|
149
150
|
if allow_form_encoding?
|
@@ -154,6 +155,9 @@ module Google
|
|
154
155
|
else
|
155
156
|
@form_encoded = false
|
156
157
|
end
|
158
|
+
|
159
|
+
self.body = '' unless self.body
|
160
|
+
|
157
161
|
end
|
158
162
|
|
159
163
|
# Release any resources used by this command
|
@@ -166,7 +170,7 @@ module Google
|
|
166
170
|
#
|
167
171
|
# @param [Fixnum] status
|
168
172
|
# HTTP status code of response
|
169
|
-
# @param [
|
173
|
+
# @param [Hash] header
|
170
174
|
# Response headers
|
171
175
|
# @param [String, #read] body
|
172
176
|
# Response body
|
@@ -177,7 +181,7 @@ module Google
|
|
177
181
|
# @raise [Google::Apis::AuthorizationError] Authorization is required
|
178
182
|
def process_response(status, header, body)
|
179
183
|
check_status(status, header, body)
|
180
|
-
decode_response_body(header[
|
184
|
+
decode_response_body(header['Content-Type'].first, body)
|
181
185
|
end
|
182
186
|
|
183
187
|
# Check the response and raise error if needed
|
@@ -185,7 +189,7 @@ module Google
|
|
185
189
|
# @param [Fixnum] status
|
186
190
|
# HTTP status code of response
|
187
191
|
# @param
|
188
|
-
# @param [
|
192
|
+
# @param [Hash] header
|
189
193
|
# HTTP response headers
|
190
194
|
# @param [String] body
|
191
195
|
# HTTP response body
|
@@ -201,11 +205,14 @@ module Google
|
|
201
205
|
when 200...300
|
202
206
|
nil
|
203
207
|
when 301, 302, 303, 307
|
204
|
-
message ||= sprintf('Redirect to %s', header[
|
208
|
+
message ||= sprintf('Redirect to %s', header['Location'])
|
205
209
|
raise Google::Apis::RedirectError.new(message, status_code: status, header: header, body: body)
|
206
210
|
when 401
|
207
211
|
message ||= 'Unauthorized'
|
208
212
|
raise Google::Apis::AuthorizationError.new(message, status_code: status, header: header, body: body)
|
213
|
+
when 429
|
214
|
+
message ||= 'Rate limit exceeded'
|
215
|
+
raise Google::Apis::RateLimitError.new(message, status_code: status, header: header, body: body)
|
209
216
|
when 304, 400, 402...500
|
210
217
|
message ||= 'Invalid request'
|
211
218
|
raise Google::Apis::ClientError.new(message, status_code: status, header: header, body: body)
|
@@ -251,7 +258,16 @@ module Google
|
|
251
258
|
# @raise [StandardError] if no block
|
252
259
|
def error(err, rethrow: false, &block)
|
253
260
|
logger.debug { sprintf('Error - %s', PP.pp(err, '')) }
|
254
|
-
|
261
|
+
if err.is_a?(HTTPClient::BadResponseError)
|
262
|
+
begin
|
263
|
+
res = err.res
|
264
|
+
check_status(res.status.to_i, res.header, res.body)
|
265
|
+
rescue Google::Apis::Error => e
|
266
|
+
err = e
|
267
|
+
end
|
268
|
+
elsif err.is_a?(HTTPClient::TimeoutError) || err.is_a?(SocketError)
|
269
|
+
err = Google::Apis::TransmissionError.new(err)
|
270
|
+
end
|
255
271
|
block.call(nil, err) if block_given?
|
256
272
|
fail err if rethrow || block.nil?
|
257
273
|
end
|
@@ -259,7 +275,7 @@ module Google
|
|
259
275
|
# Execute the command once.
|
260
276
|
#
|
261
277
|
# @private
|
262
|
-
# @param [
|
278
|
+
# @param [HTTPClient] client
|
263
279
|
# HTTP client
|
264
280
|
# @return [Object]
|
265
281
|
# @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
|
@@ -269,21 +285,18 @@ module Google
|
|
269
285
|
body.rewind if body.respond_to?(:rewind)
|
270
286
|
begin
|
271
287
|
logger.debug { sprintf('Sending HTTP %s %s', method, url) }
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
logger.debug { response.status_code }
|
285
|
-
logger.debug { response.inspect }
|
286
|
-
response = process_response(response.status_code, response.header, response.body)
|
288
|
+
request_header = header.dup
|
289
|
+
apply_request_options(request_header)
|
290
|
+
|
291
|
+
http_res = client.request(method.to_s.upcase,
|
292
|
+
url.to_s,
|
293
|
+
query: nil,
|
294
|
+
body: body,
|
295
|
+
header: request_header,
|
296
|
+
follow_redirect: true)
|
297
|
+
logger.debug { http_res.status }
|
298
|
+
logger.debug { http_res.inspect }
|
299
|
+
response = process_response(http_res.status.to_i, http_res.header, http_res.body)
|
287
300
|
success(response)
|
288
301
|
rescue => e
|
289
302
|
logger.debug { sprintf('Caught error %s', e) }
|
@@ -292,18 +305,16 @@ module Google
|
|
292
305
|
end
|
293
306
|
|
294
307
|
# Update the request with any specified options.
|
295
|
-
# @param [
|
296
|
-
# HTTP
|
308
|
+
# @param [Hash] header
|
309
|
+
# HTTP headers
|
297
310
|
# @return [void]
|
298
|
-
def apply_request_options(
|
311
|
+
def apply_request_options(req_header)
|
299
312
|
if options.authorization.respond_to?(:apply!)
|
300
|
-
options.authorization.apply!(
|
313
|
+
options.authorization.apply!(req_header)
|
301
314
|
elsif options.authorization.is_a?(String)
|
302
|
-
|
315
|
+
req_header['Authorization'] = sprintf('Bearer %s', options.authorization)
|
303
316
|
end
|
304
|
-
|
305
|
-
req.options.timeout = options.timeout_sec
|
306
|
-
req.options.open_timeout = options.open_timeout_sec
|
317
|
+
req_header.update(header)
|
307
318
|
end
|
308
319
|
|
309
320
|
def allow_form_encoding?
|