lib/google/cloud/vision.rb in google-cloud-vision-0.27.0 vs lib/google/cloud/vision.rb in google-cloud-vision-0.28.0

- old
+ new

@@ -13,10 +13,12 @@ # limitations under the License. require "google-cloud-vision" require "google/cloud/vision/project" +require "google/cloud/config" +require "google/cloud/env" module Google module Cloud ## # # Google Cloud Vision @@ -28,15 +30,16 @@ # # For more information about Cloud Vision, read the [Google Cloud Vision API # Documentation](https://cloud.google.com/vision/docs/). # # The goal of google-cloud is to provide an API that is comfortable to - # Rubyists. Authentication is handled by {Google::Cloud#vision}. You can - # provide the project and credential information to connect to the Cloud - # Vision service, or if you are running on Google Compute Engine this - # configuration is taken care of for you. You can read more about the - # options for connecting in the [Authentication + # Rubyists. Your authentication credentials are detected automatically in + # Google Cloud Platform environments such as Google Compute Engine, Google + # App Engine and Google Kubernetes Engine. In other environments you can + # configure authentication easily, either directly in your code or via + # environment variables. Read more about the options for connecting in the + # [Authentication # Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/authentication). # # ## Creating images # # The Cloud Vision API supports UTF-8, UTF-16, and UTF-32 text encodings. @@ -224,10 +227,13 @@ # The default max results to return for facial detection requests. This # is used on {Project#annotate} as well as {Image#faces}. # # The default value is `100`. # + # This is also available on the configuration as + # `Google::Cloud::Vision.configure.default_max_faces` + # # @example Using the default setting on {Project#annotate}: # require "google/cloud/vision" # # vision = Google::Cloud::Vision.new # @@ -271,18 +277,30 @@ # # faces = vision.image("path/to/faces.jpg").faces # # This is the same as calling # # faces = vision.image("path/to/faces.jpg").faces 5 # - attr_accessor :default_max_faces + def default_max_faces= value + configure.default_max_faces = value + end ## + # The default max results to return for face detection requests. + # + def default_max_faces + configure.default_max_faces + end + + ## # The default max results to return for landmark detection requests. # This is used on {Project#annotate} as well as {Image#landmarks}. # # The default value is 100. # + # This is also available on the configuration as + # `Google::Cloud::Vision.configure.default_max_landmarks` + # # @example Using the default setting on {Project#annotate}: # require "google/cloud/vision" # # vision = Google::Cloud::Vision.new # @@ -328,18 +346,30 @@ # # landmarks = vision.image("path/to/landmarks.jpg").landmarks # # This is the same as calling # # landmarks = vision.image("path/to/landmarks.jpg").landmarks 5 # - attr_accessor :default_max_landmarks + def default_max_landmarks= value + configure.default_max_landmarks = value + end ## + # The default max results to return for landmark detection requests. + # + def default_max_landmarks + configure.default_max_landmarks + end + + ## # The default max results to return for logo detection requests. This is # used on {Project#annotate} as well as {Image#logos}. # # The default value is 100. # + # This is also available on the configuration as + # `Google::Cloud::Vision.configure.default_max_logos` + # # @example Using the default setting on {Project#annotate}: # require "google/cloud/vision" # # vision = Google::Cloud::Vision.new # @@ -383,18 +413,30 @@ # # logos = vision.image("path/to/logos.jpg").logos # # This is the same as calling # # logos = vision.image("path/to/logos.jpg").logos 5 # - attr_accessor :default_max_logos + def default_max_logos= value + configure.default_max_logos = value + end ## + # The default max results to return for logo detection requests. + # + def default_max_logos + configure.default_max_logos + end + + ## # The default max results to return for label detection requests. This # is used on {Project#annotate} as well as {Image#labels}. # # The default value is 100. # + # This is also available on the configuration as + # `Google::Cloud::Vision.configure.default_max_labels` + # # @example Using the default setting on {Project#annotate}: # require "google/cloud/vision" # # vision = Google::Cloud::Vision.new # @@ -438,18 +480,30 @@ # # labels = vision.image("path/to/labels.jpg").labels # # This is the same as calling # # labels = vision.image("path/to/labels.jpg").labels 5 # - attr_accessor :default_max_labels + def default_max_labels= value + configure.default_max_labels = value + end ## + # The default max results to return for label detection requests. + # + def default_max_labels + configure.default_max_labels + end + + ## # The default max results to return for crop hints detection requests. # This is used on {Project#annotate} as well as {Image#crop_hints}. # # The default value is 100. # + # This is also available on the configuration as + # `Google::Cloud::Vision.configure.default_max_crop_hints` + # # @example Using the default setting on {Project#annotate}: # require "google/cloud/vision" # # vision = Google::Cloud::Vision.new # @@ -495,18 +549,30 @@ # # crop_hints = vision.image("path/to/landmarks.jpg").crop_hints # # This is the same as calling # # crop_hints = vision.image("path/to/landmarks.jpg").crop_hints 5 # - attr_accessor :default_max_crop_hints + def default_max_crop_hints= value + configure.default_max_crop_hints = value + end ## + # The default max results to return for crop hints detection requests. + # + def default_max_crop_hints + configure.default_max_crop_hints + end + + ## # The default max results to return for web detection requests. # This is used on {Project#annotate} as well as {Image#web}. # # The default value is 100. # + # This is also available on the configuration as + # `Google::Cloud::Vision.configure.default_max_web` + # # @example Using the default setting on {Project#annotate}: # require "google/cloud/vision" # # vision = Google::Cloud::Vision.new # @@ -552,22 +618,22 @@ # # web = vision.image("path/to/landmarks.jpg").web # # This is the same as calling # # web = vision.image("path/to/landmarks.jpg").web 5 # - attr_accessor :default_max_web + def default_max_web= value + configure.default_max_web = value + end + + ## + # The default max results to return for web detection requests. + # + def default_max_web + configure.default_max_web + end end - # Set the default values. - # Update the comments documentation when these change. - self.default_max_faces = 100 - self.default_max_landmarks = 100 - self.default_max_logos = 100 - self.default_max_labels = 100 - self.default_max_crop_hints = 100 - self.default_max_web = 100 - ## # Creates a new object for connecting to the Vision service. # Each call creates a new connection. # # @param [String] project_id Project identifier for the Vision service you @@ -603,22 +669,82 @@ # landmark = image.landmark # landmark.description #=> "Mount Rushmore" # def self.new project_id: nil, credentials: nil, scope: nil, timeout: nil, client_config: nil, project: nil, keyfile: nil - project_id ||= (project || Vision::Project.default_project_id) + project_id ||= (project || default_project_id) project_id = project_id.to_s # Always cast to a string - fail ArgumentError, "project_id is missing" if project_id.empty? + raise ArgumentError, "project_id is missing" if project_id.empty? - credentials ||= (keyfile || Vision::Credentials.default(scope: scope)) + scope ||= configure.scope + timeout ||= configure.timeout + client_config ||= configure.client_config + credentials ||= (keyfile || default_credentials(scope: scope)) unless credentials.is_a? Google::Auth::Credentials credentials = Vision::Credentials.new credentials, scope: scope end Vision::Project.new( Vision::Service.new( project_id, credentials, timeout: timeout, - client_config: client_config)) + client_config: client_config + ) + ) + end + + ## + # Configure the Google Cloud Vision library. + # + # The following Vision configuration parameters are supported: + # + # * `project_id` - (String) Identifier for a Vision project. (The + # parameter `project` is considered deprecated, but may also be used.) + # * `credentials` - (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. (See {Vision::Credentials}) (The + # parameter `keyfile` is considered deprecated, but may also be used.) + # * `scope` - (String, Array<String>) The OAuth 2.0 scopes controlling + # the set of resources and operations that the connection can access. + # * `timeout` - (Integer) Default timeout to use in requests. + # * `client_config` - (Hash) A hash of values to override the default + # behavior of the API client. + # * `default_max_faces` - (Integer) The default max results to return for + # facial detection requests. See {Vision.default_max_faces=}. + # * `default_max_landmarks` - (Integer) The default max results to return + # for landmark detection requests. See {Vision.default_max_landmarks=}. + # * `default_max_logos` - (Integer) The default max results to return for + # logo detection requests. See {Vision.default_max_logos=}. + # * `default_max_labels` - (Integer) The default max results to return for + # label detection requests. See {Vision.default_max_labels=}. + # * `default_max_crop_hints` - (Integer) The default max results to return + # for crop hints detection requests. See + # {Vision.default_max_crop_hints=}. + # * `default_max_web` - (Integer) The default max results to return for + # web detection requests. See {Vision.default_max_faces=}. + # + # @return [Google::Cloud::Config] The configuration object the + # Google::Cloud::Vision library uses. + # + def self.configure + yield Google::Cloud.configure.vision if block_given? + + Google::Cloud.configure.vision + end + + ## + # @private Default project. + def self.default_project_id + Google::Cloud.configure.vision.project_id || + Google::Cloud.configure.project_id || + Google::Cloud.env.project_id + end + + ## + # @private Default credentials. + def self.default_credentials scope: nil + Google::Cloud.configure.vision.credentials || + Google::Cloud.configure.credentials || + Vision::Credentials.default(scope: scope) end end end end