google-cloud-vision-v1 0.1.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.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +12 -0
  3. data/AUTHENTICATION.md +169 -0
  4. data/LICENSE.md +203 -0
  5. data/README.md +24 -0
  6. data/lib/google-cloud-vision-v1.rb +1 -0
  7. data/lib/google/cloud/common_resources_pb.rb +15 -0
  8. data/lib/google/cloud/vision/v1.rb +20 -0
  9. data/lib/google/cloud/vision/v1/geometry_pb.rb +40 -0
  10. data/lib/google/cloud/vision/v1/image_annotator.rb +21 -0
  11. data/lib/google/cloud/vision/v1/image_annotator/client.rb +682 -0
  12. data/lib/google/cloud/vision/v1/image_annotator/credentials.rb +52 -0
  13. data/lib/google/cloud/vision/v1/image_annotator/helpers.rb +1228 -0
  14. data/lib/google/cloud/vision/v1/image_annotator/operations.rb +558 -0
  15. data/lib/google/cloud/vision/v1/image_annotator/paths.rb +52 -0
  16. data/lib/google/cloud/vision/v1/image_annotator_pb.rb +345 -0
  17. data/lib/google/cloud/vision/v1/image_annotator_services_pb.rb +73 -0
  18. data/lib/google/cloud/vision/v1/product_search.rb +21 -0
  19. data/lib/google/cloud/vision/v1/product_search/client.rb +2134 -0
  20. data/lib/google/cloud/vision/v1/product_search/credentials.rb +52 -0
  21. data/lib/google/cloud/vision/v1/product_search/operations.rb +558 -0
  22. data/lib/google/cloud/vision/v1/product_search/paths.rb +109 -0
  23. data/lib/google/cloud/vision/v1/product_search_pb.rb +55 -0
  24. data/lib/google/cloud/vision/v1/product_search_service_pb.rb +208 -0
  25. data/lib/google/cloud/vision/v1/product_search_service_services_pb.rb +232 -0
  26. data/lib/google/cloud/vision/v1/text_annotation_pb.rb +95 -0
  27. data/lib/google/cloud/vision/v1/version.rb +28 -0
  28. data/lib/google/cloud/vision/v1/web_detection_pb.rb +52 -0
  29. data/proto_docs/README.md +4 -0
  30. data/proto_docs/google/api/field_behavior.rb +59 -0
  31. data/proto_docs/google/api/resource.rb +247 -0
  32. data/proto_docs/google/cloud/vision/v1/geometry.rb +82 -0
  33. data/proto_docs/google/cloud/vision/v1/image_annotator.rb +1044 -0
  34. data/proto_docs/google/cloud/vision/v1/product_search.rb +134 -0
  35. data/proto_docs/google/cloud/vision/v1/product_search_service.rb +669 -0
  36. data/proto_docs/google/cloud/vision/v1/text_annotation.rb +285 -0
  37. data/proto_docs/google/cloud/vision/v1/web_detection.rb +121 -0
  38. data/proto_docs/google/longrunning/operations.rb +150 -0
  39. data/proto_docs/google/protobuf/any.rb +137 -0
  40. data/proto_docs/google/protobuf/empty.rb +36 -0
  41. data/proto_docs/google/protobuf/field_mask.rb +237 -0
  42. data/proto_docs/google/protobuf/timestamp.rb +116 -0
  43. data/proto_docs/google/protobuf/wrappers.rb +121 -0
  44. data/proto_docs/google/rpc/status.rb +46 -0
  45. data/proto_docs/google/type/color.rb +168 -0
  46. data/proto_docs/google/type/latlng.rb +38 -0
  47. metadata +201 -0
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2020 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+ require "googleauth"
20
+
21
+ module Google
22
+ module Cloud
23
+ module Vision
24
+ module V1
25
+ module ImageAnnotator
26
+ # Credentials for the ImageAnnotator API.
27
+ class Credentials < Google::Auth::Credentials
28
+ self.scope = [
29
+ "https://www.googleapis.com/auth/cloud-platform",
30
+ "https://www.googleapis.com/auth/cloud-vision"
31
+ ]
32
+ self.env_vars = [
33
+ "VISION_CREDENTIALS",
34
+ "VISION_KEYFILE",
35
+ "GOOGLE_CLOUD_CREDENTIALS",
36
+ "GOOGLE_CLOUD_KEYFILE",
37
+ "GCLOUD_KEYFILE",
38
+ "VISION_CREDENTIALS_JSON",
39
+ "VISION_KEYFILE_JSON",
40
+ "GOOGLE_CLOUD_CREDENTIALS_JSON",
41
+ "GOOGLE_CLOUD_KEYFILE_JSON",
42
+ "GCLOUD_KEYFILE_JSON"
43
+ ]
44
+ self.paths = [
45
+ "~/.config/google_cloud/application_default_credentials.json"
46
+ ]
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,1228 @@
1
+ # Copyright 2020 Google LLC
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
+ # https://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
+ # rubocop:disable Style/Documentation
16
+
17
+ require "uri"
18
+
19
+ module Google
20
+ module Cloud
21
+ module Vision
22
+ module V1
23
+ module ImageAnnotator
24
+ class Client
25
+ ##
26
+ # Detect features of type CROP_HINTS.
27
+ #
28
+ # @param images [Array<String>, Array<File>]
29
+ # An array containing files, file paths, io objects, image urls, or
30
+ # Google Cloud Storage urls. Can be used with or instead of image.
31
+ # @param image [File, String]
32
+ # A file, file path, io object, url pointing to an image, or Google
33
+ # Cloud Storage url. Can be used with or instead of images.
34
+ # @param max_results [Integer]
35
+ # Optional. Defaults to 10.
36
+ # @param options [Gapic::CallOptions]
37
+ # Optional. Overrides the default settings for this call, e.g,
38
+ # timeout, retries, etc.
39
+ # @param async [Boolean]
40
+ # Optional. Defaults to `false`. If `false`, performs the request
41
+ # synchronously, returning a `BatchAnnotateImagesResponse`. If `true`,
42
+ # performs the request asynchronously, returning a `Gapic::Operation`.
43
+ # @param mime_type [String]
44
+ # Required only if async is `true`.
45
+ # @param batch_size [Integer]
46
+ # Optional. Defaults to 10. When async is `true`, this specifies the
47
+ # number of input files per output json.
48
+ # @param destination [String]
49
+ # A Google Cloud Storage location for storing the output. Required
50
+ # only if async is `true`.
51
+ # @param image_context [Hash]
52
+ # Optional. Image context and/or feature-specific parameters.
53
+ #
54
+ # @yield [result, operation] Access the result along with the RPC operation
55
+ # @yieldparam result [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse, Gapic::Operation]
56
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
57
+ #
58
+ # @return [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse] if async is `false`.
59
+ # @return [Gapic::Operation] if async is `true`.
60
+ #
61
+ # @raise [Google::Cloud::Error] if the RPC is aborted.
62
+ #
63
+ # @example
64
+ # require "google/cloud/vision/v1"
65
+ #
66
+ # image_annotator_client = Google::Cloud::Vision::V1::ImageAnnotator::Client.new
67
+ #
68
+ # response = image_annotator_client.crop_hints_detection image: "path/to/image.png"
69
+ # response.responses.each do |res|
70
+ # puts res
71
+ # end
72
+ #
73
+ def crop_hints_detection \
74
+ images: [],
75
+ image: nil,
76
+ max_results: 10,
77
+ options: nil,
78
+ async: false,
79
+ mime_type: nil,
80
+ batch_size: 10,
81
+ destination: nil,
82
+ image_context: nil,
83
+ &block
84
+
85
+ feature = { type: :CROP_HINTS, max_results: max_results }
86
+ images << image if image
87
+ formatted_images = images.map do |img|
88
+ formatted_image = normalize_image img
89
+ formatted_image[:mime_type] = mime_type if mime_type
90
+ formatted_image
91
+ end
92
+ requests = formatted_images.map do |img|
93
+ request = { image: img, features: [feature] }
94
+ request[:image_context] = image_context if image_context
95
+ request
96
+ end
97
+ batch_request = { requests: requests }
98
+
99
+ if async
100
+ requests.map! do |request|
101
+ {
102
+ input_config: {
103
+ gcs_source: {
104
+ uri: request[:image][:source][:gcs_image_uri]
105
+ },
106
+ mime_type: mime_type
107
+ },
108
+ features: request[:features],
109
+ output_config: {
110
+ gcs_destination: {
111
+ uri: destination
112
+ },
113
+ batch_size: batch_size
114
+ }
115
+ }
116
+ end
117
+ async_batch_annotate_files batch_request, options, &block
118
+ else
119
+ batch_annotate_images batch_request, options, &block
120
+ end
121
+ end
122
+
123
+ ##
124
+ # Detect features of type DOCUMENT_TEXT_DETECTION.
125
+ #
126
+ # @param images [Array<String>, Array<File>]
127
+ # An array containing files, file paths, io objects, image urls, or
128
+ # Google Cloud Storage urls. Can be used with or instead of image.
129
+ # @param image [File, String]
130
+ # A file, file path, io object, url pointing to an image, or Google
131
+ # Cloud Storage url. Can be used with or instead of images.
132
+ # @param max_results [Integer]
133
+ # Optional. Defaults to 10.
134
+ # @param options [Gapic::CallOptions]
135
+ # Optional. Overrides the default settings for this call, e.g,
136
+ # timeout, retries, etc.
137
+ # @param async [Boolean]
138
+ # Optional. Defaults to `false`. If `false`, performs the request
139
+ # synchronously, returning a `BatchAnnotateImagesResponse`. If `true`,
140
+ # performs the request asynchronously, returning a `Gapic::Operation`.
141
+ # @param mime_type [String]
142
+ # Required only if async is `true`.
143
+ # @param batch_size [Integer]
144
+ # Optional. Defaults to 10. When async is `true`, this specifies the
145
+ # number of input files per output json.
146
+ # @param destination [String]
147
+ # A Google Cloud Storage location for storing the output. Required
148
+ # only if async is `true`.
149
+ # @param image_context [Hash]
150
+ # Optional. Image context and/or feature-specific parameters.
151
+ #
152
+ # @yield [result, operation] Access the result along with the RPC operation
153
+ # @yieldparam result [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse, Gapic::Operation]
154
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
155
+ #
156
+ # @return [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse] if async is `false`.
157
+ # @return [Gapic::Operation] if async is `true`.
158
+ #
159
+ # @raise [Google::Cloud::Error] if the RPC is aborted.
160
+ #
161
+ # @example
162
+ # require "google/cloud/vision/v1"
163
+ #
164
+ # image_annotator_client = Google::Cloud::Vision::V1::ImageAnnotator::Client.new
165
+ #
166
+ # response = image_annotator_client.document_text_detection image: "path/to/image.png"
167
+ # response.responses.each do |res|
168
+ # puts res
169
+ # end
170
+ #
171
+ def document_text_detection \
172
+ images: [],
173
+ image: nil,
174
+ max_results: 10,
175
+ options: nil,
176
+ async: false,
177
+ mime_type: nil,
178
+ batch_size: 10,
179
+ destination: nil,
180
+ image_context: nil,
181
+ &block
182
+
183
+ feature = { type: :DOCUMENT_TEXT_DETECTION, max_results: max_results }
184
+ images << image if image
185
+ formatted_images = images.map do |img|
186
+ formatted_image = normalize_image img
187
+ formatted_image[:mime_type] = mime_type if mime_type
188
+ formatted_image
189
+ end
190
+ requests = formatted_images.map do |img|
191
+ request = { image: img, features: [feature] }
192
+ request[:image_context] = image_context if image_context
193
+ request
194
+ end
195
+ batch_request = { requests: requests }
196
+
197
+ if async
198
+ requests.map! do |request|
199
+ {
200
+ input_config: {
201
+ gcs_source: {
202
+ uri: request[:image][:source][:gcs_image_uri]
203
+ },
204
+ mime_type: mime_type
205
+ },
206
+ features: request[:features],
207
+ output_config: {
208
+ gcs_destination: {
209
+ uri: destination
210
+ },
211
+ batch_size: batch_size
212
+ }
213
+ }
214
+ end
215
+ async_batch_annotate_files batch_request, options, &block
216
+ else
217
+ batch_annotate_images batch_request, options, &block
218
+ end
219
+ end
220
+
221
+ ##
222
+ # Detect features of type FACE_DETECTION.
223
+ #
224
+ # @param images [Array<String>, Array<File>]
225
+ # An array containing files, file paths, io objects, image urls, or
226
+ # Google Cloud Storage urls. Can be used with or instead of image.
227
+ # @param image [File, String]
228
+ # A file, file path, io object, url pointing to an image, or Google
229
+ # Cloud Storage url. Can be used with or instead of images.
230
+ # @param max_results [Integer]
231
+ # Optional. Defaults to 10.
232
+ # @param options [Gapic::CallOptions]
233
+ # Optional. Overrides the default settings for this call, e.g,
234
+ # timeout, retries, etc.
235
+ # @param async [Boolean]
236
+ # Optional. Defaults to `false`. If `false`, performs the request
237
+ # synchronously, returning a `BatchAnnotateImagesResponse`. If `true`,
238
+ # performs the request asynchronously, returning a `Gapic::Operation`.
239
+ # @param mime_type [String]
240
+ # Required only if async is `true`.
241
+ # @param batch_size [Integer]
242
+ # Optional. Defaults to 10. When async is `true`, this specifies the
243
+ # number of input files per output json.
244
+ # @param destination [String]
245
+ # A Google Cloud Storage location for storing the output. Required
246
+ # only if async is `true`.
247
+ # @param image_context [Hash]
248
+ # Optional. Image context and/or feature-specific parameters.
249
+ #
250
+ # @yield [result, operation] Access the result along with the RPC operation
251
+ # @yieldparam result [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse, Gapic::Operation]
252
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
253
+ #
254
+ # @return [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse] if async is `false`.
255
+ # @return [Gapic::Operation] if async is `true`.
256
+ #
257
+ # @raise [Google::Cloud::Error] if the RPC is aborted.
258
+ #
259
+ # @example
260
+ # require "google/cloud/vision/v1"
261
+ #
262
+ # image_annotator_client = Google::Cloud::Vision::V1::ImageAnnotator::Client.new
263
+ #
264
+ # response = image_annotator_client.face_detection image: "path/to/image.png"
265
+ # response.responses.each do |res|
266
+ # puts res
267
+ # end
268
+ #
269
+ def face_detection \
270
+ images: [],
271
+ image: nil,
272
+ max_results: 10,
273
+ options: nil,
274
+ async: false,
275
+ mime_type: nil,
276
+ batch_size: 10,
277
+ destination: nil,
278
+ image_context: nil,
279
+ &block
280
+
281
+ feature = { type: :FACE_DETECTION, max_results: max_results }
282
+ images << image if image
283
+ formatted_images = images.map do |img|
284
+ formatted_image = normalize_image img
285
+ formatted_image[:mime_type] = mime_type if mime_type
286
+ formatted_image
287
+ end
288
+ requests = formatted_images.map do |img|
289
+ request = { image: img, features: [feature] }
290
+ request[:image_context] = image_context if image_context
291
+ request
292
+ end
293
+ batch_request = { requests: requests }
294
+
295
+ if async
296
+ requests.map! do |request|
297
+ {
298
+ input_config: {
299
+ gcs_source: {
300
+ uri: request[:image][:source][:gcs_image_uri]
301
+ },
302
+ mime_type: mime_type
303
+ },
304
+ features: request[:features],
305
+ output_config: {
306
+ gcs_destination: {
307
+ uri: destination
308
+ },
309
+ batch_size: batch_size
310
+ }
311
+ }
312
+ end
313
+ async_batch_annotate_files batch_request, options, &block
314
+ else
315
+ batch_annotate_images batch_request, options, &block
316
+ end
317
+ end
318
+
319
+ ##
320
+ # Detect features of type IMAGE_PROPERTIES.
321
+ #
322
+ # @param images [Array<String>, Array<File>]
323
+ # An array containing files, file paths, io objects, image urls, or
324
+ # Google Cloud Storage urls. Can be used with or instead of image.
325
+ # @param image [File, String]
326
+ # A file, file path, io object, url pointing to an image, or Google
327
+ # Cloud Storage url. Can be used with or instead of images.
328
+ # @param max_results [Integer]
329
+ # Optional. Defaults to 10.
330
+ # @param options [Gapic::CallOptions]
331
+ # Optional. Overrides the default settings for this call, e.g,
332
+ # timeout, retries, etc.
333
+ # @param async [Boolean]
334
+ # Optional. Defaults to `false`. If `false`, performs the request
335
+ # synchronously, returning a `BatchAnnotateImagesResponse`. If `true`,
336
+ # performs the request asynchronously, returning a `Gapic::Operation`.
337
+ # @param mime_type [String]
338
+ # Required only if async is `true`.
339
+ # @param batch_size [Integer]
340
+ # Optional. Defaults to 10. When async is `true`, this specifies the
341
+ # number of input files per output json.
342
+ # @param destination [String]
343
+ # A Google Cloud Storage location for storing the output. Required
344
+ # only if async is `true`.
345
+ # @param image_context [Hash]
346
+ # Optional. Image context and/or feature-specific parameters.
347
+ #
348
+ # @yield [result, operation] Access the result along with the RPC operation
349
+ # @yieldparam result [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse, Gapic::Operation]
350
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
351
+ #
352
+ # @return [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse] if async is `false`.
353
+ # @return [Gapic::Operation] if async is `true`.
354
+ #
355
+ # @raise [Google::Cloud::Error] if the RPC is aborted.
356
+ #
357
+ # @example
358
+ # require "google/cloud/vision/v1"
359
+ #
360
+ # image_annotator_client = Google::Cloud::Vision::V1::ImageAnnotator::Client.new
361
+ #
362
+ # response = image_annotator_client.image_properties_detection image: "path/to/image.png"
363
+ # response.responses.each do |res|
364
+ # puts res
365
+ # end
366
+ #
367
+ def image_properties_detection \
368
+ images: [],
369
+ image: nil,
370
+ max_results: 10,
371
+ options: nil,
372
+ async: false,
373
+ mime_type: nil,
374
+ batch_size: 10,
375
+ destination: nil,
376
+ image_context: nil,
377
+ &block
378
+
379
+ feature = { type: :IMAGE_PROPERTIES, max_results: max_results }
380
+ images << image if image
381
+ formatted_images = images.map do |img|
382
+ formatted_image = normalize_image img
383
+ formatted_image[:mime_type] = mime_type if mime_type
384
+ formatted_image
385
+ end
386
+ requests = formatted_images.map do |img|
387
+ request = { image: img, features: [feature] }
388
+ request[:image_context] = image_context if image_context
389
+ request
390
+ end
391
+ batch_request = { requests: requests }
392
+
393
+ if async
394
+ requests.map! do |request|
395
+ {
396
+ input_config: {
397
+ gcs_source: {
398
+ uri: request[:image][:source][:gcs_image_uri]
399
+ },
400
+ mime_type: mime_type
401
+ },
402
+ features: request[:features],
403
+ output_config: {
404
+ gcs_destination: {
405
+ uri: destination
406
+ },
407
+ batch_size: batch_size
408
+ }
409
+ }
410
+ end
411
+ async_batch_annotate_files batch_request, options, &block
412
+ else
413
+ batch_annotate_images batch_request, options, &block
414
+ end
415
+ end
416
+
417
+ ##
418
+ # Detect features of type LABEL_DETECTION.
419
+ #
420
+ # @param images [Array<String>, Array<File>]
421
+ # An array containing files, file paths, io objects, image urls, or
422
+ # Google Cloud Storage urls. Can be used with or instead of image.
423
+ # @param image [File, String]
424
+ # A file, file path, io object, url pointing to an image, or Google
425
+ # Cloud Storage url. Can be used with or instead of images.
426
+ # @param max_results [Integer]
427
+ # Optional. Defaults to 10.
428
+ # @param options [Gapic::CallOptions]
429
+ # Optional. Overrides the default settings for this call, e.g,
430
+ # timeout, retries, etc.
431
+ # @param async [Boolean]
432
+ # Optional. Defaults to `false`. If `false`, performs the request
433
+ # synchronously, returning a `BatchAnnotateImagesResponse`. If `true`,
434
+ # performs the request asynchronously, returning a `Gapic::Operation`.
435
+ # @param mime_type [String]
436
+ # Required only if async is `true`.
437
+ # @param batch_size [Integer]
438
+ # Optional. Defaults to 10. When async is `true`, this specifies the
439
+ # number of input files per output json.
440
+ # @param destination [String]
441
+ # A Google Cloud Storage location for storing the output. Required
442
+ # only if async is `true`.
443
+ # @param image_context [Hash]
444
+ # Optional. Image context and/or feature-specific parameters.
445
+ #
446
+ # @yield [result, operation] Access the result along with the RPC operation
447
+ # @yieldparam result [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse, Gapic::Operation]
448
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
449
+ #
450
+ # @return [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse] if async is `false`.
451
+ # @return [Gapic::Operation] if async is `true`.
452
+ #
453
+ # @raise [Google::Cloud::Error] if the RPC is aborted.
454
+ #
455
+ # @example
456
+ # require "google/cloud/vision/v1"
457
+ #
458
+ # image_annotator_client = Google::Cloud::Vision::V1::ImageAnnotator::Client.new
459
+ #
460
+ # response = image_annotator_client.label_detection image: "path/to/image.png"
461
+ # response.responses.each do |res|
462
+ # puts res
463
+ # end
464
+ #
465
+ def label_detection \
466
+ images: [],
467
+ image: nil,
468
+ max_results: 10,
469
+ options: nil,
470
+ async: false,
471
+ mime_type: nil,
472
+ batch_size: 10,
473
+ destination: nil,
474
+ image_context: nil,
475
+ &block
476
+
477
+ feature = { type: :LABEL_DETECTION, max_results: max_results }
478
+ images << image if image
479
+ formatted_images = images.map do |img|
480
+ formatted_image = normalize_image img
481
+ formatted_image[:mime_type] = mime_type if mime_type
482
+ formatted_image
483
+ end
484
+ requests = formatted_images.map do |img|
485
+ request = { image: img, features: [feature] }
486
+ request[:image_context] = image_context if image_context
487
+ request
488
+ end
489
+ batch_request = { requests: requests }
490
+
491
+ if async
492
+ requests.map! do |request|
493
+ {
494
+ input_config: {
495
+ gcs_source: {
496
+ uri: request[:image][:source][:gcs_image_uri]
497
+ },
498
+ mime_type: mime_type
499
+ },
500
+ features: request[:features],
501
+ output_config: {
502
+ gcs_destination: {
503
+ uri: destination
504
+ },
505
+ batch_size: batch_size
506
+ }
507
+ }
508
+ end
509
+ async_batch_annotate_files batch_request, options, &block
510
+ else
511
+ batch_annotate_images batch_request, options, &block
512
+ end
513
+ end
514
+
515
+ ##
516
+ # Detect features of type LANDMARK_DETECTION.
517
+ #
518
+ # @param images [Array<String>, Array<File>]
519
+ # An array containing files, file paths, io objects, image urls, or
520
+ # Google Cloud Storage urls. Can be used with or instead of image.
521
+ # @param image [File, String]
522
+ # A file, file path, io object, url pointing to an image, or Google
523
+ # Cloud Storage url. Can be used with or instead of images.
524
+ # @param max_results [Integer]
525
+ # Optional. Defaults to 10.
526
+ # @param options [Gapic::CallOptions]
527
+ # Optional. Overrides the default settings for this call, e.g,
528
+ # timeout, retries, etc.
529
+ # @param async [Boolean]
530
+ # Optional. Defaults to `false`. If `false`, performs the request
531
+ # synchronously, returning a `BatchAnnotateImagesResponse`. If `true`,
532
+ # performs the request asynchronously, returning a `Gapic::Operation`.
533
+ # @param mime_type [String]
534
+ # Required only if async is `true`.
535
+ # @param batch_size [Integer]
536
+ # Optional. Defaults to 10. When async is `true`, this specifies the
537
+ # number of input files per output json.
538
+ # @param destination [String]
539
+ # A Google Cloud Storage location for storing the output. Required
540
+ # only if async is `true`.
541
+ # @param image_context [Hash]
542
+ # Optional. Image context and/or feature-specific parameters.
543
+ #
544
+ # @yield [result, operation] Access the result along with the RPC operation
545
+ # @yieldparam result [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse, Gapic::Operation]
546
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
547
+ #
548
+ # @return [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse] if async is `false`.
549
+ # @return [Gapic::Operation] if async is `true`.
550
+ #
551
+ # @raise [Google::Cloud::Error] if the RPC is aborted.
552
+ #
553
+ # @example
554
+ # require "google/cloud/vision/v1"
555
+ #
556
+ # image_annotator_client = Google::Cloud::Vision::V1::ImageAnnotator::Client.new
557
+ #
558
+ # response = image_annotator_client.landmark_detection image: "path/to/image.png"
559
+ # response.responses.each do |res|
560
+ # puts res
561
+ # end
562
+ #
563
+ def landmark_detection \
564
+ images: [],
565
+ image: nil,
566
+ max_results: 10,
567
+ options: nil,
568
+ async: false,
569
+ mime_type: nil,
570
+ batch_size: 10,
571
+ destination: nil,
572
+ image_context: nil,
573
+ &block
574
+
575
+ feature = { type: :LANDMARK_DETECTION, max_results: max_results }
576
+ images << image if image
577
+ formatted_images = images.map do |img|
578
+ formatted_image = normalize_image img
579
+ formatted_image[:mime_type] = mime_type if mime_type
580
+ formatted_image
581
+ end
582
+ requests = formatted_images.map do |img|
583
+ request = { image: img, features: [feature] }
584
+ request[:image_context] = image_context if image_context
585
+ request
586
+ end
587
+ batch_request = { requests: requests }
588
+
589
+ if async
590
+ requests.map! do |request|
591
+ {
592
+ input_config: {
593
+ gcs_source: {
594
+ uri: request[:image][:source][:gcs_image_uri]
595
+ },
596
+ mime_type: mime_type
597
+ },
598
+ features: request[:features],
599
+ output_config: {
600
+ gcs_destination: {
601
+ uri: destination
602
+ },
603
+ batch_size: batch_size
604
+ }
605
+ }
606
+ end
607
+ async_batch_annotate_files batch_request, options, &block
608
+ else
609
+ batch_annotate_images batch_request, options, &block
610
+ end
611
+ end
612
+
613
+ ##
614
+ # Detect features of type LOGO_DETECTION.
615
+ #
616
+ # @param images [Array<String>, Array<File>]
617
+ # An array containing files, file paths, io objects, image urls, or
618
+ # Google Cloud Storage urls. Can be used with or instead of image.
619
+ # @param image [File, String]
620
+ # A file, file path, io object, url pointing to an image, or Google
621
+ # Cloud Storage url. Can be used with or instead of images.
622
+ # @param max_results [Integer]
623
+ # Optional. Defaults to 10.
624
+ # @param options [Gapic::CallOptions]
625
+ # Optional. Overrides the default settings for this call, e.g,
626
+ # timeout, retries, etc.
627
+ # @param async [Boolean]
628
+ # Optional. Defaults to `false`. If `false`, performs the request
629
+ # synchronously, returning a `BatchAnnotateImagesResponse`. If `true`,
630
+ # performs the request asynchronously, returning a `Gapic::Operation`.
631
+ # @param mime_type [String]
632
+ # Required only if async is `true`.
633
+ # @param batch_size [Integer]
634
+ # Optional. Defaults to 10. When async is `true`, this specifies the
635
+ # number of input files per output json.
636
+ # @param destination [String]
637
+ # A Google Cloud Storage location for storing the output. Required
638
+ # only if async is `true`.
639
+ # @param image_context [Hash]
640
+ # Optional. Image context and/or feature-specific parameters.
641
+ #
642
+ # @yield [result, operation] Access the result along with the RPC operation
643
+ # @yieldparam result [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse, Gapic::Operation]
644
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
645
+ #
646
+ # @return [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse] if async is `false`.
647
+ # @return [Gapic::Operation] if async is `true`.
648
+ #
649
+ # @raise [Google::Cloud::Error] if the RPC is aborted.
650
+ #
651
+ # @example
652
+ # require "google/cloud/vision/v1"
653
+ #
654
+ # image_annotator_client = Google::Cloud::Vision::V1::ImageAnnotator::Client.new
655
+ #
656
+ # response = image_annotator_client.logo_detection image: "path/to/image.png"
657
+ # response.responses.each do |res|
658
+ # puts res
659
+ # end
660
+ #
661
+ def logo_detection \
662
+ images: [],
663
+ image: nil,
664
+ max_results: 10,
665
+ options: nil,
666
+ async: false,
667
+ mime_type: nil,
668
+ batch_size: 10,
669
+ destination: nil,
670
+ image_context: nil,
671
+ &block
672
+
673
+ feature = { type: :LOGO_DETECTION, max_results: max_results }
674
+ images << image if image
675
+ formatted_images = images.map do |img|
676
+ formatted_image = normalize_image img
677
+ formatted_image[:mime_type] = mime_type if mime_type
678
+ formatted_image
679
+ end
680
+ requests = formatted_images.map do |img|
681
+ request = { image: img, features: [feature] }
682
+ request[:image_context] = image_context if image_context
683
+ request
684
+ end
685
+ batch_request = { requests: requests }
686
+
687
+ if async
688
+ requests.map! do |request|
689
+ {
690
+ input_config: {
691
+ gcs_source: {
692
+ uri: request[:image][:source][:gcs_image_uri]
693
+ },
694
+ mime_type: mime_type
695
+ },
696
+ features: request[:features],
697
+ output_config: {
698
+ gcs_destination: {
699
+ uri: destination
700
+ },
701
+ batch_size: batch_size
702
+ }
703
+ }
704
+ end
705
+ async_batch_annotate_files batch_request, options, &block
706
+ else
707
+ batch_annotate_images batch_request, options, &block
708
+ end
709
+ end
710
+
711
+ ##
712
+ # Detect features of type OBJECT_LOCALIZATION.
713
+ #
714
+ # @param images [Array<String>, Array<File>]
715
+ # An array containing files, file paths, io objects, image urls, or
716
+ # Google Cloud Storage urls. Can be used with or instead of image.
717
+ # @param image [File, String]
718
+ # A file, file path, io object, url pointing to an image, or Google
719
+ # Cloud Storage url. Can be used with or instead of images.
720
+ # @param max_results [Integer]
721
+ # Optional. Defaults to 10.
722
+ # @param options [Gapic::CallOptions]
723
+ # Optional. Overrides the default settings for this call, e.g,
724
+ # timeout, retries, etc.
725
+ # @param async [Boolean]
726
+ # Optional. Defaults to `false`. If `false`, performs the request
727
+ # synchronously, returning a `BatchAnnotateImagesResponse`. If `true`,
728
+ # performs the request asynchronously, returning a `Gapic::Operation`.
729
+ # @param mime_type [String]
730
+ # Required only if async is `true`.
731
+ # @param batch_size [Integer]
732
+ # Optional. Defaults to 10. When async is `true`, this specifies the
733
+ # number of input files per output json.
734
+ # @param destination [String]
735
+ # A Google Cloud Storage location for storing the output. Required
736
+ # only if async is `true`.
737
+ # @param image_context [Hash]
738
+ # Optional. Image context and/or feature-specific parameters.
739
+ #
740
+ # @yield [result, operation] Access the result along with the RPC operation
741
+ # @yieldparam result [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse, Gapic::Operation]
742
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
743
+ #
744
+ # @return [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse] if async is `false`.
745
+ # @return [Gapic::Operation] if async is `true`.
746
+ #
747
+ # @raise [Google::Cloud::Error] if the RPC is aborted.
748
+ #
749
+ # @example
750
+ # require "google/cloud/vision/v1"
751
+ #
752
+ # image_annotator_client = Google::Cloud::Vision::V1::ImageAnnotator::Client.new
753
+ #
754
+ # response = image_annotator_client.object_localization_detection image: "path/to/image.png"
755
+ # response.responses.each do |res|
756
+ # puts res
757
+ # end
758
+ #
759
+ def object_localization_detection \
760
+ images: [],
761
+ image: nil,
762
+ max_results: 10,
763
+ options: nil,
764
+ async: false,
765
+ mime_type: nil,
766
+ batch_size: 10,
767
+ destination: nil,
768
+ image_context: nil,
769
+ &block
770
+
771
+ feature = { type: :OBJECT_LOCALIZATION, max_results: max_results }
772
+ images << image if image
773
+ formatted_images = images.map do |img|
774
+ formatted_image = normalize_image img
775
+ formatted_image[:mime_type] = mime_type if mime_type
776
+ formatted_image
777
+ end
778
+ requests = formatted_images.map do |img|
779
+ request = { image: img, features: [feature] }
780
+ request[:image_context] = image_context if image_context
781
+ request
782
+ end
783
+ batch_request = { requests: requests }
784
+
785
+ if async
786
+ requests.map! do |request|
787
+ {
788
+ input_config: {
789
+ gcs_source: {
790
+ uri: request[:image][:source][:gcs_image_uri]
791
+ },
792
+ mime_type: mime_type
793
+ },
794
+ features: request[:features],
795
+ output_config: {
796
+ gcs_destination: {
797
+ uri: destination
798
+ },
799
+ batch_size: batch_size
800
+ }
801
+ }
802
+ end
803
+ async_batch_annotate_files batch_request, options, &block
804
+ else
805
+ batch_annotate_images batch_request, options, &block
806
+ end
807
+ end
808
+
809
+ ##
810
+ # Detect features of type PRODUCT_SEARCH.
811
+ #
812
+ # @param images [Array<String>, Array<File>]
813
+ # An array containing files, file paths, io objects, image urls, or
814
+ # Google Cloud Storage urls. Can be used with or instead of image.
815
+ # @param image [File, String]
816
+ # A file, file path, io object, url pointing to an image, or Google
817
+ # Cloud Storage url. Can be used with or instead of images.
818
+ # @param max_results [Integer]
819
+ # Optional. Defaults to 10.
820
+ # @param options [Gapic::CallOptions]
821
+ # Optional. Overrides the default settings for this call, e.g,
822
+ # timeout, retries, etc.
823
+ # @param async [Boolean]
824
+ # Optional. Defaults to `false`. If `false`, performs the request
825
+ # synchronously, returning a `BatchAnnotateImagesResponse`. If `true`,
826
+ # performs the request asynchronously, returning a `Gapic::Operation`.
827
+ # @param mime_type [String]
828
+ # Required only if async is `true`.
829
+ # @param batch_size [Integer]
830
+ # Optional. Defaults to 10. When async is `true`, this specifies the
831
+ # number of input files per output json.
832
+ # @param destination [String]
833
+ # A Google Cloud Storage location for storing the output. Required
834
+ # only if async is `true`.
835
+ # @param image_context [Hash]
836
+ # Optional. Image context and/or feature-specific parameters.
837
+ #
838
+ # @yield [result, operation] Access the result along with the RPC operation
839
+ # @yieldparam result [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse, Gapic::Operation]
840
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
841
+ #
842
+ # @return [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse] if async is `false`.
843
+ # @return [Gapic::Operation] if async is `true`.
844
+ #
845
+ # @raise [Google::Cloud::Error] if the RPC is aborted.
846
+ #
847
+ # @example
848
+ # require "google/cloud/vision/v1"
849
+ #
850
+ # image_annotator_client = Google::Cloud::Vision::V1::ImageAnnotator::Client.new
851
+ #
852
+ # response = image_annotator_client.product_search_detection image: "path/to/image.png"
853
+ # response.responses.each do |res|
854
+ # puts res
855
+ # end
856
+ #
857
+ def product_search_detection \
858
+ images: [],
859
+ image: nil,
860
+ max_results: 10,
861
+ options: nil,
862
+ async: false,
863
+ mime_type: nil,
864
+ batch_size: 10,
865
+ destination: nil,
866
+ image_context: nil,
867
+ &block
868
+
869
+ feature = { type: :PRODUCT_SEARCH, max_results: max_results }
870
+ images << image if image
871
+ formatted_images = images.map do |img|
872
+ formatted_image = normalize_image img
873
+ formatted_image[:mime_type] = mime_type if mime_type
874
+ formatted_image
875
+ end
876
+ requests = formatted_images.map do |img|
877
+ request = { image: img, features: [feature] }
878
+ request[:image_context] = image_context if image_context
879
+ request
880
+ end
881
+ batch_request = { requests: requests }
882
+
883
+ if async
884
+ requests.map! do |request|
885
+ {
886
+ input_config: {
887
+ gcs_source: {
888
+ uri: request[:image][:source][:gcs_image_uri]
889
+ },
890
+ mime_type: mime_type
891
+ },
892
+ features: request[:features],
893
+ output_config: {
894
+ gcs_destination: {
895
+ uri: destination
896
+ },
897
+ batch_size: batch_size
898
+ }
899
+ }
900
+ end
901
+ async_batch_annotate_files batch_request, options, &block
902
+ else
903
+ batch_annotate_images batch_request, options, &block
904
+ end
905
+ end
906
+
907
+ ##
908
+ # Detect features of type SAFE_SEARCH_DETECTION.
909
+ #
910
+ # @param images [Array<String>, Array<File>]
911
+ # An array containing files, file paths, io objects, image urls, or
912
+ # Google Cloud Storage urls. Can be used with or instead of image.
913
+ # @param image [File, String]
914
+ # A file, file path, io object, url pointing to an image, or Google
915
+ # Cloud Storage url. Can be used with or instead of images.
916
+ # @param max_results [Integer]
917
+ # Optional. Defaults to 10.
918
+ # @param options [Gapic::CallOptions]
919
+ # Optional. Overrides the default settings for this call, e.g,
920
+ # timeout, retries, etc.
921
+ # @param async [Boolean]
922
+ # Optional. Defaults to `false`. If `false`, performs the request
923
+ # synchronously, returning a `BatchAnnotateImagesResponse`. If `true`,
924
+ # performs the request asynchronously, returning a `Gapic::Operation`.
925
+ # @param mime_type [String]
926
+ # Required only if async is `true`.
927
+ # @param batch_size [Integer]
928
+ # Optional. Defaults to 10. When async is `true`, this specifies the
929
+ # number of input files per output json.
930
+ # @param destination [String]
931
+ # A Google Cloud Storage location for storing the output. Required
932
+ # only if async is `true`.
933
+ # @param image_context [Hash]
934
+ # Optional. Image context and/or feature-specific parameters.
935
+ #
936
+ # @yield [result, operation] Access the result along with the RPC operation
937
+ # @yieldparam result [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse, Gapic::Operation]
938
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
939
+ #
940
+ # @return [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse] if async is `false`.
941
+ # @return [Gapic::Operation] if async is `true`.
942
+ #
943
+ # @raise [Google::Cloud::Error] if the RPC is aborted.
944
+ #
945
+ # @example
946
+ # require "google/cloud/vision/v1"
947
+ #
948
+ # image_annotator_client = Google::Cloud::Vision::V1::ImageAnnotator::Client.new
949
+ #
950
+ # response = image_annotator_client.safe_search_detection image: "path/to/image.png"
951
+ # response.responses.each do |res|
952
+ # puts res
953
+ # end
954
+ #
955
+ def safe_search_detection \
956
+ images: [],
957
+ image: nil,
958
+ max_results: 10,
959
+ options: nil,
960
+ async: false,
961
+ mime_type: nil,
962
+ batch_size: 10,
963
+ destination: nil,
964
+ image_context: nil,
965
+ &block
966
+
967
+ feature = { type: :SAFE_SEARCH_DETECTION, max_results: max_results }
968
+ images << image if image
969
+ formatted_images = images.map do |img|
970
+ formatted_image = normalize_image img
971
+ formatted_image[:mime_type] = mime_type if mime_type
972
+ formatted_image
973
+ end
974
+ requests = formatted_images.map do |img|
975
+ request = { image: img, features: [feature] }
976
+ request[:image_context] = image_context if image_context
977
+ request
978
+ end
979
+ batch_request = { requests: requests }
980
+
981
+ if async
982
+ requests.map! do |request|
983
+ {
984
+ input_config: {
985
+ gcs_source: {
986
+ uri: request[:image][:source][:gcs_image_uri]
987
+ },
988
+ mime_type: mime_type
989
+ },
990
+ features: request[:features],
991
+ output_config: {
992
+ gcs_destination: {
993
+ uri: destination
994
+ },
995
+ batch_size: batch_size
996
+ }
997
+ }
998
+ end
999
+ async_batch_annotate_files batch_request, options, &block
1000
+ else
1001
+ batch_annotate_images batch_request, options, &block
1002
+ end
1003
+ end
1004
+
1005
+ ##
1006
+ # Detect features of type TEXT_DETECTION.
1007
+ #
1008
+ # @param images [Array<String>, Array<File>]
1009
+ # An array containing files, file paths, io objects, image urls, or
1010
+ # Google Cloud Storage urls. Can be used with or instead of image.
1011
+ # @param image [File, String]
1012
+ # A file, file path, io object, url pointing to an image, or Google
1013
+ # Cloud Storage url. Can be used with or instead of images.
1014
+ # @param max_results [Integer]
1015
+ # Optional. Defaults to 10.
1016
+ # @param options [Gapic::CallOptions]
1017
+ # Optional. Overrides the default settings for this call, e.g,
1018
+ # timeout, retries, etc.
1019
+ # @param async [Boolean]
1020
+ # Optional. Defaults to `false`. If `false`, performs the request
1021
+ # synchronously, returning a `BatchAnnotateImagesResponse`. If `true`,
1022
+ # performs the request asynchronously, returning a `Gapic::Operation`.
1023
+ # @param mime_type [String]
1024
+ # Required only if async is `true`.
1025
+ # @param batch_size [Integer]
1026
+ # Optional. Defaults to 10. When async is `true`, this specifies the
1027
+ # number of input files per output json.
1028
+ # @param destination [String]
1029
+ # A Google Cloud Storage location for storing the output. Required
1030
+ # only if async is `true`.
1031
+ # @param image_context [Hash]
1032
+ # Optional. Image context and/or feature-specific parameters.
1033
+ #
1034
+ # @yield [result, operation] Access the result along with the RPC operation
1035
+ # @yieldparam result [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse, Gapic::Operation]
1036
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
1037
+ #
1038
+ # @return [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse] if async is `false`.
1039
+ # @return [Gapic::Operation] if async is `true`.
1040
+ #
1041
+ # @raise [Google::Cloud::Error] if the RPC is aborted.
1042
+ #
1043
+ # @example
1044
+ # require "google/cloud/vision/v1"
1045
+ #
1046
+ # image_annotator_client = Google::Cloud::Vision::V1::ImageAnnotator::Client.new
1047
+ #
1048
+ # response = image_annotator_client.text_detection image: "path/to/image.png"
1049
+ # response.responses.each do |res|
1050
+ # puts res
1051
+ # end
1052
+ #
1053
+ def text_detection \
1054
+ images: [],
1055
+ image: nil,
1056
+ max_results: 10,
1057
+ options: nil,
1058
+ async: false,
1059
+ mime_type: nil,
1060
+ batch_size: 10,
1061
+ destination: nil,
1062
+ image_context: nil,
1063
+ &block
1064
+
1065
+ feature = { type: :TEXT_DETECTION, max_results: max_results }
1066
+ images << image if image
1067
+ formatted_images = images.map do |img|
1068
+ formatted_image = normalize_image img
1069
+ formatted_image[:mime_type] = mime_type if mime_type
1070
+ formatted_image
1071
+ end
1072
+ requests = formatted_images.map do |img|
1073
+ request = { image: img, features: [feature] }
1074
+ request[:image_context] = image_context if image_context
1075
+ request
1076
+ end
1077
+ batch_request = { requests: requests }
1078
+
1079
+ if async
1080
+ requests.map! do |request|
1081
+ {
1082
+ input_config: {
1083
+ gcs_source: {
1084
+ uri: request[:image][:source][:gcs_image_uri]
1085
+ },
1086
+ mime_type: mime_type
1087
+ },
1088
+ features: request[:features],
1089
+ output_config: {
1090
+ gcs_destination: {
1091
+ uri: destination
1092
+ },
1093
+ batch_size: batch_size
1094
+ }
1095
+ }
1096
+ end
1097
+ async_batch_annotate_files batch_request, options, &block
1098
+ else
1099
+ batch_annotate_images batch_request, options, &block
1100
+ end
1101
+ end
1102
+
1103
+ ##
1104
+ # Detect features of type WEB_DETECTION.
1105
+ #
1106
+ # @param images [Array<String>, Array<File>]
1107
+ # An array containing files, file paths, io objects, image urls, or
1108
+ # Google Cloud Storage urls. Can be used with or instead of image.
1109
+ # @param image [File, String]
1110
+ # A file, file path, io object, url pointing to an image, or Google
1111
+ # Cloud Storage url. Can be used with or instead of images.
1112
+ # @param max_results [Integer]
1113
+ # Optional. Defaults to 10.
1114
+ # @param options [Gapic::CallOptions]
1115
+ # Optional. Overrides the default settings for this call, e.g,
1116
+ # timeout, retries, etc.
1117
+ # @param async [Boolean]
1118
+ # Optional. Defaults to `false`. If `false`, performs the request
1119
+ # synchronously, returning a `BatchAnnotateImagesResponse`. If `true`,
1120
+ # performs the request asynchronously, returning a `Gapic::Operation`.
1121
+ # @param mime_type [String]
1122
+ # Required only if async is `true`.
1123
+ # @param batch_size [Integer]
1124
+ # Optional. Defaults to 10. When async is `true`, this specifies the
1125
+ # number of input files per output json.
1126
+ # @param destination [String]
1127
+ # A Google Cloud Storage location for storing the output. Required
1128
+ # only if async is `true`.
1129
+ # @param image_context [Hash]
1130
+ # Optional. Image context and/or feature-specific parameters.
1131
+ #
1132
+ # @yield [result, operation] Access the result along with the RPC operation
1133
+ # @yieldparam result [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse, Gapic::Operation]
1134
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
1135
+ #
1136
+ # @return [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse] if async is `false`.
1137
+ # @return [Gapic::Operation] if async is `true`.
1138
+ #
1139
+ # @raise [Google::Cloud::Error] if the RPC is aborted.
1140
+ #
1141
+ # @example
1142
+ # require "google/cloud/vision/v1"
1143
+ #
1144
+ # image_annotator_client = Google::Cloud::Vision::V1::ImageAnnotator::Client.new
1145
+ #
1146
+ # response = image_annotator_client.web_detection image: "path/to/image.png"
1147
+ # response.responses.each do |res|
1148
+ # puts res
1149
+ # end
1150
+ #
1151
+ def web_detection \
1152
+ images: [],
1153
+ image: nil,
1154
+ max_results: 10,
1155
+ options: nil,
1156
+ async: false,
1157
+ mime_type: nil,
1158
+ batch_size: 10,
1159
+ destination: nil,
1160
+ image_context: nil,
1161
+ &block
1162
+
1163
+ feature = { type: :WEB_DETECTION, max_results: max_results }
1164
+ images << image if image
1165
+ formatted_images = images.map do |img|
1166
+ formatted_image = normalize_image img
1167
+ formatted_image[:mime_type] = mime_type if mime_type
1168
+ formatted_image
1169
+ end
1170
+ requests = formatted_images.map do |img|
1171
+ request = { image: img, features: [feature] }
1172
+ request[:image_context] = image_context if image_context
1173
+ request
1174
+ end
1175
+ batch_request = { requests: requests }
1176
+
1177
+ if async
1178
+ requests.map! do |request|
1179
+ {
1180
+ input_config: {
1181
+ gcs_source: {
1182
+ uri: request[:image][:source][:gcs_image_uri]
1183
+ },
1184
+ mime_type: mime_type
1185
+ },
1186
+ features: request[:features],
1187
+ output_config: {
1188
+ gcs_destination: {
1189
+ uri: destination
1190
+ },
1191
+ batch_size: batch_size
1192
+ }
1193
+ }
1194
+ end
1195
+ async_batch_annotate_files batch_request, options, &block
1196
+ else
1197
+ batch_annotate_images batch_request, options, &block
1198
+ end
1199
+ end
1200
+
1201
+ private
1202
+
1203
+ def normalize_image image
1204
+ formatted_image =
1205
+ if image.respond_to? :binmode
1206
+ { content: image.binmode.read }
1207
+ elsif image.is_a? String
1208
+ if File.file? image
1209
+ { content: File.binread(image) }
1210
+ elsif image =~ URI::DEFAULT_PARSER.make_regexp
1211
+ if URI(image).scheme == "gs"
1212
+ { source: { gcs_image_uri: image } }
1213
+ else
1214
+ { source: { image_uri: image } }
1215
+ end
1216
+ end
1217
+ end
1218
+ raise TypeError, "Image must be a filepath, url, or IO object" unless formatted_image
1219
+ formatted_image
1220
+ end
1221
+ end
1222
+ end
1223
+ end
1224
+ end
1225
+ end
1226
+ end
1227
+
1228
+ # rubocop:enable Style/Documentation