<NME> vision.rb
<BEF> # frozen_string_literal: true

# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Auto-generated by gapic-generator-ruby. DO NOT EDIT!

# Require this file early so that the version constant gets defined before
# requiring "google/cloud". This is because google-cloud-core will load the
# entrypoint (gem name) file, which in turn re-requires this file (hence
# causing a require cycle) unless the version constant is already defined.
require "google/cloud/vision/version"

require "googleauth"
gem "google-cloud-core"
require "google/cloud" unless defined? ::Google::Cloud.new
require "google/cloud/config"

# Set the default configuration
::Google::Cloud.configure.add_config! :vision do |config|
  config.add_field! :endpoint,      "vision.googleapis.com", match: ::String
  config.add_field! :credentials,   nil, match: [::String, ::Hash, ::Google::Auth::Credentials]
  config.add_field! :scope,         nil, match: [::Array, ::String]
  config.add_field! :lib_name,      nil, match: ::String
  config.add_field! :lib_version,   nil, match: ::String
  config.add_field! :interceptors,  nil, match: ::Array
  config.add_field! :timeout,       nil, match: ::Numeric
  config.add_field! :metadata,      nil, match: ::Hash
  config.add_field! :retry_policy,  nil, match: [::Hash, ::Proc]
  config.add_field! :quota_project, nil, match: ::String
end

module Google
  module Cloud
    module Vision
      ##
      # Create a new client object for ProductSearch.
      #
      # By default, this returns an instance of
      # [Google::Cloud::Vision::V1::ProductSearch::Client](https://googleapis.dev/ruby/google-cloud-vision-v1/latest/Google/Cloud/Vision/V1/ProductSearch/Client.html)
      # for version V1 of the API.
      # However, you can specify specify a different API version by passing it in the
      # `version` parameter. If the ProductSearch service is
      # supported by that API version, and the corresponding gem is available, the
    # require "google/cloud/vision"
    #
    # image_annotator_client = Google::Cloud::Vision::ImageAnnotator.new
    # gcs_image_uri = "gs://gapic-toolkit/President_Barack_Obama.jpg"
    # source = { gcs_image_uri: gcs_image_uri }
    # image = { source: source }
    # type = :FACE_DETECTION
      # - The API has a collection of ProductSet resources, named
      # `projects/*/locations/*/productSets/*`, which acts as a way to put different
      # products into groups to limit identification.
      #
      # In parallel,
      #
      # - The API has a collection of Product resources, named
      #   `projects/*/locations/*/products/*`
      #
      # - Each Product has a collection of ReferenceImage resources, named
      #   `projects/*/locations/*/products/*/referenceImages/*`
      #
      # @param version [::String, ::Symbol] The API version to connect to. Optional.
      #   Defaults to `:v1`.
      # @return [ProductSearch::Client] A client object for the specified version.
      #
      def self.product_search version: :v1, &block
        require "google/cloud/vision/#{version.to_s.downcase}"

        package_name = Google::Cloud::Vision
                       .constants
                       .select { |sym| sym.to_s.downcase == version.to_s.downcase.tr("_", "") }
                       .first
        package_module = Google::Cloud::Vision.const_get package_name
        package_module.const_get(:ProductSearch).const_get(:Client).new(&block)
      end

      ##
      # Create a new client object for ImageAnnotator.
      #
      # By default, this returns an instance of
      # [Google::Cloud::Vision::V1::ImageAnnotator::Client](https://googleapis.dev/ruby/google-cloud-vision-v1/latest/Google/Cloud/Vision/V1/ImageAnnotator/Client.html)
      # for version V1 of the API.
      # However, you can specify specify a different API version by passing it in the
      # `version` parameter. If the ImageAnnotator service is
      # supported by that API version, and the corresponding gem is available, the
      # appropriate versioned client will be returned.
      #
      # ## About ImageAnnotator
      #
      # Service that performs Google Cloud Vision API detection tasks over client
      # images, such as face, landmark, logo, label, and text detection. The
      # ImageAnnotator service returns detected entities from the images.
      #
      # @param version [::String, ::Symbol] The API version to connect to. Optional.
      #   Defaults to `:v1`.
      # @return [ImageAnnotator::Client] A client object for the specified version.
      #
      def self.image_annotator version: :v1, &block
        require "google/cloud/vision/#{version.to_s.downcase}"

        package_name = Google::Cloud::Vision
                       .constants
                       .select { |sym| sym.to_s.downcase == version.to_s.downcase.tr("_", "") }
                       .first
        package_module = Google::Cloud::Vision.const_get package_name
        package_module.const_get(:ImageAnnotator).const_get(:Client).new(&block)
      end

      ##
      # Configure the google-cloud-vision library.
      #
      # The following configuration parameters are supported:
      #
      # * `credentials` (*type:* `String, Hash, Google::Auth::Credentials`) -
      #   The path to the keyfile as a String, the contents of the keyfile as a
      #   Hash, or a Google::Auth::Credentials object.
      # * `lib_name` (*type:* `String`) -
      #   The library name as recorded in instrumentation and logging.
      # * `lib_version` (*type:* `String`) -
      #   The library version as recorded in instrumentation and logging.
      # * `interceptors` (*type:* `Array<GRPC::ClientInterceptor>`) -
      #   An array of interceptors that are run before calls are executed.
      # * `timeout` (*type:* `Numeric`) -
      #   Default timeout in seconds.
      # * `metadata` (*type:* `Hash{Symbol=>String}`) -
      #   Additional gRPC headers to be sent with the call.
      # * `retry_policy` (*type:* `Hash`) -
      #   The retry policy. The value is a hash with the following keys:
      #     * `:initial_delay` (*type:* `Numeric`) - The initial delay in seconds.
      #     * `:max_delay` (*type:* `Numeric`) - The max delay in seconds.
      #     * `:multiplier` (*type:* `Numeric`) - The incremental backoff multiplier.
      #     * `:retry_codes` (*type:* `Array<String>`) -
      #       The error codes that should trigger a retry.
      #
      # @return [::Google::Cloud::Config] The default configuration used by this library
      #
      def self.configure
        yield ::Google::Cloud.configure.vision if block_given?

        ::Google::Cloud.configure.vision
      end
    end
  end
end

helper_path = ::File.join __dir__, "vision", "helpers.rb"
require "google/cloud/vision/helpers" if ::File.file? helper_path

<MSG> docs(vision): Update GCS URL used in code examples

pr: #4375
<DFF> @@ -56,7 +56,7 @@ module Google
     # require "google/cloud/vision"
     #
     # image_annotator_client = Google::Cloud::Vision::ImageAnnotator.new
-    # gcs_image_uri = "gs://gapic-toolkit/President_Barack_Obama.jpg"
+    # gcs_image_uri = "gs://cloud-samples-data/vision/face_detection/celebrity_recognition/sergey.jpg"
     # source = { gcs_image_uri: gcs_image_uri }
     # image = { source: source }
     # type = :FACE_DETECTION

{'addition_count': 1, 'commit_subject': 'docs(vision): Update GCS URL used in code examples', 'deletion_count': 1, 'file_extension': '.rb', 'lang': 'rb', 'license': 'apache-2.0', 'repo_name': 'googleapis/google-cloud-ruby'}