google-api-client 0.52.0 → 0.53.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (264) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +0 -14
  3. data/CHANGELOG.md +6 -0
  4. data/OVERVIEW.md +36 -27
  5. data/generated/google/apis/accesscontextmanager_v1.rb +1 -1
  6. data/generated/google/apis/accesscontextmanager_v1/classes.rb +326 -0
  7. data/generated/google/apis/accesscontextmanager_v1/representations.rb +139 -0
  8. data/generated/google/apis/admin_directory_v1.rb +1 -1
  9. data/generated/google/apis/admin_directory_v1/service.rb +2 -2
  10. data/generated/google/apis/analyticsadmin_v1alpha.rb +2 -2
  11. data/generated/google/apis/analyticsadmin_v1alpha/classes.rb +8 -0
  12. data/generated/google/apis/analyticsadmin_v1alpha/representations.rb +1 -0
  13. data/generated/google/apis/analyticsadmin_v1alpha/service.rb +12 -1
  14. data/{lib/google/apis/core/logging.rb → generated/google/apis/apigateway_v1.rb} +14 -10
  15. data/generated/google/apis/apigateway_v1/classes.rb +1116 -0
  16. data/generated/google/apis/apigateway_v1/representations.rb +442 -0
  17. data/generated/google/apis/apigateway_v1/service.rb +1172 -0
  18. data/generated/google/apis/apigateway_v1beta.rb +1 -1
  19. data/generated/google/apis/apigateway_v1beta/classes.rb +19 -8
  20. data/generated/google/apis/apigateway_v1beta/representations.rb +1 -0
  21. data/generated/google/apis/apigee_v1.rb +1 -1
  22. data/generated/google/apis/apigee_v1/classes.rb +24 -22
  23. data/generated/google/apis/apigee_v1/service.rb +50 -48
  24. data/generated/google/apis/artifactregistry_v1.rb +38 -0
  25. data/generated/google/apis/artifactregistry_v1/classes.rb +242 -0
  26. data/generated/google/apis/artifactregistry_v1/representations.rb +116 -0
  27. data/generated/google/apis/artifactregistry_v1/service.rb +210 -0
  28. data/generated/google/apis/artifactregistry_v1beta1.rb +1 -1
  29. data/generated/google/apis/artifactregistry_v1beta1/classes.rb +0 -120
  30. data/generated/google/apis/artifactregistry_v1beta1/representations.rb +0 -62
  31. data/generated/google/apis/artifactregistry_v1beta2.rb +1 -1
  32. data/generated/google/apis/artifactregistry_v1beta2/classes.rb +0 -120
  33. data/generated/google/apis/artifactregistry_v1beta2/representations.rb +0 -62
  34. data/generated/google/apis/chat_v1.rb +1 -1
  35. data/generated/google/apis/chat_v1/service.rb +132 -0
  36. data/generated/google/apis/cloudasset_v1.rb +1 -1
  37. data/generated/google/apis/cloudasset_v1/classes.rb +326 -0
  38. data/generated/google/apis/cloudasset_v1/representations.rb +139 -0
  39. data/generated/google/apis/cloudasset_v1beta1.rb +1 -1
  40. data/generated/google/apis/cloudasset_v1beta1/classes.rb +326 -0
  41. data/generated/google/apis/cloudasset_v1beta1/representations.rb +139 -0
  42. data/generated/google/apis/cloudasset_v1p5beta1.rb +1 -1
  43. data/generated/google/apis/cloudasset_v1p5beta1/classes.rb +326 -0
  44. data/generated/google/apis/cloudasset_v1p5beta1/representations.rb +139 -0
  45. data/generated/google/apis/cloudbuild_v1.rb +1 -1
  46. data/generated/google/apis/cloudbuild_v1/classes.rb +3 -3
  47. data/generated/google/apis/cloudbuild_v1alpha1.rb +1 -1
  48. data/generated/google/apis/cloudbuild_v1alpha1/classes.rb +3 -3
  49. data/generated/google/apis/cloudbuild_v1alpha2.rb +1 -1
  50. data/generated/google/apis/cloudbuild_v1alpha2/classes.rb +3 -3
  51. data/generated/google/apis/cloudidentity_v1beta1.rb +1 -1
  52. data/generated/google/apis/cloudidentity_v1beta1/classes.rb +1 -1
  53. data/generated/google/apis/cloudresourcemanager_v1.rb +1 -1
  54. data/generated/google/apis/cloudresourcemanager_v1/classes.rb +0 -26
  55. data/generated/google/apis/cloudresourcemanager_v1/representations.rb +0 -24
  56. data/generated/google/apis/cloudresourcemanager_v1beta1.rb +1 -1
  57. data/generated/google/apis/cloudresourcemanager_v1beta1/classes.rb +0 -26
  58. data/generated/google/apis/cloudresourcemanager_v1beta1/representations.rb +0 -24
  59. data/generated/google/apis/cloudresourcemanager_v2.rb +1 -1
  60. data/generated/google/apis/cloudresourcemanager_v2/classes.rb +0 -26
  61. data/generated/google/apis/cloudresourcemanager_v2/representations.rb +0 -24
  62. data/generated/google/apis/cloudresourcemanager_v2beta1.rb +1 -1
  63. data/generated/google/apis/cloudresourcemanager_v2beta1/classes.rb +0 -26
  64. data/generated/google/apis/cloudresourcemanager_v2beta1/representations.rb +0 -24
  65. data/generated/google/apis/container_v1.rb +1 -1
  66. data/generated/google/apis/container_v1/classes.rb +7 -7
  67. data/generated/google/apis/container_v1beta1.rb +1 -1
  68. data/generated/google/apis/container_v1beta1/classes.rb +7 -7
  69. data/generated/google/apis/content_v2_1.rb +1 -1
  70. data/generated/google/apis/content_v2_1/classes.rb +434 -0
  71. data/generated/google/apis/content_v2_1/representations.rb +187 -0
  72. data/generated/google/apis/content_v2_1/service.rb +116 -0
  73. data/generated/google/apis/datacatalog_v1beta1.rb +1 -1
  74. data/generated/google/apis/datacatalog_v1beta1/classes.rb +6 -0
  75. data/generated/google/apis/datacatalog_v1beta1/representations.rb +1 -0
  76. data/generated/google/apis/dataflow_v1b3.rb +1 -1
  77. data/generated/google/apis/datalabeling_v1beta1.rb +1 -1
  78. data/generated/google/apis/dataproc_v1.rb +1 -1
  79. data/generated/google/apis/dataproc_v1/classes.rb +29 -1
  80. data/generated/google/apis/dataproc_v1/representations.rb +14 -0
  81. data/generated/google/apis/dataproc_v1/service.rb +42 -0
  82. data/generated/google/apis/dataproc_v1beta2.rb +1 -1
  83. data/generated/google/apis/dataproc_v1beta2/classes.rb +29 -1
  84. data/generated/google/apis/dataproc_v1beta2/representations.rb +14 -0
  85. data/generated/google/apis/dataproc_v1beta2/service.rb +42 -0
  86. data/generated/google/apis/dialogflow_v2.rb +1 -1
  87. data/generated/google/apis/dialogflow_v2/classes.rb +4041 -678
  88. data/generated/google/apis/dialogflow_v2/representations.rb +1851 -298
  89. data/generated/google/apis/dialogflow_v2beta1.rb +1 -1
  90. data/generated/google/apis/dialogflow_v2beta1/classes.rb +4047 -684
  91. data/generated/google/apis/dialogflow_v2beta1/representations.rb +1862 -309
  92. data/generated/google/apis/dialogflow_v3.rb +1 -1
  93. data/generated/google/apis/dialogflow_v3/classes.rb +3120 -311
  94. data/generated/google/apis/dialogflow_v3/representations.rb +2002 -617
  95. data/generated/google/apis/dialogflow_v3/service.rb +408 -0
  96. data/generated/google/apis/dialogflow_v3beta1.rb +1 -1
  97. data/generated/google/apis/dialogflow_v3beta1/classes.rb +5145 -2336
  98. data/generated/google/apis/dialogflow_v3beta1/representations.rb +1729 -344
  99. data/generated/google/apis/dialogflow_v3beta1/service.rb +408 -0
  100. data/generated/google/apis/dlp_v2.rb +1 -1
  101. data/generated/google/apis/dlp_v2/service.rb +3 -9
  102. data/generated/google/apis/documentai_v1beta2.rb +1 -1
  103. data/generated/google/apis/documentai_v1beta2/classes.rb +5 -92
  104. data/generated/google/apis/documentai_v1beta2/representations.rb +2 -15
  105. data/generated/google/apis/documentai_v1beta3.rb +1 -1
  106. data/generated/google/apis/documentai_v1beta3/classes.rb +5 -92
  107. data/generated/google/apis/documentai_v1beta3/representations.rb +2 -15
  108. data/generated/google/apis/gameservices_v1.rb +1 -1
  109. data/generated/google/apis/gameservices_v1/service.rb +14 -14
  110. data/generated/google/apis/gameservices_v1beta.rb +1 -1
  111. data/generated/google/apis/gameservices_v1beta/service.rb +14 -14
  112. data/generated/google/apis/localservices_v1.rb +4 -1
  113. data/generated/google/apis/manufacturers_v1.rb +1 -1
  114. data/generated/google/apis/manufacturers_v1/classes.rb +2 -2
  115. data/generated/google/apis/monitoring_v3.rb +1 -1
  116. data/generated/google/apis/monitoring_v3/classes.rb +2 -2
  117. data/generated/google/apis/notebooks_v1.rb +1 -1
  118. data/generated/google/apis/notebooks_v1/classes.rb +13 -0
  119. data/generated/google/apis/notebooks_v1/representations.rb +12 -0
  120. data/generated/google/apis/notebooks_v1/service.rb +34 -0
  121. data/generated/google/apis/prod_tt_sasportal_v1alpha1.rb +1 -1
  122. data/generated/google/apis/prod_tt_sasportal_v1alpha1/classes.rb +0 -37
  123. data/generated/google/apis/prod_tt_sasportal_v1alpha1/representations.rb +0 -18
  124. data/generated/google/apis/recommendationengine_v1beta1.rb +1 -1
  125. data/generated/google/apis/recommendationengine_v1beta1/service.rb +2 -1
  126. data/generated/google/apis/securitycenter_v1.rb +1 -1
  127. data/generated/google/apis/securitycenter_v1/classes.rb +18 -10
  128. data/generated/google/apis/securitycenter_v1/representations.rb +1 -0
  129. data/generated/google/apis/securitycenter_v1/service.rb +30 -30
  130. data/generated/google/apis/securitycenter_v1beta1.rb +1 -1
  131. data/generated/google/apis/securitycenter_v1beta1/classes.rb +7 -0
  132. data/generated/google/apis/securitycenter_v1beta1/representations.rb +1 -0
  133. data/generated/google/apis/securitycenter_v1beta2.rb +1 -1
  134. data/generated/google/apis/securitycenter_v1beta2/classes.rb +7 -0
  135. data/generated/google/apis/securitycenter_v1beta2/representations.rb +1 -0
  136. data/generated/google/apis/servicemanagement_v1.rb +1 -1
  137. data/generated/google/apis/servicemanagement_v1/classes.rb +11 -10
  138. data/generated/google/apis/sqladmin_v1beta4.rb +1 -1
  139. data/generated/google/apis/sqladmin_v1beta4/classes.rb +7 -7
  140. data/generated/google/apis/sqladmin_v1beta4/service.rb +4 -1
  141. data/generated/google/apis/storagetransfer_v1.rb +1 -1
  142. data/generated/google/apis/storagetransfer_v1/classes.rb +25 -0
  143. data/generated/google/apis/storagetransfer_v1/representations.rb +3 -0
  144. data/generated/google/apis/webmasters_v3/classes.rb +8 -0
  145. data/generated/google/apis/webmasters_v3/representations.rb +1 -0
  146. data/generated/google/apis/youtube_v3.rb +1 -1
  147. data/generated/google/apis/youtube_v3/classes.rb +18 -143
  148. data/generated/google/apis/youtube_v3/representations.rb +0 -57
  149. data/generated/google/apis/youtube_v3/service.rb +0 -43
  150. data/lib/google/apis/version.rb +1 -23
  151. metadata +27 -263
  152. data/.github/CONTRIBUTING.md +0 -31
  153. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -36
  154. data/.github/ISSUE_TEMPLATE/feature_request.md +0 -21
  155. data/.github/ISSUE_TEMPLATE/support_request.md +0 -7
  156. data/.github/workflows/autoapprove.yml +0 -49
  157. data/.github/workflows/release-please.yml +0 -57
  158. data/.gitignore +0 -23
  159. data/.kokoro/build.bat +0 -11
  160. data/.kokoro/build.sh +0 -4
  161. data/.kokoro/continuous/common.cfg +0 -25
  162. data/.kokoro/continuous/linux.cfg +0 -25
  163. data/.kokoro/continuous/osx.cfg +0 -8
  164. data/.kokoro/continuous/post.cfg +0 -30
  165. data/.kokoro/continuous/windows.cfg +0 -29
  166. data/.kokoro/osx.sh +0 -4
  167. data/.kokoro/presubmit/common.cfg +0 -24
  168. data/.kokoro/presubmit/linux.cfg +0 -24
  169. data/.kokoro/presubmit/osx.cfg +0 -8
  170. data/.kokoro/presubmit/windows.cfg +0 -29
  171. data/.kokoro/release.cfg +0 -94
  172. data/.kokoro/trampoline.bat +0 -10
  173. data/.kokoro/trampoline.sh +0 -4
  174. data/.repo-metadata.json +0 -5
  175. data/.rspec +0 -2
  176. data/.rubocop.yml +0 -12
  177. data/.rubocop_todo.yml +0 -63
  178. data/CODE_OF_CONDUCT.md +0 -43
  179. data/Gemfile +0 -55
  180. data/MIGRATING.md +0 -215
  181. data/README.md +0 -402
  182. data/Rakefile +0 -131
  183. data/api_list_config.yaml +0 -9
  184. data/api_names.yaml +0 -1082
  185. data/bin/generate-api +0 -194
  186. data/docs/api-keys.md +0 -20
  187. data/docs/auth.md +0 -53
  188. data/docs/client-secrets.md +0 -69
  189. data/docs/getting-started.md +0 -340
  190. data/docs/installation.md +0 -0
  191. data/docs/logging.md +0 -34
  192. data/docs/media-upload.md +0 -25
  193. data/docs/oauth-installed.md +0 -191
  194. data/docs/oauth-server.md +0 -133
  195. data/docs/oauth-web.md +0 -280
  196. data/docs/oauth.md +0 -268
  197. data/docs/pagination.md +0 -29
  198. data/docs/performance.md +0 -25
  199. data/google-api-client.gemspec +0 -36
  200. data/lib/google/api_client/auth/installed_app.rb +0 -143
  201. data/lib/google/api_client/auth/key_utils.rb +0 -94
  202. data/lib/google/api_client/auth/storage.rb +0 -104
  203. data/lib/google/api_client/auth/storages/file_store.rb +0 -57
  204. data/lib/google/api_client/auth/storages/redis_store.rb +0 -59
  205. data/lib/google/api_client/client_secrets.rb +0 -176
  206. data/lib/google/apis.rb +0 -58
  207. data/lib/google/apis/core/api_command.rb +0 -209
  208. data/lib/google/apis/core/base_service.rb +0 -447
  209. data/lib/google/apis/core/batch.rb +0 -236
  210. data/lib/google/apis/core/composite_io.rb +0 -97
  211. data/lib/google/apis/core/download.rb +0 -118
  212. data/lib/google/apis/core/hashable.rb +0 -44
  213. data/lib/google/apis/core/http_command.rb +0 -447
  214. data/lib/google/apis/core/json_representation.rb +0 -153
  215. data/lib/google/apis/core/multipart.rb +0 -135
  216. data/lib/google/apis/core/upload.rb +0 -273
  217. data/lib/google/apis/errors.rb +0 -89
  218. data/lib/google/apis/generator.rb +0 -71
  219. data/lib/google/apis/generator/annotator.rb +0 -339
  220. data/lib/google/apis/generator/helpers.rb +0 -76
  221. data/lib/google/apis/generator/model.rb +0 -187
  222. data/lib/google/apis/generator/template.rb +0 -124
  223. data/lib/google/apis/generator/templates/_class.tmpl +0 -43
  224. data/lib/google/apis/generator/templates/_method.tmpl +0 -92
  225. data/lib/google/apis/generator/templates/_representation.tmpl +0 -51
  226. data/lib/google/apis/generator/templates/_representation_stub.tmpl +0 -17
  227. data/lib/google/apis/generator/templates/_representation_type.tmpl +0 -10
  228. data/lib/google/apis/generator/templates/classes.rb.tmpl +0 -29
  229. data/lib/google/apis/generator/templates/module.rb.tmpl +0 -40
  230. data/lib/google/apis/generator/templates/representations.rb.tmpl +0 -32
  231. data/lib/google/apis/generator/templates/service.rb.tmpl +0 -61
  232. data/lib/google/apis/options.rb +0 -116
  233. data/rakelib/devsite/devsite_builder.rb +0 -126
  234. data/rakelib/devsite/link_checker.rb +0 -64
  235. data/rakelib/devsite/repo_metadata.rb +0 -56
  236. data/rakelib/metrics.rake +0 -22
  237. data/rakelib/rubocop.rake +0 -10
  238. data/rakelib/spec.rake +0 -11
  239. data/rakelib/yard.rake +0 -11
  240. data/samples/cli/.env +0 -4
  241. data/samples/cli/Gemfile +0 -7
  242. data/samples/cli/README.md +0 -51
  243. data/samples/cli/google-api-samples +0 -32
  244. data/samples/cli/lib/base_cli.rb +0 -95
  245. data/samples/cli/lib/samples/adsense.rb +0 -99
  246. data/samples/cli/lib/samples/analytics.rb +0 -80
  247. data/samples/cli/lib/samples/androidpublisher.rb +0 -47
  248. data/samples/cli/lib/samples/bigquery.rb +0 -101
  249. data/samples/cli/lib/samples/calendar.rb +0 -83
  250. data/samples/cli/lib/samples/drive.rb +0 -82
  251. data/samples/cli/lib/samples/gmail.rb +0 -157
  252. data/samples/cli/lib/samples/pubsub.rb +0 -114
  253. data/samples/cli/lib/samples/sheets.rb +0 -61
  254. data/samples/cli/lib/samples/translate.rb +0 -44
  255. data/samples/cli/lib/samples/vision.rb +0 -69
  256. data/samples/cli/lib/samples/you_tube.rb +0 -47
  257. data/samples/web/Gemfile +0 -9
  258. data/samples/web/README.md +0 -44
  259. data/samples/web/app.rb +0 -120
  260. data/samples/web/views/calendar.erb +0 -34
  261. data/samples/web/views/drive.erb +0 -33
  262. data/samples/web/views/home.erb +0 -34
  263. data/samples/web/views/layout.erb +0 -40
  264. data/synth.py +0 -40
