google-cloud-vision 0.25.0 → 0.26.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 264c4bec187e3b7f07a1071352e54a7d41052349
4
- data.tar.gz: 78d4f95902e26bd2d78d95e84cf0f8775fcc1d42
2
+ SHA256:
3
+ metadata.gz: 2c09d8049f20a5c93eb8bd360bf9342829812606be35eec929e2c87abdb4758f
4
+ data.tar.gz: dda3ffc1e2ea698d2e0e14d6904378a5ad9c4dd7d6fd7e556a1003b07c41d632
5
5
  SHA512:
6
- metadata.gz: 433215101554848c5ba0ea8f55a0ae6524772d61eedfca5087cf3053946bcf196b14046778833b2833d8bd57de04fdcfda8f2ed72c393c6247679c886b99d611
7
- data.tar.gz: d3aae9451019ece567eacbc30e6b81bca5c2303e3afe648795ccdbad4ae796c89106a3b526e00f21631ece6fd7d262bec04e446651bca853618e2f0255716883
6
+ metadata.gz: b23ca2e917b9313c5aa8933ddd861b854cb036161b25d6db7d23da1ab80651908e7117a6e4ccaa59654a250916939655d92ec11a3a961f68a121cf3cb9b2e81f
7
+ data.tar.gz: ec7ed02b242c7fa31255a0f20b39da2450fef2a1964e85bce8a2b7fc062d991529979163b7743fd730b96332a3869e50e1e97eb518cbd2fe53483706eeb1c672
@@ -13,9 +13,9 @@
13
13
  # limitations under the License.
14
14
 
15
15
  ##
16
- # This file is here to be autorequired by bundler, so that the .bigquery and
17
- # #bigquery methods can be available, but the library and all dependencies won't
18
- # be loaded until required and used.
16
+ # This file is here to be autorequired by bundler, so that the
17
+ # Google::Cloud.vision and Google::Cloud#vision methods can be available, but
18
+ # the library and all dependencies won't be loaded until required and used.
19
19
 
20
20
 
21
21
  gem "google-cloud-core"
@@ -69,10 +69,12 @@ module Google
69
69
  # Creates a new object for connecting to the Vision service.
70
70
  # Each call creates a new connection.
71
71
  #
72
- # @param [String] project Project identifier for the Vision service you are
73
- # connecting to.
74
- # @param [String, Hash] keyfile Keyfile downloaded from Google Cloud. If
75
- # file path the file must be readable.
72
+ # @param [String] project_id Project identifier for the Vision service you
73
+ # are connecting to. If not present, the default project for the
74
+ # credentials is used.
75
+ # @param [String, Hash, Google::Auth::Credentials] credentials The path to
76
+ # the keyfile as a String, the contents of the keyfile as a Hash, or a
77
+ # Google::Auth::Credentials object. (See {Vision::Credentials})
76
78
  # @param [String, Array<String>] scope The OAuth 2.0 scopes controlling the
77
79
  # set of resources and operations that the connection can access. See
78
80
  # [Using OAuth 2.0 to Access Google
@@ -97,10 +99,11 @@ module Google
97
99
  # landmark = image.landmark
98
100
  # landmark.description #=> "Mount Rushmore"
99
101
  #
100
- def self.vision project = nil, keyfile = nil, scope: nil, timeout: nil,
101
- client_config: nil
102
+ def self.vision project_id = nil, credentials = nil, scope: nil,
103
+ timeout: nil, client_config: nil
102
104
  require "google/cloud/vision"
103
- Google::Cloud::Vision.new project: project, keyfile: keyfile,
105
+ Google::Cloud::Vision.new project_id: project_id,
106
+ credentials: credentials,
104
107
  scope: scope, timeout: timeout,
105
108
  client_config: client_config
106
109
  end
@@ -570,10 +570,12 @@ module Google
570
570
  # Creates a new object for connecting to the Vision service.
571
571
  # Each call creates a new connection.
572
572
  #
573
- # @param [String] project Project identifier for the Vision service you
574
- # are connecting to.
575
- # @param [String, Hash] keyfile Keyfile downloaded from Google Cloud. If
576
- # file path the file must be readable.
573
+ # @param [String] project_id Project identifier for the Vision service you
574
+ # are connecting to. If not present, the default project for the
575
+ # credentials is used.
576
+ # @param [String, Hash, Google::Auth::Credentials] credentials The path to
577
+ # the keyfile as a String, the contents of the keyfile as a Hash, or a
578
+ # Google::Auth::Credentials object. (See {Vision::Credentials})
577
579
  # @param [String, Array<String>] scope The OAuth 2.0 scopes controlling
578
580
  # the set of resources and operations that the connection can access.
579
581
  # See [Using OAuth 2.0 to Access Google
@@ -585,6 +587,9 @@ module Google
585
587
  # @param [Integer] timeout Default timeout to use in requests. Optional.
586
588
  # @param [Hash] client_config A hash of values to override the default
587
589
  # behavior of the API client. Optional.
590
+ # @param [String] project Alias for the `project_id` argument. Deprecated.
591
+ # @param [String] keyfile Alias for the `credentials` argument.
592
+ # Deprecated.
588
593
  #
589
594
  # @return [Google::Cloud::Vision::Project]
590
595
  #
@@ -598,23 +603,21 @@ module Google
598
603
  # landmark = image.landmark
599
604
  # landmark.description #=> "Mount Rushmore"
600
605
  #
601
- def self.new project: nil, keyfile: nil, scope: nil, timeout: nil,
602
- client_config: nil
603
- project ||= Google::Cloud::Vision::Project.default_project
604
- project = project.to_s # Always cast to a string
605
- fail ArgumentError, "project is missing" if project.empty?
606
+ def self.new project_id: nil, credentials: nil, scope: nil, timeout: nil,
607
+ client_config: nil, project: nil, keyfile: nil
608
+ project_id ||= (project || Vision::Project.default_project_id)
609
+ project_id = project_id.to_s # Always cast to a string
610
+ fail ArgumentError, "project_id is missing" if project_id.empty?
606
611
 
