google-cloud-vision 0.37.2 → 1.0.2

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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +2 -1
  3. data/AUTHENTICATION.md +51 -59
  4. data/LICENSE.md +203 -0
  5. data/MIGRATING.md +343 -0
  6. data/README.md +94 -49
  7. data/lib/{google/cloud/vision/v1/doc/google/protobuf/wrappers.rb → google-cloud-vision.rb} +4 -11
  8. data/lib/google/cloud/vision.rb +131 -214
  9. data/lib/google/cloud/vision/version.rb +6 -2
  10. metadata +74 -102
  11. data/LICENSE +0 -201
  12. data/lib/google/cloud/vision/v1.rb +0 -249
  13. data/lib/google/cloud/vision/v1/credentials.rb +0 -42
  14. data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/geometry.rb +0 -66
  15. data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/image_annotator.rb +0 -923
  16. data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/product_search.rb +0 -115
  17. data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/product_search_service.rb +0 -569
  18. data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/text_annotation.rb +0 -254
  19. data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/web_detection.rb +0 -102
  20. data/lib/google/cloud/vision/v1/doc/google/longrunning/operations.rb +0 -51
  21. data/lib/google/cloud/vision/v1/doc/google/protobuf/any.rb +0 -131
  22. data/lib/google/cloud/vision/v1/doc/google/protobuf/empty.rb +0 -29
  23. data/lib/google/cloud/vision/v1/doc/google/protobuf/field_mask.rb +0 -222
  24. data/lib/google/cloud/vision/v1/doc/google/protobuf/timestamp.rb +0 -113
  25. data/lib/google/cloud/vision/v1/doc/google/rpc/status.rb +0 -39
  26. data/lib/google/cloud/vision/v1/doc/google/type/color.rb +0 -161
  27. data/lib/google/cloud/vision/v1/doc/google/type/latlng.rb +0 -31
  28. data/lib/google/cloud/vision/v1/geometry_pb.rb +0 -39
  29. data/lib/google/cloud/vision/v1/helpers.rb +0 -1154
  30. data/lib/google/cloud/vision/v1/image_annotator_client.rb +0 -516
  31. data/lib/google/cloud/vision/v1/image_annotator_client_config.json +0 -46
  32. data/lib/google/cloud/vision/v1/image_annotator_pb.rb +0 -344
  33. data/lib/google/cloud/vision/v1/image_annotator_services_pb.rb +0 -74
  34. data/lib/google/cloud/vision/v1/product_search_client.rb +0 -1490
  35. data/lib/google/cloud/vision/v1/product_search_client_config.json +0 -121
  36. data/lib/google/cloud/vision/v1/product_search_pb.rb +0 -54
  37. data/lib/google/cloud/vision/v1/product_search_service_pb.rb +0 -207
  38. data/lib/google/cloud/vision/v1/product_search_service_services_pb.rb +0 -233
  39. data/lib/google/cloud/vision/v1/text_annotation_pb.rb +0 -94
  40. data/lib/google/cloud/vision/v1/web_detection_pb.rb +0 -51
  41. data/lib/google/cloud/vision/v1p3beta1.rb +0 -253
  42. data/lib/google/cloud/vision/v1p3beta1/credentials.rb +0 -42
  43. data/lib/google/cloud/vision/v1p3beta1/doc/google/cloud/vision/v1p3beta1/geometry.rb +0 -72
  44. data/lib/google/cloud/vision/v1p3beta1/doc/google/cloud/vision/v1p3beta1/image_annotator.rb +0 -763
  45. data/lib/google/cloud/vision/v1p3beta1/doc/google/cloud/vision/v1p3beta1/product_search.rb +0 -156
  46. data/lib/google/cloud/vision/v1p3beta1/doc/google/cloud/vision/v1p3beta1/product_search_service.rb +0 -538
  47. data/lib/google/cloud/vision/v1p3beta1/doc/google/cloud/vision/v1p3beta1/text_annotation.rb +0 -255
  48. data/lib/google/cloud/vision/v1p3beta1/doc/google/cloud/vision/v1p3beta1/web_detection.rb +0 -101
  49. data/lib/google/cloud/vision/v1p3beta1/doc/google/longrunning/operations.rb +0 -51
  50. data/lib/google/cloud/vision/v1p3beta1/doc/google/protobuf/any.rb +0 -131
  51. data/lib/google/cloud/vision/v1p3beta1/doc/google/protobuf/empty.rb +0 -29
  52. data/lib/google/cloud/vision/v1p3beta1/doc/google/protobuf/field_mask.rb +0 -222
  53. data/lib/google/cloud/vision/v1p3beta1/doc/google/protobuf/timestamp.rb +0 -113
  54. data/lib/google/cloud/vision/v1p3beta1/doc/google/protobuf/wrappers.rb +0 -26
  55. data/lib/google/cloud/vision/v1p3beta1/doc/google/rpc/status.rb +0 -39
  56. data/lib/google/cloud/vision/v1p3beta1/doc/google/type/color.rb +0 -161
  57. data/lib/google/cloud/vision/v1p3beta1/doc/google/type/latlng.rb +0 -31
  58. data/lib/google/cloud/vision/v1p3beta1/geometry_pb.rb +0 -43
  59. data/lib/google/cloud/vision/v1p3beta1/helpers.rb +0 -1154
  60. data/lib/google/cloud/vision/v1p3beta1/image_annotator_client.rb +0 -312
  61. data/lib/google/cloud/vision/v1p3beta1/image_annotator_client_config.json +0 -36
  62. data/lib/google/cloud/vision/v1p3beta1/image_annotator_pb.rb +0 -304
  63. data/lib/google/cloud/vision/v1p3beta1/image_annotator_services_pb.rb +0 -55
  64. data/lib/google/cloud/vision/v1p3beta1/product_search_client.rb +0 -1419
  65. data/lib/google/cloud/vision/v1p3beta1/product_search_client_config.json +0 -116
  66. data/lib/google/cloud/vision/v1p3beta1/product_search_pb.rb +0 -64
  67. data/lib/google/cloud/vision/v1p3beta1/product_search_service_pb.rb +0 -191
  68. data/lib/google/cloud/vision/v1p3beta1/product_search_service_services_pb.rb +0 -226
  69. data/lib/google/cloud/vision/v1p3beta1/text_annotation_pb.rb +0 -94
  70. data/lib/google/cloud/vision/v1p3beta1/web_detection_pb.rb +0 -51
