lib/google/cloud/vision/v1/image_annotator_client.rb in google-cloud-vision-0.25.0 vs lib/google/cloud/vision/v1/image_annotator_client.rb in google-cloud-vision-0.26.0

- old
+ new

@@ -26,10 +26,11 @@ require "pathname" require "google/gax" require "google/cloud/vision/v1/image_annotator_pb" +require "google/cloud/vision/credentials" module Google module Cloud module Vision module V1 @@ -51,22 +52,32 @@ DEFAULT_TIMEOUT = 30 # The scopes needed to make gRPC calls to all of the methods defined in # this service. ALL_SCOPES = [ - "https://www.googleapis.com/auth/cloud-platform" + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-vision" ].freeze - # @param service_path [String] - # The domain name of the API remote host. - # @param port [Integer] - # The port on which to connect to the remote host. - # @param channel [Channel] - # A Channel object through which to make calls. - # @param chan_creds [Grpc::ChannelCredentials] - # A ChannelCredentials for the setting up the RPC client. - # @param client_config[Hash] + # @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc] + # Provides the means for authenticating requests made by the client. This parameter can + # be many types. + # A `Google::Auth::Credentials` uses a the properties of its represented keyfile for + # authenticating requests made by this client. + # A `String` will be treated as the path to the keyfile to be used for the construction of + # credentials for this client. + # A `Hash` will be treated as the contents of a keyfile to be used for the construction of + # credentials for this client. + # A `GRPC::Core::Channel` will be used to make calls through. + # A `GRPC::Core::ChannelCredentials` for the setting up the RPC client. The channel credentials + # should already be composed with a `GRPC::Core::CallCredentials` object. + # A `Proc` will be used as an updater_proc for the Grpc channel. The proc transforms the + # metadata for requests, generally, to give OAuth credentials. + # @param scopes [Array<String>] + # The OAuth scopes for this service. This parameter is ignored if + # an updater_proc is supplied. + # @param client_config [Hash] # A Hash for call options for each method. See # Google::Gax#construct_settings for the structure of # this data. Falls back to the default config if not specified # or the specified config is missing data points. # @param timeout [Numeric] @@ -74,31 +85,55 @@ def initialize \ service_path: SERVICE_ADDRESS, port: DEFAULT_SERVICE_PORT, channel: nil, chan_creds: nil, + updater_proc: nil, + credentials: nil, scopes: ALL_SCOPES, client_config: {}, timeout: DEFAULT_TIMEOUT, - app_name: nil, - app_version: nil, lib_name: nil, lib_version: "" # These require statements are intentionally placed here to initialize # the gRPC module only when it's required. # See https://github.com/googleapis/toolkit/issues/446 require "google/gax/grpc" require "google/cloud/vision/v1/image_annotator_services_pb" + if channel || chan_creds || updater_proc + warn "The `channel`, `chan_creds`, and `updater_proc` parameters will be removed " \ + "on 2017/09/08" + credentials ||= channel + credentials ||= chan_creds + credentials ||= updater_proc + end + if service_path != SERVICE_ADDRESS || port != DEFAULT_SERVICE_PORT + warn "`service_path` and `port` parameters are deprecated and will be removed" + end - if app_name || app_version - warn "`app_name` and `app_version` are no longer being used in the request headers." + credentials ||= Google::Cloud::Vision::Credentials.default + + if credentials.is_a?(String) || credentials.is_a?(Hash) + updater_proc = Google::Cloud::Vision::Credentials.new(credentials).updater_proc end + if credentials.is_a?(GRPC::Core::Channel) + channel = credentials + end + if credentials.is_a?(GRPC::Core::ChannelCredentials) + chan_creds = credentials + end + if credentials.is_a?(Proc) + updater_proc = credentials + end + if credentials.is_a?(Google::Auth::Credentials) + updater_proc = credentials.updater_proc + end google_api_client = "gl-ruby/#{RUBY_VERSION}" google_api_client << " #{lib_name}/#{lib_version}" if lib_name - google_api_client << " gapic/0.6.8 gax/#{Google::Gax::VERSION}" + google_api_client << " gapic/0.1.0 gax/#{Google::Gax::VERSION}" google_api_client << " grpc/#{GRPC::VERSION}" google_api_client.freeze headers = { :"x-goog-api-client" => google_api_client } client_config_file = Pathname.new(__dir__).join( @@ -118,10 +153,11 @@ @image_annotator_stub = Google::Gax::Grpc.create_stub( service_path, port, chan_creds: chan_creds, channel: channel, + updater_proc: updater_proc, scopes: scopes, &Google::Cloud::Vision::V1::ImageAnnotator::Stub.method(:new) ) @batch_annotate_images = Google::Gax.create_api_call( @@ -132,31 +168,32 @@ # Service calls # Run image detection and annotation for a batch of images. # - # @param requests [Array<Google::Cloud::Vision::V1::AnnotateImageRequest>] + # @param requests [Array<Google::Cloud::Vision::V1::AnnotateImageRequest | Hash>] # Individual image annotation requests for this batch. + # A hash of the same form as `Google::Cloud::Vision::V1::AnnotateImageRequest` + # can also be provided. # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @return [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example - # require "google/cloud/vision/v1/image_annotator_client" + # require "google/cloud/vision/v1" # - # ImageAnnotatorClient = Google::Cloud::Vision::V1::ImageAnnotatorClient - # - # image_annotator_client = ImageAnnotatorClient.new + # image_annotator_client = Google::Cloud::Vision::V1.new # requests = [] # response = image_annotator_client.batch_annotate_images(requests) def batch_annotate_images \ requests, options: nil - req = Google::Cloud::Vision::V1::BatchAnnotateImagesRequest.new({ + req = { requests: requests - }.delete_if { |_, v| v.nil? }) + }.delete_if { |_, v| v.nil? } + req = Google::Gax::to_proto(req, Google::Cloud::Vision::V1::BatchAnnotateImagesRequest) @batch_annotate_images.call(req, options) end end end end