607
- if keyfile.nil?
608
- credentials = Google::Cloud::Vision::Credentials.default scope: scope
609
- else
610
- credentials = Google::Cloud::Vision::Credentials.new \
611
- keyfile, scope: scope
612
+ credentials ||= (keyfile || Vision::Credentials.default(scope: scope))
613
+ unless credentials.is_a? Google::Auth::Credentials
614
+ credentials = Vision::Credentials.new credentials, scope: scope
612
615
  end
613
616
 
614
- Google::Cloud::Vision::Project.new(
615
- Google::Cloud::Vision::Service.new(
616
- project, credentials, timeout: timeout,
617
- client_config: client_config))
617
+ Vision::Project.new(
618
+ Vision::Service.new(
619
+ project_id, credentials, timeout: timeout,
620
+ client_config: client_config))
618
621
  end
619
622
  end
620
623
  end
@@ -290,6 +290,7 @@ module Google
290
290
  # @return [Array<Language>]
291
291
  #
292
292
  def languages
293
+ return [] if @grpc.property.nil?
293
294
  @languages ||= Array(@grpc.property.detected_languages).map do |l|
294
295
  Language.from_grpc l
295
296
  end
@@ -301,6 +302,7 @@ module Google
301
302
  # @return [::Symbol]
302
303
  #
303
304
  def break_type
305
+ return nil if @grpc.property.nil?
304
306
  @grpc.property.detected_break &&
305
307
  @grpc.property.detected_break.type.to_sym
306
308
  end
@@ -311,6 +313,7 @@ module Google
311
313
  # @return [Boolean]
312
314
  #
313
315
  def prefix_break?
316
+ return nil if @grpc.property.nil?
314
317
  @grpc.property.detected_break &&
315
318
  @grpc.property.detected_break.is_prefix
316
319
  end
@@ -411,6 +414,7 @@ module Google
411
414
  # @return [Array<Language>]
412
415
  #
413
416
  def languages
417
+ return [] if @grpc.property.nil?
414
418
  detected_languages = @grpc.property.detected_languages
415
419
  @languages ||= Array(detected_languages).map do |l|
416
420
  Language.from_grpc l
@@ -423,6 +427,7 @@ module Google
423
427
  # @return [::Symbol]
424
428
  #
425
429
  def break_type
430
+ return nil if @grpc.property.nil?
426
431
  @grpc.property.detected_break &&
427
432
  @grpc.property.detected_break.type.to_sym
428
433
  end
@@ -433,6 +438,7 @@ module Google
433
438
  # @return [Boolean]
434
439
  #
435
440
  def prefix_break?
441
+ return nil if @grpc.property.nil?
436
442
  @grpc.property.detected_break &&
437
443
  @grpc.property.detected_break.is_prefix
438
444
  end
@@ -555,6 +561,7 @@ module Google
555
561
  # @return [Array<Language>]
556
562
  #
557
563
  def languages
564
+ return [] if @grpc.property.nil?
558
565
  detected_languages = @grpc.property.detected_languages
559
566
  @languages ||= Array(detected_languages).map do |l|
560
567
  Language.from_grpc l
@@ -567,6 +574,7 @@ module Google
567
574
  # @return [::Symbol]
568
575
  #
569
576
  def break_type
577
+ return nil if @grpc.property.nil?
570
578
  @grpc.property.detected_break &&
571
579
  @grpc.property.detected_break.type.to_sym
572
580
  end
@@ -577,6 +585,7 @@ module Google
577
585
  # @return [Boolean]
578
586
  #
579
587
  def prefix_break?
588
+ return nil if @grpc.property.nil?
580
589
  @grpc.property.detected_break &&
581
590
  @grpc.property.detected_break.is_prefix
582
591
  end
@@ -688,6 +697,7 @@ module Google
688
697
  # @return [Array<Language>]
689
698
  #
690
699
  def languages
700
+ return [] if @grpc.property.nil?
691
701
  detected_languages = @grpc.property.detected_languages
692
702
  @languages ||= Array(detected_languages).map do |l|
693
703
  Language.from_grpc l
@@ -700,6 +710,7 @@ module Google
700
710
  # @return [::Symbol]
701
711
  #
702
712
  def break_type
713
+ return nil if @grpc.property.nil?
703
714
  @grpc.property.detected_break &&
704
715
  @grpc.property.detected_break.type.to_sym
705
716
  end
@@ -710,6 +721,7 @@ module Google
710
721
  # @return [Boolean]
711
722
  #
712
723
  def prefix_break?
724
+ return nil if @grpc.property.nil?
713
725
  @grpc.property.detected_break &&
714
726
  @grpc.property.detected_break.is_prefix
715
727
  end
@@ -823,6 +835,7 @@ module Google
823
835
  # @return [Array<Language>]
824
836
  #
825
837
  def languages
838
+ return [] if @grpc.property.nil?
826
839
  detected_languages = @grpc.property.detected_languages
827
840
  @languages ||= Array(detected_languages).map do |l|
828
841
  Language.from_grpc l
@@ -835,6 +848,7 @@ module Google
835
848
  # @return [::Symbol]
836
849
  #
837
850
  def break_type
851
+ return nil if @grpc.property.nil?
838
852
  @grpc.property.detected_break &&
839
853
  @grpc.property.detected_break.type.to_sym
840
854
  end
@@ -845,6 +859,7 @@ module Google
845
859
  # @return [Boolean]
846
860
  #
847
861
  def prefix_break?
862
+ return nil if @grpc.property.nil?
848
863
  @grpc.property.detected_break &&
849
864
  @grpc.property.detected_break.is_prefix
850
865
  end
@@ -13,18 +13,44 @@
13
13
  # limitations under the License.