data/README.md CHANGED
@@ -1,67 +1,54 @@
1
- # Ruby Client for Cloud Vision API ([Alpha](https://github.com/googleapis/google-cloud-ruby#versioning))
1
+ # Ruby Client for the Cloud Vision API
2
2
 
3
- [Cloud Vision API][Product Documentation]:
4
- Integrates Google Vision features, including image labeling, face, logo,
5
- and landmark detection, optical character recognition (OCR), and detection
6
- of explicit content, into applications.
7
- - [Client Library Documentation][]
8
- - [Product Documentation][]
3
+ API Client library for the Cloud Vision API
9
4
 
10
- ## Quick Start
11
- In order to use this library, you first need to go through the following
12
- steps:
5
+ Cloud Vision API allows developers to easily integrate vision detection features within applications, including image labeling, face and landmark detection, optical character recognition (OCR), and tagging of explicit content.
13
6
 
14
- 1. [Select or create a Cloud Platform project.](https://console.cloud.google.com/project)
15
- 2. [Enable billing for your project.](https://cloud.google.com/billing/docs/how-to/modify-project#enable_billing_for_a_project)
16
- 3. [Enable the Cloud Vision API.](https://console.cloud.google.com/apis/library/vision.googleapis.com)
17
- 4. [Setup Authentication.](https://googleapis.dev/ruby/google-cloud-vision/latest/file.AUTHENTICATION.html)
7
+ Actual client classes for the various versions of this API are defined in
8
+ _versioned_ client gems, with names of the form `google-cloud-vision-v*`.
9
+ The gem `google-cloud-vision` is the main client library that brings the
10
+ verisoned gems in as dependencies, and provides high-level methods for
11
+ constructing clients. More information on versioned clients can be found below
12
+ in the section titled *Which client should I use?*.
13
+
14
+ View the [Client Library Documentation](https://googleapis.dev/ruby/google-cloud-vision/latest)
15
+ for this library, google-cloud-vision, to see the convenience methods for
16
+ constructing client objects. Reference documentation for the client objects
17
+ themselves can be found in the client library documentation for the versioned
18
+ client gems:
19
+ [google-cloud-vision-v1](https://googleapis.dev/ruby/google-cloud-vision-v1/latest),
20
+ [google-cloud-vision-v1p3beta1](https://googleapis.dev/ruby/google-cloud-vision-v1p3beta1/latest).
21
+
22
+ See also the [Product Documentation](https://cloud.google.com/vision)
23
+ for more usage information.
24
+
25
+ ## Quick Start
18
26
 
19
- ### Installation
20
27
  ```
21
28
  $ gem install google-cloud-vision
22
29
  ```
23
30
 
24
- ### Migration Guide
25
-
26
- The 0.32.0 release introduced breaking changes relative to the previous release,
27
- 0.31.0. For more details and instructions to migrate your code, please visit the
28
- [migration
29
- guide](https://cloud.google.com/vision/docs/ruby-client-migration).
30
-
31
- ### Preview
32
- #### ImageAnnotatorClient
33
- ```rb
34
- require "google/cloud/vision"
35
-
36
- image_annotator_client = Google::Cloud::Vision::ImageAnnotator.new
37
- gcs_image_uri = "gs://cloud-samples-data/vision/face_detection/celebrity_recognition/sergey.jpg"
38
- source = { gcs_image_uri: gcs_image_uri }
39
- image = { source: source }
40
- type = :FACE_DETECTION
41
- features_element = { type: type }
42
- features = [features_element]
43
- requests_element = { image: image, features: features }
44
- requests = [requests_element]
45
- response = image_annotator_client.batch_annotate_images(requests)
46
- ```
31
+ In order to use this library, you first need to go through the following steps:
47
32
 
48
- ### Next Steps
49
- - Read the [Client Library Documentation][] for Cloud Vision API
50
- to see other available methods on the client.
51
- - Read the [Cloud Vision API Product documentation][Product Documentation]
52
- to learn more about the product and see How-to Guides.
53
- - View this [repository's main README](https://github.com/googleapis/google-cloud-ruby/blob/master/README.md)
54
- to see the full list of Cloud APIs that we cover.
33
+ 1. [Select or create a Cloud Platform project.](https://console.cloud.google.com/project)
34
+ 1. [Enable billing for your project.](https://cloud.google.com/billing/docs/how-to/modify-project#enable_billing_for_a_project)
35
+ 1. [Enable the API.](https://console.cloud.google.com/apis/library/vision.googleapis.com)
36
+ 1. {file:AUTHENTICATION.md Set up authentication.}
55
37
 
56
- [Client Library Documentation]: https://googleapis.dev/ruby/google-cloud-vision/latest
57
- [Product Documentation]: https://cloud.google.com/vision
38
+ ## Migrating from 0.x versions
39
+
40
+ The 1.0 release of the google-cloud-vision client is a significant upgrade
41
+ based on a [next-gen code generator](https://github.com/googleapis/gapic-generator-ruby),
42
+ and includes substantial interface changes. Existing code written for earlier
43
+ versions of this library will likely require updates to use this version.
44
+ See the {file:MIGRATING.md MIGRATING.md} document for more information.
58
45
 
59
46
  ## Enabling Logging
60
47
 
61
48
  To enable logging for this library, set the logger for the underlying [gRPC](https://github.com/grpc/grpc/tree/master/src/ruby) library.
62
- The logger that you set may be a Ruby stdlib [`Logger`](https://ruby-doc.org/stdlib-2.5.0/libdoc/logger/rdoc/Logger.html) as shown below,
49
+ The logger that you set may be a Ruby stdlib [`Logger`](https://ruby-doc.org/stdlib/libdoc/logger/rdoc/Logger.html) as shown below,
63
50
  or a [`Google::Cloud::Logging::Logger`](https://googleapis.dev/ruby/google-cloud-logging/latest)
64
- that will write logs to [Stackdriver Logging](https://cloud.google.com/logging/). See [grpc/logconfig.rb](https://github.com/grpc/grpc/blob/master/src/ruby/lib/grpc/logconfig.rb)
51
+ that will write logs to [Cloud Logging](https://cloud.google.com/logging/). See [grpc/logconfig.rb](https://github.com/grpc/grpc/blob/master/src/ruby/lib/grpc/logconfig.rb)
65
52
  and the gRPC [spec_helper.rb](https://github.com/grpc/grpc/blob/master/src/ruby/spec/spec_helper.rb) for additional information.
66
53
 
67
54
  Configuring a Ruby stdlib logger:
@@ -92,3 +79,61 @@ in security maintenance, and not end of life. Currently, this means Ruby 2.4
92
79
  and later. Older versions of Ruby _may_ still work, but are unsupported and not
93
80
  recommended. See https://www.ruby-lang.org/en/downloads/branches/ for details
94
81
  about the Ruby support schedule.
82
+
83
+ ## Which client should I use?
84
+
85
+ Most modern Ruby client libraries for Google APIs come in two flavors: the main
86
+ client library with a name such as `google-cloud-vision`,
87
+ and lower-level _versioned_ client libraries with names such as
88
+ `google-cloud-vision-v1`.
89
+ _In most cases, you should install the main client._
90
+
91
+ ### What's the difference between the main client and a versioned client?
92
+
93
+ A _versioned client_ provides a basic set of data types and client classes for
94
+ a _single version_ of a specific service. (That is, for a service with multiple
95
+ versions, there might be a separate versioned client for each service version.)
96
+ Most versioned clients are written and maintained by a code generator.
97
+
98
+ The _main client_ is designed to provide you with the _recommended_ client
99
+ interfaces for the service. There will be only one main client for any given
100
+ service, even a service with multiple versions. The main client includes
101
+ factory methods for constructing the client objects we recommend for most
102
+ users. In some cases, those will be classes provided by an underlying versioned
103
+ client; in other cases, they will be handwritten higher-level client objects
104
+ with additional capabilities, convenience methods, or best practices built in.
105
+ Generally, the main client will default to a recommended service version,
106
+ although in some cases you can override this if you need to talk to a specific
107
+ service version.
108
+
109
+ ### Why would I want to use the main client?
110
+
111
+ We recommend that most users install the main client gem for a service. You can
112
+ identify this gem as the one _without_ a version in its name, e.g.
113
+ `google-cloud-vision`.
114
+ The main client is recommended because it will embody the best practices for
115
+ accessing the service, and may also provide more convenient interfaces or
116
+ tighter integration into frameworks and third-party libraries. In addition, the
117
+ documentation and samples published by Google will generally demonstrate use of
118
+ the main client.
119
+
120
+ ### Why would I want to use a versioned client?
121
+
122
+ You can use a versioned client if you are content with a possibly lower-level
123
+ class interface, you explicitly want to avoid features provided by the main
124
+ client, or you want to access a specific service version not be covered by the
125
+ main client. You can identify versioned client gems because the service version
126
+ is part of the name, e.g. `google-cloud-vision-v1`.
127
+
128
+ ### What about the google-apis-<name> clients?
129
+
130
+ Client library gems with names that begin with `google-apis-` are based on an
131
+ older code generation technology. They talk to a REST/JSON backend (whereas
132
+ most modern clients talk to a [gRPC](https://grpc.io/) backend) and they may
133
+ not offer the same performance, features, and ease of use provided by more
134
+ modern clients.
135
+
136
+ The `google-apis-` clients have wide coverage across Google services, so you
137
+ might need to use one if there is no modern client available for the service.
138
+ However, if a modern client is available, we generally recommend it over the
139
+ older `google-apis-` clients.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright 2020 Google LLC
2
4
  #
3
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -12,15 +14,6 @@
12
14
  # See the License for the specific language governing permissions and
13
15
  # limitations under the License.
14
16
 
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
15
18
 
16
- module Google
17
- module Protobuf
18
- # Wrapper message for `float`.
19
- #
20
- # The JSON representation for `FloatValue` is JSON number.
21
- # @!attribute [rw] value
22
- # @return [Float]
23
- # The float value.
24
- class FloatValue; end
25
- end
26
- end
19
+ require "google/cloud/vision" unless defined? Google::Cloud::Vision::VERSION
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright 2020 Google LLC
2
4
  #
3
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -12,232 +14,147 @@
12
14
  # See the License for the specific language governing permissions and
13
15
  # limitations under the License.
14
16
 
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+ # Require this file early so that the version constant gets defined before
20
+ # requiring "google/cloud". This is because google-cloud-core will load the
21
+ # entrypoint (gem name) file, which in turn re-requires this file (hence
22
+ # causing a require cycle) unless the version constant is already defined.
23
+ require "google/cloud/vision/version"
15
24
 
16
- require "google/gax"
17
- require "pathname"
25
+ require "googleauth"
26
+ gem "google-cloud-core"
27
+ require "google/cloud" unless defined? ::Google::Cloud.new
28
+ require "google/cloud/config"
29
+
30
+ # Set the default configuration
31
+ ::Google::Cloud.configure.add_config! :vision do |config|
32
+ config.add_field! :endpoint, "vision.googleapis.com", match: ::String
33
+ config.add_field! :credentials, nil, match: [::String, ::Hash, ::Google::Auth::Credentials]
34
+ config.add_field! :scope, nil, match: [::Array, ::String]
35
+ config.add_field! :lib_name, nil, match: ::String
36
+ config.add_field! :lib_version, nil, match: ::String
37
+ config.add_field! :interceptors, nil, match: ::Array
38
+ config.add_field! :timeout, nil, match: ::Numeric
39
+ config.add_field! :metadata, nil, match: ::Hash
40
+ config.add_field! :retry_policy, nil, match: [::Hash, ::Proc]
41
+ config.add_field! :quota_project, nil, match: ::String
42
+ end
18
43
 
19
44
  module Google
20
45
  module Cloud
21
- # rubocop:disable LineLength
22
-
23
- ##
24
- # # Ruby Client for Cloud Vision API ([Alpha](https://github.com/googleapis/google-cloud-ruby#versioning))
25
- #
26
- # [Cloud Vision API][Product Documentation]:
27
- # Integrates Google Vision features, including image labeling, face, logo,
28
- # and landmark detection, optical character recognition (OCR), and detection
29
- # of explicit content, into applications.
30
- # - [Product Documentation][]
31
- #
32
- # ## Quick Start
33
- # In order to use this library, you first need to go through the following
34
- # steps:
35
- #
36
- # 1. [Select or create a Cloud Platform project.](https://console.cloud.google.com/project)
37
- # 2. [Enable billing for your project.](https://cloud.google.com/billing/docs/how-to/modify-project#enable_billing_for_a_project)
38
- # 3. [Enable the Cloud Vision API.](https://console.cloud.google.com/apis/library/vision.googleapis.com)
39
- # 4. [Setup Authentication.](https://googleapis.dev/ruby/google-cloud-vision/latest/file.AUTHENTICATION.html)
40
- #
41
- # ### Installation
42
- # ```
43
- # $ gem install google-cloud-vision
44
- # ```
45
- #
46
- # ### Migration Guide
47
- #
48
- # The 0.32.0 release introduced breaking changes relative to the previous
49
- # release, 0.31.0. For more details and instructions to migrate your code,
50
- # please visit the [migration
51
- # guide](https://cloud.google.com/vision/docs/ruby-client-migration).
52
- #
53
- # ### Preview
54
- # #### ImageAnnotatorClient
55
- # ```rb
56
- # require "google/cloud/vision"
57
- #
58
- # image_annotator_client = Google::Cloud::Vision::ImageAnnotator.new
59
- # gcs_image_uri = "gs://cloud-samples-data/vision/face_detection/celebrity_recognition/sergey.jpg"
60
- # source = { gcs_image_uri: gcs_image_uri }
61
- # image = { source: source }
62
- # type = :FACE_DETECTION
63
- # features_element = { type: type }
64
- # features = [features_element]
65
- # requests_element = { image: image, features: features }
66
- # requests = [requests_element]
67
- # response = image_annotator_client.batch_annotate_images(requests)
68
- # ```
69
- #
70
- # ### Next Steps
71
- # - Read the [Cloud Vision API Product documentation][Product Documentation]
72
- # to learn more about the product and see How-to Guides.
73
- # - View this [repository's main README](https://github.com/googleapis/google-cloud-ruby/blob/master/README.md)
74
- # to see the full list of Cloud APIs that we cover.
75
- #
76
- # [Product Documentation]: https://cloud.google.com/vision
77
- #
78
- # ## Enabling Logging
79
- #
80
- # To enable logging for this library, set the logger for the underlying [gRPC](https://github.com/grpc/grpc/tree/master/src/ruby) library.
81
- # The logger that you set may be a Ruby stdlib [`Logger`](https://ruby-doc.org/stdlib-2.5.0/libdoc/logger/rdoc/Logger.html) as shown below,
82
- # or a [`Google::Cloud::Logging::Logger`](https://googleapis.dev/ruby/google-cloud-logging/latest)
83
- # that will write logs to [Stackdriver Logging](https://cloud.google.com/logging/). See [grpc/logconfig.rb](https://github.com/grpc/grpc/blob/master/src/ruby/lib/grpc/logconfig.rb)
84
- # and the gRPC [spec_helper.rb](https://github.com/grpc/grpc/blob/master/src/ruby/spec/spec_helper.rb) for additional information.
85
- #
86
- # Configuring a Ruby stdlib logger:
87
- #
88
- # ```ruby
89
- # require "logger"
90
- #
91
- # module MyLogger
92
- # LOGGER = Logger.new $stderr, level: Logger::WARN
93
- # def logger
94
- # LOGGER
95
- # end
96
- # end
97
- #
98
- # # Define a gRPC module-level logger method before grpc/logconfig.rb loads.
99
- # module GRPC
100
- # extend MyLogger
101
- # end
102
- # ```
103
- #
104
46
  module Vision
105
- # rubocop:enable LineLength
106
-
107
- FILE_DIR = File.realdirpath(Pathname.new(__FILE__).join("..").join("vision"))
47
+ ##
48
+ # Create a new client object for ProductSearch.
49
+ #
50
+ # By default, this returns an instance of
51
+ # [Google::Cloud::Vision::V1::ProductSearch::Client](https://googleapis.dev/ruby/google-cloud-vision-v1/latest/Google/Cloud/Vision/V1/ProductSearch/Client.html)
52
+ # for version V1 of the API.
53
+ # However, you can specify specify a different API version by passing it in the
54
+ # `version` parameter. If the ProductSearch service is
55
+ # supported by that API version, and the corresponding gem is available, the
56
+ # appropriate versioned client will be returned.
57
+ #
58
+ # ## About ProductSearch
59
+ #
60
+ # Manages Products and ProductSets of reference images for use in product
61
+ # search. It uses the following resource model:
62
+ #
63
+ # - The API has a collection of ProductSet resources, named
64
+ # `projects/*/locations/*/productSets/*`, which acts as a way to put different
65
+ # products into groups to limit identification.
66
+ #
67
+ # In parallel,
68
+ #
69
+ # - The API has a collection of Product resources, named
70
+ # `projects/*/locations/*/products/*`
71
+ #
72
+ # - Each Product has a collection of ReferenceImage resources, named
73
+ # `projects/*/locations/*/products/*/referenceImages/*`
74
+ #
75
+ # @param version [::String, ::Symbol] The API version to connect to. Optional.
76
+ # Defaults to `:v1`.
77
+ # @return [ProductSearch::Client] A client object for the specified version.
78
+ #
79
+ def self.product_search version: :v1, &block
80
+ require "google/cloud/vision/#{version.to_s.downcase}"
108
81
 
109
- AVAILABLE_VERSIONS = Dir["#{FILE_DIR}/*"]
110
- .select { |file| File.directory?(file) }
111
- .select { |dir| Google::Gax::VERSION_MATCHER.match(File.basename(dir)) }
112
- .select { |dir| File.exist?(dir + ".rb") }
113
- .map { |dir| File.basename(dir) }
82
+ package_name = Google::Cloud::Vision
83
+ .constants
84
+ .select { |sym| sym.to_s.downcase == version.to_s.downcase.tr("_", "") }
85
+ .first
86
+ package_module = Google::Cloud::Vision.const_get package_name
87
+ package_module.const_get(:ProductSearch).const_get(:Client).new(&block)
88
+ end
114
89
 
115
- module ImageAnnotator
116
- ##
117
- # Service that performs Google Cloud Vision API detection tasks over client
118
- # images, such as face, landmark, logo, label, and text detection. The
119
- # ImageAnnotator service returns detected entities from the images.
120
- #
121
- # @param version [Symbol, String]
122
- # The major version of the service to be used. By default :v1
123
- # is used.
124
- # @overload new(version:, credentials:, scopes:, client_config:, timeout:)
125
- # @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc]
126
- # Provides the means for authenticating requests made by the client. This parameter can
127
- # be many types.
128
- # A `Google::Auth::Credentials` uses a the properties of its represented keyfile for
129
- # authenticating requests made by this client.
130
- # A `String` will be treated as the path to the keyfile to be used for the construction of
131
- # credentials for this client.
132
- # A `Hash` will be treated as the contents of a keyfile to be used for the construction of
133
- # credentials for this client.
134
- # A `GRPC::Core::Channel` will be used to make calls through.
135
- # A `GRPC::Core::ChannelCredentials` for the setting up the RPC client. The channel credentials
136
- # should already be composed with a `GRPC::Core::CallCredentials` object.
137
- # A `Proc` will be used as an updater_proc for the Grpc channel. The proc transforms the
138
- # metadata for requests, generally, to give OAuth credentials.
139
- # @param scopes [Array<String>]
140
- # The OAuth scopes for this service. This parameter is ignored if
141
- # an updater_proc is supplied.
142
- # @param client_config [Hash]
143
- # A Hash for call options for each method. See
144
- # Google::Gax#construct_settings for the structure of
145
- # this data. Falls back to the default config if not specified
146
- # or the specified config is missing data points.
147
- # @param timeout [Numeric]
148
- # The default timeout, in seconds, for calls made through this client.
149
- # @param metadata [Hash]
150
- # Default metadata to be sent with each request. This can be overridden on a per call basis.
151
- # @param service_address [String]
152
- # Override for the service hostname, or `nil` to leave as the default.
153
- # @param service_port [Integer]
154
- # Override for the service port, or `nil` to leave as the default.
155
- # @param exception_transformer [Proc]
156
- # An optional proc that intercepts any exceptions raised during an API call to inject
157
- # custom error handling.
158
- def self.new(*args, version: :v1, **kwargs)
159
- unless AVAILABLE_VERSIONS.include?(version.to_s.downcase)
160
- raise "The version: #{version} is not available. The available versions " \
161
- "are: [#{AVAILABLE_VERSIONS.join(", ")}]"
162
- end
90
+ ##
91
+ # Create a new client object for ImageAnnotator.
92
+ #
93
+ # By default, this returns an instance of
94
+ # [Google::Cloud::Vision::V1::ImageAnnotator::Client](https://googleapis.dev/ruby/google-cloud-vision-v1/latest/Google/Cloud/Vision/V1/ImageAnnotator/Client.html)
95
+ # for version V1 of the API.
96
+ # However, you can specify specify a different API version by passing it in the
97
+ # `version` parameter. If the ImageAnnotator service is
98
+ # supported by that API version, and the corresponding gem is available, the
99
+ # appropriate versioned client will be returned.
100
+ #
101
+ # ## About ImageAnnotator
102
+ #
103
+ # Service that performs Google Cloud Vision API detection tasks over client
104
+ # images, such as face, landmark, logo, label, and text detection. The
105
+ # ImageAnnotator service returns detected entities from the images.
106
+ #
107
+ # @param version [::String, ::Symbol] The API version to connect to. Optional.
108
+ # Defaults to `:v1`.
109
+ # @return [ImageAnnotator::Client] A client object for the specified version.
110
+ #
111
+ def self.image_annotator version: :v1, &block
112
+ require "google/cloud/vision/#{version.to_s.downcase}"
163
113
 
164
- require "#{FILE_DIR}/#{version.to_s.downcase}"
165
- version_module = Google::Cloud::Vision
166
- .constants
167
- .select {|sym| sym.to_s.downcase == version.to_s.downcase}
168
- .first
169
- Google::Cloud::Vision.const_get(version_module)::ImageAnnotator.new(*args, **kwargs)
170
- end
114
+ package_name = Google::Cloud::Vision
115
+ .constants
116
+ .select { |sym| sym.to_s.downcase == version.to_s.downcase.tr("_", "") }
117
+ .first
118
+ package_module = Google::Cloud::Vision.const_get package_name
119
+ package_module.const_get(:ImageAnnotator).const_get(:Client).new(&block)
171
120
  end
172
121
 
173
- module ProductSearch
174
- ##
175
- # Manages Products and ProductSets of reference images for use in product
176
- # search. It uses the following resource model:
177
- #
178
- # * The API has a collection of {Google::Cloud::Vision::V1::ProductSet ProductSet} resources, named
179
- # `projects/*/locations/*/productSets/*`, which acts as a way to put different
180
- # products into groups to limit identification.
181
- #
182
- # In parallel,
183
- #
184
- # * The API has a collection of {Google::Cloud::Vision::V1::Product Product} resources, named
185
- # `projects/*/locations/*/products/*`
186
- #
187
- # * Each {Google::Cloud::Vision::V1::Product Product} has a collection of {Google::Cloud::Vision::V1::ReferenceImage ReferenceImage} resources, named
188
- # `projects/*/locations/*/products/*/referenceImages/*`
189
- #
190
- # @param version [Symbol, String]
191
- # The major version of the service to be used. By default :v1
192
- # is used.
193
- # @overload new(version:, credentials:, scopes:, client_config:, timeout:)
194
- # @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc]
195
- # Provides the means for authenticating requests made by the client. This parameter can
196
- # be many types.
197
- # A `Google::Auth::Credentials` uses a the properties of its represented keyfile for
198
- # authenticating requests made by this client.
199
- # A `String` will be treated as the path to the keyfile to be used for the construction of
200
- # credentials for this client.
201
- # A `Hash` will be treated as the contents of a keyfile to be used for the construction of
202
- # credentials for this client.
203
- # A `GRPC::Core::Channel` will be used to make calls through.
204
- # A `GRPC::Core::ChannelCredentials` for the setting up the RPC client. The channel credentials
205
- # should already be composed with a `GRPC::Core::CallCredentials` object.
206
- # A `Proc` will be used as an updater_proc for the Grpc channel. The proc transforms the
207
- # metadata for requests, generally, to give OAuth credentials.
208
- # @param scopes [Array<String>]
209
- # The OAuth scopes for this service. This parameter is ignored if
210
- # an updater_proc is supplied.
211
- # @param client_config [Hash]
212
- # A Hash for call options for each method. See
213
- # Google::Gax#construct_settings for the structure of
214
- # this data. Falls back to the default config if not specified
215
- # or the specified config is missing data points.
216
- # @param timeout [Numeric]
217
- # The default timeout, in seconds, for calls made through this client.
218
- # @param metadata [Hash]
219
- # Default metadata to be sent with each request. This can be overridden on a per call basis.
220
- # @param service_address [String]
221
- # Override for the service hostname, or `nil` to leave as the default.
222
- # @param service_port [Integer]
223
- # Override for the service port, or `nil` to leave as the default.
224
- # @param exception_transformer [Proc]
225
- # An optional proc that intercepts any exceptions raised during an API call to inject
226
- # custom error handling.
227
- def self.new(*args, version: :v1, **kwargs)
228
- unless AVAILABLE_VERSIONS.include?(version.to_s.downcase)
229
- raise "The version: #{version} is not available. The available versions " \
230
- "are: [#{AVAILABLE_VERSIONS.join(", ")}]"
231
- end
122
+ ##
123
+ # Configure the google-cloud-vision library.
124
+ #
125
+ # The following configuration parameters are supported:
126
+ #
127
+ # * `credentials` (*type:* `String, Hash, Google::Auth::Credentials`) -
128
+ # The path to the keyfile as a String, the contents of the keyfile as a
129
+ # Hash, or a Google::Auth::Credentials object.
130
+ # * `lib_name` (*type:* `String`) -
131
+ # The library name as recorded in instrumentation and logging.
132
+ # * `lib_version` (*type:* `String`) -
133
+ # The library version as recorded in instrumentation and logging.
134
+ # * `interceptors` (*type:* `Array<GRPC::ClientInterceptor>`) -
135
+ # An array of interceptors that are run before calls are executed.
136
+ # * `timeout` (*type:* `Numeric`) -
137
+ # Default timeout in seconds.
138
+ # * `metadata` (*type:* `Hash{Symbol=>String}`) -
139
+ # Additional gRPC headers to be sent with the call.
140
+ # * `retry_policy` (*type:* `Hash`) -
141
+ # The retry policy. The value is a hash with the following keys:
142
+ # * `:initial_delay` (*type:* `Numeric`) - The initial delay in seconds.
143
+ # * `:max_delay` (*type:* `Numeric`) - The max delay in seconds.
144
+ # * `:multiplier` (*type:* `Numeric`) - The incremental backoff multiplier.
145
+ # * `:retry_codes` (*type:* `Array<String>`) -
146
+ # The error codes that should trigger a retry.
147
+ #
148
+ # @return [::Google::Cloud::Config] The default configuration used by this library
149
+ #
150
+ def self.configure
151
+ yield ::Google::Cloud.configure.vision if block_given?
232
152
 
233
- require "#{FILE_DIR}/#{version.to_s.downcase}"
234
- version_module = Google::Cloud::Vision
235
- .constants
236
- .select {|sym| sym.to_s.downcase == version.to_s.downcase}
237
- .first
238
- Google::Cloud::Vision.const_get(version_module)::ProductSearch.new(*args, **kwargs)
239
- end
153
+ ::Google::Cloud.configure.vision
240
154
  end
241
155
  end
242
156
  end
243
157
  end
158
+
159
+ helper_path = ::File.join __dir__, "vision", "helpers.rb"
160
+ require "google/cloud/vision/helpers" if ::File.file? helper_path