@@ -1,58 +0,0 @@
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 get the logger if present.
43
- # Setting the ENV variable 'GOOGLE_API_USE_RAILS_LOGGER' to false will force the client
44
- # to use its own logger.
45
- #
46
- # @return [Logger]
47
- def self.rails_logger
48
- if 'true' == ENV.fetch('GOOGLE_API_USE_RAILS_LOGGER', 'true') &&
49
- defined?(::Rails) &&
50
- ::Rails.respond_to?(:logger) &&
51
- !::Rails.logger.nil?
52
- ::Rails.logger
53
- else
54
- nil
55
- end
56
- end
57
- end
58
- end
@@ -1,209 +0,0 @@
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 'addressable/uri'
16
- require 'addressable/template'
17
- require 'google/apis/core/http_command'
18
- require 'google/apis/errors'
19
- require 'json'
20
- require 'retriable'
21
-
22
- module Google
23
- module Apis
24
- module Core
25
- # Command for executing most basic API request with JSON requests/responses
26
- class ApiCommand < HttpCommand
27
- JSON_CONTENT_TYPE = 'application/json'
28
- FIELDS_PARAM = 'fields'
29
- ERROR_REASON_MAPPING = {
30
- 'rateLimitExceeded' => Google::Apis::RateLimitError,
31
- 'userRateLimitExceeded' => Google::Apis::RateLimitError,
32
- 'projectNotLinked' => Google::Apis::ProjectNotLinkedError
33
- }
34
-
35
- # JSON serializer for request objects
36
- # @return [Google::Apis::Core::JsonRepresentation]
37
- attr_accessor :request_representation
38
-
39
- # Request body to serialize
40
- # @return [Object]
41
- attr_accessor :request_object
42
-
43
- # JSON serializer for response objects
44
- # @return [Google::Apis::Core::JsonRepresentation]
45
- attr_accessor :response_representation
46
-
47
- # Class to instantiate when de-serializing responses
48
- # @return [Object]
49
- attr_accessor :response_class
50
-
51
- # Serialize the request body
52
- #
53
- # @return [void]
54
- def prepare!
55
- set_api_client_header
56
- set_user_project_header
57
- if options&.api_format_version
58
- header['X-Goog-Api-Format-Version'] = options.api_format_version.to_s
59
- end
60
- query[FIELDS_PARAM] = normalize_fields_param(query[FIELDS_PARAM]) if query.key?(FIELDS_PARAM)
61
- if request_representation && request_object
62
- header['Content-Type'] ||= JSON_CONTENT_TYPE
63
- if options && options.skip_serialization
64
- self.body = request_object
65
- else
66
- self.body = request_representation.new(request_object).to_json(user_options: { skip_undefined: true })
67
- end
68
- end
69
- super
70
- end
71
-
72
- # Deserialize the response body if present
73
- #
74
- # @param [String] content_type
75
- # Content type of body
76
- # @param [String, #read] body
77
- # Response body
78
- # @return [Object]
79
- # Response object
80
- # noinspection RubyUnusedLocalVariable
81
- def decode_response_body(content_type, body)
82
- return super unless response_representation
83
- return super if options && options.skip_deserialization
84
- return super if content_type.nil?
85
- return nil unless content_type.start_with?(JSON_CONTENT_TYPE)
86
- body = "{}" if body.empty?
87
- instance = response_class.new
88
- response_representation.new(instance).from_json(body, unwrap: response_class)
89
- instance
90
- end
91
-
92
- # Check the response and raise error if needed
93
- #
94
- # @param [Fixnum] status
95
- # HTTP status code of response
96
- # @param [Hash] header
97
- # HTTP response headers
98
- # @param [String] body
99
- # HTTP response body
100
- # @param [String] message
101
- # Error message text
102
- # @return [void]
103
- # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
104
- # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
105
- # @raise [Google::Apis::AuthorizationError] Authorization is required
106
- def check_status(status, header = nil, body = nil, message = nil)
107
- case status
108
- when 400, 402...500
109
- reason, message = parse_error(body)
110
- if reason
111
- message = sprintf('%s: %s', reason, message)
112
- raise ERROR_REASON_MAPPING[reason].new(
113
- message,
114
- status_code: status,
115
- header: header,
116
- body: body
117
- ) if ERROR_REASON_MAPPING.key?(reason)
118
- end
119
- super(status, header, body, message)
120
- else
121
- super(status, header, body, message)
122
- end
123
- end
124
-
125
- def allow_form_encoding?
126
- request_representation.nil? && super
127
- end
128
-
129
- private
130
-
131
- def set_api_client_header
132
- old_xgac = header
133
- .find_all { |k, v| k.downcase == 'x-goog-api-client' }
134
- .map { |(a, b)| b }
135
- .join(' ')
136
- .split
137
- .find_all { |s| s !~ %r{^gl-ruby/|^gdcl/} }
138
- .join(' ')
139
- xgac = "gl-ruby/#{RUBY_VERSION} gdcl/#{Google::Apis::VERSION}"
140
- xgac = old_xgac.empty? ? xgac : "#{old_xgac} #{xgac}"
141
- header.delete_if { |k, v| k.downcase == 'x-goog-api-client' }
142
- header['X-Goog-Api-Client'] = xgac
143
- end
144
-
145
- def set_user_project_header
146
- quota_project_id = options.quota_project
147
- if !quota_project_id && options&.authorization.respond_to?(:quota_project_id)
148
- quota_project_id = options.authorization.quota_project_id
149
- end
150
- header['X-Goog-User-Project'] = quota_project_id if quota_project_id
151
- end
152
-
153
- # Attempt to parse a JSON error message
154
- # @param [String] body
155
- # HTTP response body
156
- # @return [Array<(String, String)>]
157
- # Error reason and message
158
- def parse_error(body)
159
- obj = JSON.load(body)
160
- error = obj['error']
161
- if error['details']
162
- return extract_v2_error_details(error)
163
- elsif error['errors']
164
- return extract_v1_error_details(error)
165
- else
166
- fail 'Can not parse error message. No "details" or "errors" detected'
167
- end
168
- rescue
169
- return [nil, nil]
170
- end
171
-
172
- # Extracts details from a v1 error message
173
- # @param [Hash] error
174
- # Parsed JSON
175
- # @return [Array<(String, String)>]
176
- # Error reason and message
177
- def extract_v1_error_details(error)
178
- reason = error['errors'].first['reason']
179
- message = error['message']
180
- return [reason, message]
181
- end
182
-
183
- # Extracts details from a v2error message
184
- # @param [Hash] error
185
- # Parsed JSON
186
- # @return [Array<(String, String)>]
187
- # Error reason and message
188
- def extract_v2_error_details(error)
189
- reason = error['status']
190
- message = error['message']
191
- return [reason, message]
192
- end
193
-
194
- # Convert field names from ruby conventions to original names in JSON
195
- #
196
- # @param [String] fields
197
- # Value of 'fields' param
198
- # @return [String]
199
- # Updated header value
200
- def normalize_fields_param(fields)
201
- # TODO: Generate map of parameter names during code gen. Small possibility that camelization fails
202
- fields.gsub(/:/, '').gsub(/\w+/) do |str|
203
- str.gsub(/(?:^|_)([a-z])/){ Regexp.last_match.begin(0) == 0 ? $1 : $1.upcase }
204
- end
205
- end
206
- end
207
- end
208
- end
209
- end
@@ -1,447 +0,0 @@
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 'addressable/uri'
16
- require 'addressable/template'
17
- require 'google/apis/version'
18
- require 'google/apis/core/api_command'
19
- require 'google/apis/core/batch'
20
- require 'google/apis/core/upload'
21
- require 'google/apis/core/download'
22
- require 'google/apis/options'
23
- require 'googleauth'
24
- require 'httpclient'
25
-
26
- module Google
27
- module Apis
28
- module Core
29
- # Helper class for enumerating over a result set requiring multiple fetches
30
- class PagedResults
31
- include Enumerable
32
-
33
- attr_reader :last_result
34
-
35
- # @param [BaseService] service
36
- # Current service instance
37
- # @param [Fixnum] max
38
- # Maximum number of items to iterate over. Nil if no limit
39
- # @param [Boolean] cache
40
- # True (default) if results should be cached so multiple iterations can be used.
41
- # @param [Symbol] items
42
- # Name of the field in the result containing the items. Defaults to :items
43
- def initialize(service, max: nil, items: :items, cache: true, response_page_token: :next_page_token, &block)
44
- @service = service
45
- @block = block
46
- @max = max
47
- @items_field = items
48
- @response_page_token_field = response_page_token
49
- if cache
50
- @result_cache = Hash.new do |h, k|
51
- h[k] = @block.call(k, @service)
52
- end
53
- @fetch_proc = Proc.new { |token| @result_cache[token] }
54
- else
55
- @fetch_proc = Proc.new { |token| @block.call(token, @service) }
56
- end
57
- end
58
-
59
- # Iterates over result set, fetching additional pages as needed
60
- def each
61
- page_token = nil
62
- item_count = 0
63
- loop do
64
- @last_result = @fetch_proc.call(page_token)
65
- items = @last_result.send(@items_field)
66
- if items.kind_of?(Array)
67
- for item in items
68
- item_count = item_count + 1
69
- break if @max && item_count > @max
70
- yield item
71
- end
72
- elsif items.kind_of?(Hash)
73
- items.each do |key, val|
74
- item_count = item_count + 1
75
- break if @max && item_count > @max
76
- yield key, val
77
- end
78
- elsif items
79
- # yield singular non-nil items (for genomics API)
80
- yield items
81
- end
82
- break if @max && item_count >= @max
83
- next_page_token = @last_result.send(@response_page_token_field)
84
- break if next_page_token.nil? || next_page_token == page_token
85
- page_token = next_page_token
86
- end
87
- end
88
- end
89
-
90
- # Base service for all APIs. Not to be used directly.
91
- #
92
- class BaseService
93
- include Logging
94
-
95
- # Root URL (host/port) for the API
96
- # @return [Addressable::URI]
97
- attr_accessor :root_url
98
-
99
- # Additional path prefix for all API methods
100
- # @return [Addressable::URI]
101
- attr_accessor :base_path
102
-
103
- # Alternate path prefix for media uploads
104
- # @return [Addressable::URI]
105
- attr_accessor :upload_path
106
-
107
- # Alternate path prefix for all batch methods
108
- # @return [Addressable::URI]
109
- attr_accessor :batch_path
110
-
111
- # HTTP client
112
- # @return [HTTPClient]
113
- attr_accessor :client
114
-
115
- # General settings
116
- # @return [Google::Apis::ClientOptions]
117
- attr_accessor :client_options
118
-
119
- # Default options for all requests
120
- # @return [Google::Apis::RequestOptions]
121
- attr_accessor :request_options
122
-
123
- # @param [String,Addressable::URI] root_url
124
- # Root URL for the API
125
- # @param [String,Addressable::URI] base_path
126
- # Additional path prefix for all API methods
127
- # @api private
128
- def initialize(root_url, base_path)
129
- self.root_url = root_url
130
- self.base_path = base_path
131
- self.upload_path = "upload/#{base_path}"
132
- self.batch_path = 'batch'
133
- self.client_options = Google::Apis::ClientOptions.default.dup
134
- self.request_options = Google::Apis::RequestOptions.default.dup
135
- end
136
-
137
- # @!attribute [rw] authorization
138
- # @return [Signet::OAuth2::Client]
139
- # OAuth2 credentials
140
- def authorization=(authorization)
141
- request_options.authorization = authorization
142
- end
143
-
144
- def authorization
145
- request_options.authorization
146
- end
147
-
148
- # TODO: with(options) method
149
-
150
- # Perform a batch request. Calls made within the block are sent in a single network
151
- # request to the server.
152
- #
153
- # @example
154
- # service.batch do |s|
155
- # s.get_item(id1) do |res, err|
156
- # # process response for 1st call
157
- # end
158
- # # ...
159
- # s.get_item(idN) do |res, err|
160
- # # process response for Nth call
161
- # end
162
- # end
163
- #
164
- # @param [Hash, Google::Apis::RequestOptions] options
165
- # Request-specific options
166
- # @yield [self]
167
- # @return [void]
168
- def batch(options = nil)
169
- batch_command = BatchCommand.new(:post, Addressable::URI.parse(root_url + batch_path))
170
- batch_command.options = request_options.merge(options)
171
- apply_command_defaults(batch_command)
172
- begin
173
- start_batch(batch_command)
174
- yield self
175
- ensure
176
- end_batch
177
- end
178
- batch_command.execute(client)
179
- end
180
-
181
- # Perform a batch upload request. Calls made within the block are sent in a single network
182
- # request to the server. Batch uploads are useful for uploading multiple small files. For larger
183
- # files, use single requests which use a resumable upload protocol.
184
- #
185
- # @example
186
- # service.batch do |s|
187
- # s.insert_item(upload_source: 'file1.txt') do |res, err|
188
- # # process response for 1st call
189
- # end
190
- # # ...
191
- # s.insert_item(upload_source: 'fileN.txt') do |res, err|
192
- # # process response for Nth call
193
- # end
194
- # end
195
- #
196
- # @param [Hash, Google::Apis::RequestOptions] options
197
- # Request-specific options
198
- # @yield [self]
199
- # @return [void]
200
- def batch_upload(options = nil)
201
- batch_command = BatchUploadCommand.new(:put, Addressable::URI.parse(root_url + upload_path))
202
- batch_command.options = request_options.merge(options)
203
- apply_command_defaults(batch_command)
204
- begin
205
- start_batch(batch_command)
206
- yield self
207
- ensure
208
- end_batch
209
- end
210
- batch_command.execute(client)
211
- end
212
-
213
- # Get the current HTTP client
214
- # @return [HTTPClient]
215
- def client
216
- @client ||= new_client
217
- end
218
-
219
-
220
- # Simple escape hatch for making API requests directly to a given
221
- # URL. This is not intended to be used as a generic HTTP client
222
- # and should be used only in cases where no service method exists
223
- # (e.g. fetching an export link for a Google Drive file.)
224
- #
225
- # @param [Symbol] method
226
- # HTTP method as symbol (e.g. :get, :post, :put, ...)
227
- # @param [String] url
228
- # URL to call
229
- # @param [Hash<String,String>] params
230
- # Optional hash of query parameters
231
- # @param [#read] body
232
- # Optional body for POST/PUT
233
- # @param [IO, String] download_dest
234
- # IO stream or filename to receive content download
235
- # @param [Google::Apis::RequestOptions] options
236
- # Request-specific options
237
- #
238
- # @yield [result, err] Result & error if block supplied
239
- # @yieldparam result [String] HTTP response body
240
- # @yieldparam err [StandardError] error object if request failed
241
- #
242
- # @return [String] HTTP response body
243
- def http(method, url, params: nil, body: nil, download_dest: nil, options: nil, &block)
244
- if download_dest
245
- command = DownloadCommand.new(method, url, body: body)
246
- else
247
- command = HttpCommand.new(method, url, body: body)
248
- end
249
- command.options = request_options.merge(options)
250
- apply_command_defaults(command)
251
- command.query.merge(Hash(params))
252
- execute_or_queue_command(command, &block)
253
- end
254
-
255
- # Executes a given query with paging, automatically retrieving
256
- # additional pages as necessary. Requires a block that returns the
257
- # result set of a page. The current page token is supplied as an argument
258
- # to the block.
259
- #
260
- # Note: The returned enumerable also contains a `last_result` field
261
- # containing the full result of the last query executed.
262
- #
263
- # @param [Fixnum] max
264
- # Maximum number of items to iterate over. Defaults to nil -- no upper bound.
265
- # @param [Symbol] items
266
- # Name of the field in the result containing the items. Defaults to :items
267
- # @param [Boolean] cache
268
- # True (default) if results should be cached so multiple iterations can be used.
269
- # @return [Enumerble]
270
- # @yield [token, service]
271
- # Current page token & service instance
272
- # @yieldparam [String] token
273
- # Current page token to be used in the query
274
- # @yieldparam [service]
275
- # Current service instance
276
- # @since 0.9.4
277
- #
278
- # @example Retrieve all files,
279
- # file_list = service.fetch_all { |token, s| s.list_files(page_token: token) }
280
- # file_list.each { |f| ... }
281
- def fetch_all(max: nil, items: :items, cache: true, response_page_token: :next_page_token, &block)
282
- fail "fetch_all may not be used inside a batch" if batch?
283
- return PagedResults.new(self, max: max, items: items, cache: cache, response_page_token: response_page_token, &block)
284
- end
285
-
286
- protected
287
-
288
- # Create a new upload command.
289
- #
290
- # @param [symbol] method
291
- # HTTP method for uploading (typically :put or :post)
292
- # @param [String] path
293
- # Additional path to upload endpoint, appended to API base path
294
- # @param [Hash, Google::Apis::RequestOptions] options
295
- # Request-specific options
296
- # @return [Google::Apis::Core::UploadCommand]
297
- def make_upload_command(method, path, options)
298
- template = Addressable::Template.new(root_url + upload_path + path)
299
- if batch?
300
- command = MultipartUploadCommand.new(method, template)
301
- else
302
- command = ResumableUploadCommand.new(method, template)
303
- end
304
- command.options = request_options.merge(options)
305
- apply_command_defaults(command)
306
- command
307
- end
308
-
309
- # Create a new download command.
310
- #
311
- # @param [symbol] method
312
- # HTTP method for uploading (typically :get)
313
- # @param [String] path
314
- # Additional path to download endpoint, appended to API base path
315
- # @param [Hash, Google::Apis::RequestOptions] options
316
- # Request-specific options
317
- # @return [Google::Apis::Core::DownloadCommand]
318
- def make_download_command(method, path, options)
319
- template = Addressable::Template.new(root_url + base_path + path)
320
- command = DownloadCommand.new(method, template)
321
- command.options = request_options.merge(options)
322
- command.query['alt'] = 'media'
323
- apply_command_defaults(command)
324
- command
325
- end
326
-
327
- # Create a new command.
328
- #
329
- # @param [symbol] method
330
- # HTTP method (:get, :post, :delete, etc...)
331
- # @param [String] path
332
- # Additional path, appended to API base path
333
- # @param [Hash, Google::Apis::RequestOptions] options
334
- # Request-specific options
335
- # @return [Google::Apis::Core::DownloadCommand]
336
- def make_simple_command(method, path, options)
337
- full_path =
338
- if path.start_with? "/"
339
- path[1..-1]
340
- else
341
- base_path + path
342
- end
343
- template = Addressable::Template.new(root_url + full_path)
344
- command = ApiCommand.new(method, template)
345
- command.options = request_options.merge(options)
346
- apply_command_defaults(command)
347
- command
348
- end
349
-
350
- # Execute the request. If a batch is in progress, the request is added to the batch instead.
351
- #
352
- # @param [Google::Apis::Core::HttpCommand] command
353
- # Command to execute
354
- # @return [Object] response object if command executed and no callback supplied
355
- # @yield [result, err] Result & error if block supplied
356
- # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
357
- # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
358
- # @raise [Google::Apis::AuthorizationError] Authorization is required
359
- def execute_or_queue_command(command, &callback)
360
- batch_command = current_batch
361
- if batch_command
362
- fail "Can not combine services in a batch" if Thread.current[:google_api_batch_service] != self
363
- batch_command.add(command, &callback)
364
- nil
365
- else
366
- command.execute(client, &callback)
367
- end
368
- end
369
-
370
- # Update commands with service-specific options. To be implemented by subclasses
371
- # @param [Google::Apis::Core::HttpCommand] _command
372
- def apply_command_defaults(_command)
373
- end
374
-
375
- private
376
-
377
- # Get the current batch context
378
- #
379
- # @return [Google:Apis::Core::BatchRequest]
380
- def current_batch
381
- Thread.current[:google_api_batch]
382
- end
383
-
384
- # Check if a batch is in progress
385
- # @return [Boolean]
386
- def batch?
387
- !current_batch.nil?
388
- end
389
-
390
- # Start a new thread-local batch context
391
- # @param [Google::Apis::Core::BatchCommand] cmd
392
- def start_batch(cmd)
393
- fail "Batch already in progress" if batch?
394
- Thread.current[:google_api_batch] = cmd
395
- Thread.current[:google_api_batch_service] = self
396
- end
397
-
398
- # Clear thread-local batch context
399
- def end_batch
400
- Thread.current[:google_api_batch] = nil
401
- Thread.current[:google_api_batch_service] = nil
402
- end
403
-
404
- # Create a new HTTP client
405
- # @return [HTTPClient]
406
- def new_client
407
- client = ::HTTPClient.new
408
-
409
- if client_options.transparent_gzip_decompression
410
- client.transparent_gzip_decompression = client_options.transparent_gzip_decompression
411
- end
412
-
413
- client.proxy = client_options.proxy_url if client_options.proxy_url
414
-
415
- if client_options.open_timeout_sec
416
- client.connect_timeout = client_options.open_timeout_sec
417
- end
418
-
419
- if client_options.read_timeout_sec
420
- client.receive_timeout = client_options.read_timeout_sec
421
- end
422
-
423
- if client_options.send_timeout_sec
424
- client.send_timeout = client_options.send_timeout_sec
425
- end
426
-
427
- client.follow_redirect_count = 5
428
- client.default_header = { 'User-Agent' => user_agent }
429
-
430
- client.debug_dev = logger if client_options.log_http_requests
431
- client
432
- end
433
-
434
-
435
- # Build the user agent header
436
- # @return [String]
437
- def user_agent
438
- sprintf('%s/%s google-api-ruby-client/%s %s (gzip)',
439
- client_options.application_name,
440
- client_options.application_version,
441
- Google::Apis::VERSION,
442
- Google::Apis::OS_VERSION)
443
- end
444
- end
445
- end
446
- end
447
- end