14
14
 
15
15
 
16
- require "google/cloud/credentials"
16
+ require "googleauth"
17
17
 
18
18
  module Google
19
19
  module Cloud
20
20
  module Vision
21
21
  ##
22
- # @private Represents the OAuth 2.0 signing logic for Vision.
23
- class Credentials < Google::Cloud::Credentials
22
+ # # Credentials
23
+ #
24
+ # Represents the authentication and authorization used to connect to the
25
+ # Vision API.
26
+ #
27
+ # @example
28
+ # require "google/cloud/vision"
29
+ #
30
+ # keyfile = "/path/to/keyfile.json"
31
+ # creds = Google::Cloud::Vision::Credentials.new keyfile
32
+ #
33
+ # vision = Google::Cloud::Vision.new(
34
+ # project_id: "my-project",
35
+ # credentials: creds
36
+ # )
37
+ #
38
+ # vision.project_id #=> "my-project"
39
+ #
40
+ class Credentials < Google::Auth::Credentials
24
41
  SCOPE = ["https://www.googleapis.com/auth/cloud-platform"]
25
- PATH_ENV_VARS = %w(VISION_KEYFILE GOOGLE_CLOUD_KEYFILE GCLOUD_KEYFILE)
26
- JSON_ENV_VARS = %w(VISION_KEYFILE_JSON GOOGLE_CLOUD_KEYFILE_JSON
42
+ PATH_ENV_VARS = %w(VISION_CREDENTIALS
43
+ VISION_KEYFILE
44
+ GOOGLE_CLOUD_CREDENTIALS
45
+ GOOGLE_CLOUD_KEYFILE
46
+ GCLOUD_KEYFILE)
47
+ JSON_ENV_VARS = %w(VISION_CREDENTIALS_JSON
48
+ VISION_KEYFILE_JSON
49
+ GOOGLE_CLOUD_CREDENTIALS_JSON
50
+ GOOGLE_CLOUD_KEYFILE_JSON
27
51
  GCLOUD_KEYFILE_JSON)
52
+ DEFAULT_PATHS = \
53
+ ["~/.config/gcloud/application_default_credentials.json"]
28
54
  end
29
55
  end
30
56
  end
@@ -63,19 +63,20 @@ module Google
63
63
  # require "google/cloud/vision"
64
64
  #
65
65
  # vision = Google::Cloud::Vision.new(
66
- # project: "my-todo-project",
67
- # keyfile: "/path/to/keyfile.json"
66
+ # project_id: "my-project",
67
+ # credentials: "/path/to/keyfile.json"
68
68
  # )
69
69
  #
70
- # vision.project #=> "my-todo-project"
70
+ # vision.project_id #=> "my-project"
71
71
  #
72
- def project
72
+ def project_id
73
73
  service.project
74
74
  end
75
+ alias_method :project, :project_id
75
76
 
76
77
  ##
77
78
  # @private Default project.
78
- def self.default_project
79
+ def self.default_project_id
79
80
  ENV["VISION_PROJECT"] ||
80
81
  ENV["GOOGLE_CLOUD_PROJECT"] ||
81
82
  ENV["GCLOUD_PROJECT"] ||
@@ -25,37 +25,22 @@ module Google
25
25
  # @private
26
26
  # Represents the service to Vision, exposing the API calls.
27
27
  class Service
28
- attr_accessor :project, :credentials, :host, :timeout, :client_config
28
+ attr_accessor :project, :credentials, :timeout, :client_config
29
29
 
30
30
  ##
31
31
  # Creates a new Service instance.
32
- def initialize project, credentials, host: nil, timeout: nil,
33
- client_config: nil
32
+ def initialize project, credentials, timeout: nil, client_config: nil
34
33
  @project = project
35
34
  @credentials = credentials
36
- @host = host || V1::ImageAnnotatorClient::SERVICE_ADDRESS
37
35
  @timeout = timeout
38
36
  @client_config = client_config || {}
39
37
  end
40
38
 
41
- def channel
42
- require "grpc"
43
- GRPC::Core::Channel.new host, nil, chan_creds
44
- end
45
-
46
- def chan_creds
47
- return credentials if insecure?
48
- require "grpc"
49
- GRPC::Core::ChannelCredentials.new.compose \
50
- GRPC::Core::CallCredentials.new credentials.client.updater_proc
51
- end
52
-
53
39
  def service
54
40
  return mocked_service if mocked_service
55
41
  @service ||= \
56
42
  V1::ImageAnnotatorClient.new(
57
- service_path: host,
58
- channel: channel,
43
+ credentials: credentials,
59
44
  timeout: timeout,
60
45
  client_config: client_config,
61
46
  lib_name: "gccl",
@@ -63,10 +48,6 @@ module Google
63
48
  end
64
49
  attr_accessor :mocked_service
65
50
 
66
- def insecure?
67
- credentials == :this_channel_is_insecure
68
- end
69
-
70
51
  ##
71
52
  # Returns API::BatchAnnotateImagesResponse
72
53
  def annotate requests
@@ -1,4 +1,4 @@
1
- # Copyright 2016 Google Inc. All rights reserved.
1
+ # Copyright 2017, Google Inc. All rights reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -13,3 +13,115 @@
13
13
  # limitations under the License.
14
14
 
15
15
  require "google/cloud/vision/v1/image_annotator_client"
16
+
17
+ module Google
18
+ module Cloud
19
+ # rubocop:disable LineLength
20
+
21
+ ##
22
+ # # Ruby Client for Google Cloud Vision API ([Alpha](https://github.com/GoogleCloudPlatform/google-cloud-ruby#versioning))
23
+ #
24
+ # [Google Cloud Vision API][Product Documentation]:
25
+ # Integrates Google Vision features, including image labeling, face, logo, and
26
+ # landmark detection, optical character recognition (OCR), and detection of
27
+ # explicit content, into applications.
28
+ # - [Product Documentation][]
29
+ #
30
+ # ## Quick Start
31
+ # In order to use this library, you first need to go through the following
32
+ # steps:
33
+ #
34
+ # 1. [Select or create a Cloud Platform project.](https://console.cloud.google.com/project)
35
+ # 2. [Enable the Google Cloud Vision API.](https://console.cloud.google.com/apis/api/vision)
36
+ # 3. [Setup Authentication.](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud/master/guides/authentication)
37
+ #
38
+ # ### Preview
39
+ # #### ImageAnnotatorClient
40
+ # ```rb
41
+ # require "google/cloud/vision/v1"
42
+ #
43
+ # image_annotator_client = Google::Cloud::Vision::V1.new
44
+ # gcs_image_uri = "gs://gapic-toolkit/President_Barack_Obama.jpg"
45
+ # source = { gcs_image_uri: gcs_image_uri }
46
+ # image = { source: source }
47
+ # type = :FACE_DETECTION
48
+ # features_element = { type: type }
49
+ # features = [features_element]
50
+ # requests_element = { image: image, features: features }
51
+ # requests = [requests_element]
52
+ # response = image_annotator_client.batch_annotate_images(requests)
53
+ # ```
54
+ #
55
+ # ### Next Steps
56
+ # - Read the [Google Cloud Vision API Product documentation][Product Documentation]
57
+ # to learn more about the product and see How-to Guides.
58
+ # - View this [repository's main README](https://github.com/GoogleCloudPlatform/google-cloud-ruby/blob/master/README.md)
59
+ # to see the full list of Cloud APIs that we cover.
60
+ #
61
+ # [Product Documentation]: https://cloud.google.com/vision
62
+ #
63
+ #
64
+ module Vision
65
+ module V1
66
+ # rubocop:enable LineLength
67
+
68
+ ##
69
+ # Service that performs Google Cloud Vision API detection tasks over client
70
+ # images, such as face, landmark, logo, label, and text detection. The
71
+ # ImageAnnotator service returns detected entities from the images.
72
+ #
73
+ # @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc]
74
+ # Provides the means for authenticating requests made by the client. This parameter can
75
+ # be many types.
76
+ # A `Google::Auth::Credentials` uses a the properties of its represented keyfile for
77
+ # authenticating requests made by this client.
78
+ # A `String` will be treated as the path to the keyfile to be used for the construction of
79
+ # credentials for this client.
80
+ # A `Hash` will be treated as the contents of a keyfile to be used for the construction of
81
+ # credentials for this client.
82
+ # A `GRPC::Core::Channel` will be used to make calls through.
83
+ # A `GRPC::Core::ChannelCredentials` for the setting up the RPC client. The channel credentials
84
+ # should already be composed with a `GRPC::Core::CallCredentials` object.
85
+ # A `Proc` will be used as an updater_proc for the Grpc channel. The proc transforms the
86
+ # metadata for requests, generally, to give OAuth credentials.
87
+ # @param scopes [Array<String>]
88
+ # The OAuth scopes for this service. This parameter is ignored if
89
+ # an updater_proc is supplied.
90
+ # @param client_config [Hash]
91
+ # A Hash for call options for each method. See
92
+ # Google::Gax#construct_settings for the structure of
93
+ # this data. Falls back to the default config if not specified
94
+ # or the specified config is missing data points.
95
+ # @param timeout [Numeric]
96
+ # The default timeout, in seconds, for calls made through this client.
97
+ def self.new \
98
+ service_path: nil,
99
+ port: nil,
100
+ channel: nil,
101
+ chan_creds: nil,
102
+ updater_proc: nil,
103
+ credentials: nil,
104
+ scopes: nil,
105
+ client_config: nil,
106
+ timeout: nil,
107
+ lib_name: nil,
108
+ lib_version: nil
109
+ kwargs = {
110
+ service_path: service_path,
111
+ port: port,
112
+ channel: channel,
113
+ chan_creds: chan_creds,
114
+ updater_proc: updater_proc,
115
+ credentials: credentials,
116
+ scopes: scopes,
117
+ client_config: client_config,
118
+ timeout: timeout,
119
+ lib_name: lib_name,
120
+ lib_version: lib_version
121
+ }.select { |_, v| v != nil }
122
+ Google::Cloud::Vision::V1::ImageAnnotatorClient.new(**kwargs)
123
+ end
124
+ end
125
+ end
126
+ end
127
+ end
@@ -15,6 +15,17 @@
15
15
  module Google
16
16
  module Cloud
17
17
  module Vision
18
+ ##
19
+ # # Google Cloud Vision API Contents
20
+ #
21
+ # | Class | Description |
22
+ # | ----- | ----------- |
23
+ # | [ImageAnnotatorClient][] | Integrates Google Vision features, including image labeling, face, logo, and landmark detection, optical character recognition (OCR), and detection of explicit content, into applications. |
24
+ # | [Data Types][] | Data types for Google::Cloud::Vision::V1 |
25
+ #
26
+ # [ImageAnnotatorClient]: https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud-vision/latest/google/cloud/vision/v1/imageannotatorclient
27
+ # [Data Types]: https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud-vision/latest/google/cloud/vision/v1/datatypes
28
+ #
18
29
  module V1
19
30
  # Users describe the type of Google Cloud Vision API tasks to perform over
20
31
  # images by using *Feature*s. Each Feature indicates a type of image
@@ -71,16 +82,16 @@ module Google
71
82
  # NOTE: For new code +image_uri+ below is preferred.
72
83
  # Google Cloud Storage image URI, which must be in the following form:
73
84
  # +gs://bucket_name/object_name+ (for details, see
74
- # {Google Cloud Storage Request
75
- # URIs}[https://cloud.google.com/storage/docs/reference-uris]).
85
+ # [Google Cloud Storage Request
86
+ # URIs](https://cloud.google.com/storage/docs/reference-uris)).
76
87
  # NOTE: Cloud Storage object versioning is not supported.
77
88
  # @!attribute [rw] image_uri
78
89
  # @return [String]
79
90
  # Image URI which supports:
80
91
  # 1) Google Cloud Storage image URI, which must be in the following form:
81
92
  # +gs://bucket_name/object_name+ (for details, see
82
- # {Google Cloud Storage Request
83
- # URIs}[https://cloud.google.com/storage/docs/reference-uris]).
93
+ # [Google Cloud Storage Request
94
+ # URIs](https://cloud.google.com/storage/docs/reference-uris)).
84
95
  # NOTE: Cloud Storage object versioning is not supported.
85
96
  # 2) Publicly accessible image HTTP/HTTPS URL.
86
97
  # This is preferred over the legacy +gcs_image_uri+ above. When both
@@ -308,7 +319,7 @@ module Google
308
319
  # @!attribute [rw] mid
309
320
  # @return [String]
310
321
  # Opaque entity ID. Some IDs may be available in
311
- # {Google Knowledge Graph Search API}[https://developers.google.com/knowledge-graph/].
322
+ # [Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).
312
323
  # @!attribute [rw] locale
313
324
  # @return [String]
314
325
  # The language code for the locale in which the entity textual
@@ -448,7 +459,7 @@ module Google
448
459
  # setting a hint will help get better results (although it will be a
449
460
  # significant hindrance if the hint is wrong). Text detection returns an
450
461
  # error if one or more of the specified languages is not one of the
451
- # {supported languages}[https://cloud.google.com/vision/docs/languages].
462
+ # [supported languages](https://cloud.google.com/vision/docs/languages).
452
463
  # @!attribute [rw] crop_hints_params
453
464
  # @return [Google::Cloud::Vision::V1::CropHintsParams]
454
465
  # Parameters for crop hints annotation request.
@@ -21,7 +21,7 @@ module Google
21
21
  # TextAnnotation -> Page -> Block -> Paragraph -> Word -> Symbol
22
22
  # Each structural component, starting from Page, may further have their own
23
23
  # properties. Properties describe detected languages, breaks etc.. Please
24
- # refer to the Google::Cloud::Vision::V1::TextAnnotation::TextProperty message
24
+ # refer to the {Google::Cloud::Vision::V1::TextAnnotation::TextProperty} message
25
25
  # definition below for more detail.
26
26
  # @!attribute [rw] pages
27
27
  # @return [Array<Google::Cloud::Vision::V1::Page>]
@@ -109,15 +109,15 @@ module Google
109
109
  # is represented as around the top-left corner as defined when the text is
110
110
  # read in the 'natural' orientation.
111
111
  # For example:
112
- # * when the text is horizontal it might look like:
113
- # 0----1
114
- # | |
115
- # 3----2
112
+ # * when the text is horizontal it might look like:
113
+ # 0----1
114
+ # | |
115
+ # 3----2
116
116
  # * when it's rotated 180 degrees around the top-left corner it becomes:
117
- # 2----3
118
- # | |
119
- # 1----0
120
- # and the vertice order will still be (0, 1, 2, 3).
117
+ # 2----3
118
+ # | |
119
+ # 1----0
120
+ # and the vertice order will still be (0, 1, 2, 3).
121
121
  # @!attribute [rw] paragraphs
122
122
  # @return [Array<Google::Cloud::Vision::V1::Paragraph>]
123
123
  # List of paragraphs in this block (if this blocks is of type text).
@@ -159,15 +159,15 @@ module Google
159
159
  # is represented as around the top-left corner as defined when the text is
160
160
  # read in the 'natural' orientation.
161
161
  # For example:
162
- # * when the text is horizontal it might look like:
163
- # 0----1
164
- # | |
165
- # 3----2
162
+ # * when the text is horizontal it might look like:
163
+ # 0----1
164
+ # | |
165
+ # 3----2
166
166
  # * when it's rotated 180 degrees around the top-left corner it becomes:
167
- # 2----3
168
- # | |
169
- # 1----0
170
- # and the vertice order will still be (0, 1, 2, 3).
167
+ # 2----3
168
+ # | |
169
+ # 1----0
170
+ # and the vertice order will still be (0, 1, 2, 3).
171
171
  # @!attribute [rw] words
172
172
  # @return [Array<Google::Cloud::Vision::V1::Word>]
173
173
  # List of words in this paragraph.
@@ -185,15 +185,15 @@ module Google
185
185
  # is represented as around the top-left corner as defined when the text is
186
186
  # read in the 'natural' orientation.
187
187
  # For example:
188
- # * when the text is horizontal it might look like:
189
- # 0----1
190
- # | |
191
- # 3----2
188
+ # * when the text is horizontal it might look like:
189
+ # 0----1
190
+ # | |
191
+ # 3----2
192
192
  # * when it's rotated 180 degrees around the top-left corner it becomes:
193
- # 2----3
194
- # | |
195
- # 1----0
196
- # and the vertice order will still be (0, 1, 2, 3).
193
+ # 2----3
194
+ # | |
195
+ # 1----0
196
+ # and the vertice order will still be (0, 1, 2, 3).
197
197
  # @!attribute [rw] symbols
198
198
  # @return [Array<Google::Cloud::Vision::V1::Symbol>]
199
199
  # List of symbols in the word.
@@ -212,15 +212,15 @@ module Google
212
212
  # is represented as around the top-left corner as defined when the text is
213
213
  # read in the 'natural' orientation.
214
214
  # For example:
215
- # * when the text is horizontal it might look like:
216
- # 0----1
217
- # | |
218
- # 3----2
215
+ # * when the text is horizontal it might look like:
216
+ # 0----1
217
+ # | |
218
+ # 3----2
219
219
  # * when it's rotated 180 degrees around the top-left corner it becomes:
220
- # 2----3
221
- # | |
222
- # 1----0
223
- # and the vertice order will still be (0, 1, 2, 3).
220
+ # 2----3
221
+ # | |
222
+ # 1----0
223
+ # and the vertice order will still be (0, 1, 2, 3).
224
224
  # @!attribute [rw] text
225
225
  # @return [String]
226
226
  # The actual UTF-8 representation of the symbol.
@@ -49,6 +49,16 @@ module Google
49
49
  # any.Unpack(foo)
50
50
  # ...
51
51
  #
52
+ # Example 4: Pack and unpack a message in Go
53
+ #
54
+ # foo := &pb.Foo{...}
55
+ # any, err := ptypes.MarshalAny(foo)
56
+ # ...
57
+ # foo := &pb.Foo{}
58
+ # if err := ptypes.UnmarshalAny(any, foo); err != nil {
59
+ # ...
60
+ # }
61
+ #
52
62
  # The pack methods provided by protobuf library will by default use
53
63
  # 'type.googleapis.com/full.type.name' as the type URL and the unpack
54
64
  # methods only use the fully qualified type name after the last '/'
@@ -77,7 +87,7 @@ module Google
77
87
  # If the embedded message type is well-known and has a custom JSON
78
88
  # representation, that representation will be embedded adding a field
79
89
  # +value+ which holds the custom JSON in addition to the +@type+
80
- # field. Example (for message Google::Protobuf::Duration):
90
+ # field. Example (for message {Google::Protobuf::Duration}):
81
91
  #
82
92
  # {
83
93
  # "@type": "type.googleapis.com/google.protobuf.Duration",
@@ -96,7 +106,7 @@ module Google
96
106
  # qualified name of the type (as in +path/google.protobuf.Duration+).
97
107
  # The name should be in a canonical form (e.g., leading "." is
98
108
  # not accepted).
99
- # * An HTTP GET on the URL must yield a Google::Protobuf::Type
109
+ # * An HTTP GET on the URL must yield a {Google::Protobuf::Type}
100
110
  # value in binary format, or produce an error.
101
111
  # * Applications are allowed to cache lookup results based on the
102
112
  # URL, or have them precompiled into a binary to avoid any
@@ -16,22 +16,22 @@ module Google
16
16
  module Rpc
17
17
  # The +Status+ type defines a logical error model that is suitable for different
18
18
  # programming environments, including REST APIs and RPC APIs. It is used by
19
- # {gRPC}[https://github.com/grpc]. The error model is designed to be:
19
+ # [gRPC](https://github.com/grpc). The error model is designed to be:
20
20
  #
21
- # - Simple to use and understand for most users
22
- # - Flexible enough to meet unexpected needs
21
+ # * Simple to use and understand for most users
22
+ # * Flexible enough to meet unexpected needs
23
23
  #
24
24
  # = Overview
25
25
  #
26
26
  # The +Status+ message contains three pieces of data: error code, error message,
27
27
  # and error details. The error code should be an enum value of
28
- # Google::Rpc::Code, but it may accept additional error codes if needed. The
28
+ # {Google::Rpc::Code}, but it may accept additional error codes if needed. The
29
29
  # error message should be a developer-facing English message that helps
30
30
  # developers *understand* and *resolve* the error. If a localized user-facing
31
31
  # error message is needed, put the localized message in the error details or
32
32
  # localize it in the client. The optional error details may contain arbitrary
33
33
  # information about the error. There is a predefined set of error detail types
34
- # in the package +google.rpc+ which can be used for common error conditions.
34
+ # in the package +google.rpc+ that can be used for common error conditions.
35
35
  #
36
36
  # = Language mapping
37
37
  #
@@ -49,35 +49,35 @@ module Google
49
49
  #
50
50
  # Example uses of this error model include:
51
51
  #
52
- # - Partial errors. If a service needs to return partial errors to the client,
53
- # it may embed the +Status+ in the normal response to indicate the partial
54
- # errors.
52
+ # * Partial errors. If a service needs to return partial errors to the client,
53
+ # it may embed the +Status+ in the normal response to indicate the partial
54
+ # errors.
55
55
  #
56
- # - Workflow errors. A typical workflow has multiple steps. Each step may
57
- # have a +Status+ message for error reporting purpose.
56
+ # * Workflow errors. A typical workflow has multiple steps. Each step may
57
+ # have a +Status+ message for error reporting.
58
58
  #
59
- # - Batch operations. If a client uses batch request and batch response, the
60
- # +Status+ message should be used directly inside batch response, one for
61
- # each error sub-response.
59
+ # * Batch operations. If a client uses batch request and batch response, the
60
+ # +Status+ message should be used directly inside batch response, one for
61
+ # each error sub-response.
62
62
  #
63
- # - Asynchronous operations. If an API call embeds asynchronous operation
64
- # results in its response, the status of those operations should be
65
- # represented directly using the +Status+ message.
63
+ # * Asynchronous operations. If an API call embeds asynchronous operation
64
+ # results in its response, the status of those operations should be
65
+ # represented directly using the +Status+ message.
66
66
  #
67
- # - Logging. If some API errors are stored in logs, the message +Status+ could
68
- # be used directly after any stripping needed for security/privacy reasons.
67
+ # * Logging. If some API errors are stored in logs, the message +Status+ could
68
+ # be used directly after any stripping needed for security/privacy reasons.
69
69
  # @!attribute [rw] code
70
70
  # @return [Integer]
71
- # The status code, which should be an enum value of Google::Rpc::Code.
71
+ # The status code, which should be an enum value of {Google::Rpc::Code}.
72
72
  # @!attribute [rw] message
73
73
  # @return [String]
74
74
  # A developer-facing error message, which should be in English. Any
75
75
  # user-facing error message should be localized and sent in the
76
- # Google::Rpc::Status#details field, or localized by the client.
76
+ # {Google::Rpc::Status#details} field, or localized by the client.
77
77
  # @!attribute [rw] details
78
78
  # @return [Array<Google::Protobuf::Any>]
79
- # A list of messages that carry the error details. There will be a
80
- # common set of message types for APIs to use.
79
+ # A list of messages that carry the error details. There is a common set of
80
+ # message types for APIs to use.
81
81
  class Status; end
82
82
  end
83
83
  end
@@ -0,0 +1,72 @@
1
+ # Copyright 2017, Google Inc. All rights reserved.
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
+ # http://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
+ module Google
16
+ module Cloud
17
+ # rubocop:disable LineLength
18
+
19
+ ##
20
+ # # Ruby Client for Google Cloud Vision API ([Alpha](https://github.com/GoogleCloudPlatform/google-cloud-ruby#versioning))
21
+ #
22
+ # [Google Cloud Vision API][Product Documentation]:
23
+ # Integrates Google Vision features, including image labeling, face, logo, and
24
+ # landmark detection, optical character recognition (OCR), and detection of
25
+ # explicit content, into applications.
26
+ # - [Product Documentation][]
27
+ #
28
+ # ## Quick Start
29
+ # In order to use this library, you first need to go through the following
30
+ # steps:
31
+ #
32
+ # 1. [Select or create a Cloud Platform project.](https://console.cloud.google.com/project)
33
+ # 2. [Enable the Google Cloud Vision API.](https://console.cloud.google.com/apis/api/vision)
34
+ # 3. [Setup Authentication.](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud/master/guides/authentication)
35
+ #
36
+ # ### Installation
37
+ # ```
38
+ # $ gem install google-cloud-vision
39
+ # ```
40
+ #
41
+ # ### Preview
42
+ # #### ImageAnnotatorClient
43
+ # ```rb
44
+ # require "google/cloud/vision"
45
+ #
46
+ # image_annotator_client = Google::Cloud::Vision.new
47
+ # gcs_image_uri = "gs://gapic-toolkit/President_Barack_Obama.jpg"
48
+ # source = { gcs_image_uri: gcs_image_uri }
49
+ # image = { source: source }
50
+ # type = :FACE_DETECTION
51
+ # features_element = { type: type }
52
+ # features = [features_element]
53
+ # requests_element = { image: image, features: features }
54
+ # requests = [requests_element]
55
+ # response = image_annotator_client.batch_annotate_images(requests)
56
+ # ```
57
+ #
58
+ # ### Next Steps
59
+ # - Read the [Google Cloud Vision API Product documentation][Product Documentation]
60
+ # to learn more about the product and see How-to Guides.
61
+ # - View this [repository's main README](https://github.com/GoogleCloudPlatform/google-cloud-ruby/blob/master/README.md)
62
+ # to see the full list of Cloud APIs that we cover.
63
+ #
64
+ # [Product Documentation]: https://cloud.google.com/vision
65
+ #
66
+ #
67
+ module Vision
68
+ module V1
69
+ end
70
+ end
71
+ end
72
+ end
@@ -28,6 +28,7 @@ require "pathname"
28
28
  require "google/gax"
29
29
 
30
30
  require "google/cloud/vision/v1/image_annotator_pb"
31
+ require "google/cloud/vision/credentials"
31
32
 
32
33
  module Google
33
34
  module Cloud
@@ -53,18 +54,28 @@ module Google
53
54
  # The scopes needed to make gRPC calls to all of the methods defined in
54
55
  # this service.
55
56
  ALL_SCOPES = [
56
- "https://www.googleapis.com/auth/cloud-platform"
57
+ "https://www.googleapis.com/auth/cloud-platform",
58
+ "https://www.googleapis.com/auth/cloud-vision"
57
59
  ].freeze
58
60
 
59
- # @param service_path [String]
60
- # The domain name of the API remote host.
61
- # @param port [Integer]
62
- # The port on which to connect to the remote host.
63
- # @param channel [Channel]
64
- # A Channel object through which to make calls.
65
- # @param chan_creds [Grpc::ChannelCredentials]
66
- # A ChannelCredentials for the setting up the RPC client.
67
- # @param client_config[Hash]
61
+ # @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc]
62
+ # Provides the means for authenticating requests made by the client. This parameter can
63
+ # be many types.
64
+ # A `Google::Auth::Credentials` uses a the properties of its represented keyfile for
65
+ # authenticating requests made by this client.
66
+ # A `String` will be treated as the path to the keyfile to be used for the construction of
67
+ # credentials for this client.
68
+ # A `Hash` will be treated as the contents of a keyfile to be used for the construction of
69
+ # credentials for this client.
70
+ # A `GRPC::Core::Channel` will be used to make calls through.
71
+ # A `GRPC::Core::ChannelCredentials` for the setting up the RPC client. The channel credentials
72
+ # should already be composed with a `GRPC::Core::CallCredentials` object.
73
+ # A `Proc` will be used as an updater_proc for the Grpc channel. The proc transforms the
74
+ # metadata for requests, generally, to give OAuth credentials.
75
+ # @param scopes [Array<String>]
76
+ # The OAuth scopes for this service. This parameter is ignored if
77
+ # an updater_proc is supplied.
78
+ # @param client_config [Hash]
68
79
  # A Hash for call options for each method. See
69
80
  # Google::Gax#construct_settings for the structure of
70
81
  # this data. Falls back to the default config if not specified
@@ -76,11 +87,11 @@ module Google
76
87
  port: DEFAULT_SERVICE_PORT,
77
88
  channel: nil,
78
89
  chan_creds: nil,
90
+ updater_proc: nil,
91
+ credentials: nil,
79
92
  scopes: ALL_SCOPES,
80
93
  client_config: {},
81
94
  timeout: DEFAULT_TIMEOUT,
82
- app_name: nil,
83
- app_version: nil,
84
95
  lib_name: nil,
85
96
  lib_version: ""
86
97
  # These require statements are intentionally placed here to initialize
@@ -89,14 +100,38 @@ module Google
89
100
  require "google/gax/grpc"
90
101
  require "google/cloud/vision/v1/image_annotator_services_pb"
91
102
 
103
+ if channel || chan_creds || updater_proc
104
+ warn "The `channel`, `chan_creds`, and `updater_proc` parameters will be removed " \
105
+ "on 2017/09/08"
106
+ credentials ||= channel
107
+ credentials ||= chan_creds
108
+ credentials ||= updater_proc
109
+ end
110
+ if service_path != SERVICE_ADDRESS || port != DEFAULT_SERVICE_PORT
111
+ warn "`service_path` and `port` parameters are deprecated and will be removed"
112
+ end
92
113
 
93
- if app_name || app_version
94
- warn "`app_name` and `app_version` are no longer being used in the request headers."
114
+ credentials ||= Google::Cloud::Vision::Credentials.default
115
+
116
+ if credentials.is_a?(String) || credentials.is_a?(Hash)
117
+ updater_proc = Google::Cloud::Vision::Credentials.new(credentials).updater_proc
118
+ end
119
+ if credentials.is_a?(GRPC::Core::Channel)
120
+ channel = credentials
121
+ end
122
+ if credentials.is_a?(GRPC::Core::ChannelCredentials)
123
+ chan_creds = credentials
124
+ end
125
+ if credentials.is_a?(Proc)
126
+ updater_proc = credentials
127
+ end
128
+ if credentials.is_a?(Google::Auth::Credentials)
129
+ updater_proc = credentials.updater_proc
95
130
  end
96
131
 
97
132
  google_api_client = "gl-ruby/#{RUBY_VERSION}"
98
133
  google_api_client << " #{lib_name}/#{lib_version}" if lib_name
99
- google_api_client << " gapic/0.6.8 gax/#{Google::Gax::VERSION}"
134
+ google_api_client << " gapic/0.1.0 gax/#{Google::Gax::VERSION}"
100
135
  google_api_client << " grpc/#{GRPC::VERSION}"
101
136
  google_api_client.freeze
102
137
 
@@ -120,6 +155,7 @@ module Google
120
155
  port,
121
156
  chan_creds: chan_creds,
122
157
  channel: channel,
158
+ updater_proc: updater_proc,
123
159
  scopes: scopes,
124
160
  &Google::Cloud::Vision::V1::ImageAnnotator::Stub.method(:new)
125
161
  )
@@ -134,28 +170,29 @@ module Google
134
170
 
135
171
  # Run image detection and annotation for a batch of images.
136
172
  #
137
- # @param requests [Array<Google::Cloud::Vision::V1::AnnotateImageRequest>]
173
+ # @param requests [Array<Google::Cloud::Vision::V1::AnnotateImageRequest | Hash>]
138
174
  # Individual image annotation requests for this batch.
175
+ # A hash of the same form as `Google::Cloud::Vision::V1::AnnotateImageRequest`
176
+ # can also be provided.
139
177
  # @param options [Google::Gax::CallOptions]
140
178
  # Overrides the default settings for this call, e.g, timeout,
141
179
  # retries, etc.
142
180
  # @return [Google::Cloud::Vision::V1::BatchAnnotateImagesResponse]
143
181
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
144
182
  # @example
145
- # require "google/cloud/vision/v1/image_annotator_client"
146
- #
147
- # ImageAnnotatorClient = Google::Cloud::Vision::V1::ImageAnnotatorClient
183
+ # require "google/cloud/vision/v1"
148
184
  #
149
- # image_annotator_client = ImageAnnotatorClient.new
185
+ # image_annotator_client = Google::Cloud::Vision::V1.new
150
186
  # requests = []
151
187
  # response = image_annotator_client.batch_annotate_images(requests)
152
188
 
153
189
  def batch_annotate_images \
154
190
  requests,
155
191
  options: nil
156
- req = Google::Cloud::Vision::V1::BatchAnnotateImagesRequest.new({
192
+ req = {
157
193
  requests: requests
158
- }.delete_if { |_, v| v.nil? })
194
+ }.delete_if { |_, v| v.nil? }
195
+ req = Google::Gax::to_proto(req, Google::Cloud::Vision::V1::BatchAnnotateImagesRequest)
159
196
  @batch_annotate_images.call(req, options)
160
197
  end
161
198
  end
@@ -16,7 +16,7 @@
16
16
  module Google
17
17
  module Cloud
18
18
  module Vision
19
- VERSION = "0.25.0"
19
+ VERSION = "0.26.0"
20
20
  end
21
21
  end
22
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-cloud-vision
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.25.0
4
+ version: 0.26.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Moore
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-07-11 00:00:00.000000000 Z
12
+ date: 2017-11-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: google-cloud-core
@@ -17,28 +17,28 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '1.0'
20
+ version: '1.1'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '1.0'
27
+ version: '1.1'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: google-gax
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 0.8.0
34
+ version: 0.10.1
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 0.8.0
41
+ version: 0.10.1
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: minitest
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -203,6 +203,7 @@ files:
203
203
  - lib/google/cloud/vision/v1/doc/google/rpc/status.rb
204
204
  - lib/google/cloud/vision/v1/doc/google/type/color.rb
205
205
  - lib/google/cloud/vision/v1/doc/google/type/latlng.rb
206
+ - lib/google/cloud/vision/v1/doc/overview.rb
206
207
  - lib/google/cloud/vision/v1/geometry_pb.rb
207
208
  - lib/google/cloud/vision/v1/image_annotator_client.rb
208
209
  - lib/google/cloud/vision/v1/image_annotator_client_config.json
@@ -231,7 +232,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
231
232
  version: '0'
232
233
  requirements: []
233
234
  rubyforge_project:
234
- rubygems_version: 2.6.12
235
+ rubygems_version: 2.7.2
235
236
  signing_key:
236
237
  specification_version: 4
237
238
  summary: API Client library for Google Cloud Vision API