google-ads-googleads 38.0.0 → 38.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 868d414576f30e198ed49cb5aa562c3195430c072286d37a866e48af07aa83d1
4
- data.tar.gz: 9f5b446f3ee98457f0400c11def3c42516e410e2b7455261e8f2a19f935527a8
3
+ metadata.gz: e0309b225ea94bd45816250dfffab407b06b27c6f894e5886df73522fa4a203b
4
+ data.tar.gz: f6d80d3f1d56d3e752cdf5a9be13e324f5eb7139345935c3397f2c972119466e
5
5
  SHA512:
6
- metadata.gz: a9661b3ba5ec3debdb41ccc2da2d4b5a784095051265b5061aef3a1eb70344d5852fd9eda5bb456a3aa7eaa92de95903d19ad3261f9e3c9ed44935fe502cfa97
7
- data.tar.gz: 7b601c6e08e732b8e2cdd5e6bfafb428183878fcada3c9f8269d3cfabd29435f56d36d612efb4e0b5c2f06909ed26d4e8a6c870d2000ceaeddc77eea62d919b0
6
+ metadata.gz: ad93f92c0973d7cb71bc9d79ceb58114c11ed9fc10e6587027c7750c809320d6acb5df4c201244ce22ecc6d3c5f93ea897248d04c81c550436727072e398e6e7
7
+ data.tar.gz: d54bc979b2c62d4be08489279038a744340c4736c0179feb63a0d2f3f2dc1a80e3977cab55fdda5ca7ac547a06b80bf45fd009787e3a4691a7b1f023545efc07
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ 38.1.0
2
+ -----
3
+ - Added more detailed metadata headers.
4
+
1
5
  38.0.0
2
6
  -----
3
7
  - Compatibility with v23.1, v22.1, v21.1, v20.2 of the API: https://developers.google.com/google-ads/api/docs/release-notes
@@ -34,6 +34,7 @@ module Google
34
34
  attr_accessor :login_customer_id
35
35
  attr_accessor :linked_customer_id
36
36
  attr_accessor :use_cloud_org_for_api_access
37
+ attr_accessor :gaada
37
38
 
38
39
  attr_accessor :log_level
39
40
  attr_accessor :log_target
@@ -59,6 +60,7 @@ module Google
59
60
  @login_customer_id = nil
60
61
  @linked_customer_id = nil
61
62
  @use_cloud_org_for_api_access = false
63
+ @gaada = nil
62
64
 
63
65
  @log_level = nil
64
66
  @log_target = nil
@@ -9,6 +9,7 @@ module Google
9
9
  def initialize(
10
10
  logging_interceptor:,
11
11
  error_interceptor:,
12
+ metadata_interceptor:,
12
13
  credentials:,
13
14
  metadata:,
14
15
  endpoint:,
@@ -16,7 +17,8 @@ module Google
16
17
  )
17
18
  @interceptors = [
18
19
  error_interceptor,
19
- logging_interceptor
20
+ logging_interceptor,
21
+ metadata_interceptor
20
22
  ].compact
21
23
  @credentials = credentials
22
24
  @metadata = metadata
@@ -9,6 +9,7 @@ module Google
9
9
  def initialize(
10
10
  logging_interceptor:,
11
11
  error_interceptor:,
12
+ metadata_interceptor:,
12
13
  credentials:,
13
14
  metadata:,
14
15
  endpoint:,
@@ -16,7 +17,8 @@ module Google
16
17
  )
17
18
  @interceptors = [
18
19
  error_interceptor,
19
- logging_interceptor
20
+ logging_interceptor,
21
+ metadata_interceptor
20
22
  ].compact
21
23
  @credentials = credentials
22
24
  @metadata = metadata
@@ -9,6 +9,7 @@ module Google
9
9
  def initialize(
10
10
  logging_interceptor:,
11
11
  error_interceptor:,
12
+ metadata_interceptor:,
12
13
  credentials:,
13
14
  metadata:,
14
15
  endpoint:,
@@ -16,7 +17,8 @@ module Google
16
17
  )
17
18
  @interceptors = [
18
19
  error_interceptor,
19
- logging_interceptor
20
+ logging_interceptor,
21
+ metadata_interceptor
20
22
  ].compact
21
23
  @credentials = credentials
22
24
  @metadata = metadata
@@ -9,6 +9,7 @@ module Google
9
9
  def initialize(
10
10
  logging_interceptor:,
11
11
  error_interceptor:,
12
+ metadata_interceptor:,
12
13
  credentials:,
13
14
  metadata:,
14
15
  endpoint:,
@@ -16,7 +17,8 @@ module Google
16
17
  )
17
18
  @interceptors = [
18
19
  error_interceptor,
19
- logging_interceptor
20
+ logging_interceptor,
21
+ metadata_interceptor
20
22
  ].compact
21
23
  @credentials = credentials
22
24
  @metadata = metadata
@@ -114,6 +114,7 @@ module Google
114
114
  if @config.use_cloud_org_for_api_access.is_a?(String)
115
115
  @config.use_cloud_org_for_api_access = @config.use_cloud_org_for_api_access.downcase == "true"
116
116
  end
117
+ @config.gaada = ENV.fetch("GOOGLE_ADS_GAADA", @config.gaada)
117
118
  end
118
119
 
119
120
  # Return a service for the provided entity type. For example, passing
@@ -0,0 +1,78 @@
1
+ # Encoding: utf-8
2
+ #
3
+ # Copyright 2022 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+ # Interceptor to add metadata headers to requests.
18
+
19
+ require 'grpc/generic/interceptors'
20
+ require 'google/protobuf'
21
+
22
+ module Google
23
+ module Ads
24
+ module GoogleAds
25
+ module Interceptors
26
+ class MetadataInterceptor < GRPC::ClientInterceptor
27
+ def initialize(developer_token, login_customer_id, linked_customer_id, use_cloud_org_for_api_access, gaada)
28
+ super()
29
+ @developer_token = developer_token
30
+ @login_customer_id = login_customer_id
31
+ @linked_customer_id = linked_customer_id
32
+ @use_cloud_org_for_api_access = use_cloud_org_for_api_access
33
+ @gaada = gaada
34
+ end
35
+
36
+ def request_response(request:, call:, method:, metadata: {})
37
+ update_metadata(metadata)
38
+ yield
39
+ end
40
+
41
+ def server_streamer(request:, call:, method:, metadata: {})
42
+ update_metadata(metadata)
43
+ yield
44
+ end
45
+
46
+ private
47
+
48
+ def update_metadata(metadata)
49
+ if !@use_cloud_org_for_api_access
50
+ metadata[:"developer-token"] = @developer_token
51
+ end
52
+
53
+ if @login_customer_id
54
+ metadata[:"login-customer-id"] = @login_customer_id.to_s
55
+ end
56
+
57
+ if @linked_customer_id
58
+ metadata[:"linked-customer-id"] = @linked_customer_id.to_s
59
+ end
60
+
61
+ # The python library iterates over metadata and modifies x-goog-api-client
62
+ # Here we can directly access it.
63
+ if metadata.key?(:"x-goog-api-client")
64
+ if @gaada
65
+ metadata[:"x-goog-api-client"] += " gaada/#{@gaada}"
66
+ end
67
+
68
+ # Check if "pb" is already in the header
69
+ unless metadata[:"x-goog-api-client"].include?("pb")
70
+ metadata[:"x-goog-api-client"] += " pb/#{Gem.loaded_specs["google-protobuf"].version}"
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -1,5 +1,6 @@
1
1
  require 'google/ads/google_ads/interceptors/logging_interceptor'
2
2
  require 'google/ads/google_ads/interceptors/error_interceptor'
3
+ require 'google/ads/google_ads/interceptors/metadata_interceptor'
3
4
 
4
5
  module Google
5
6
  module Ads
@@ -26,16 +27,24 @@ module Google
26
27
  logging_interceptor = GoogleAds::Interceptors::LoggingInterceptor.new(logger)
27
28
  end
28
29
  error_interceptor = GoogleAds::Interceptors::ErrorInterceptor.new
30
+ metadata_interceptor = GoogleAds::Interceptors::MetadataInterceptor.new(
31
+ config.developer_token,
32
+ config.login_customer_id,
33
+ config.linked_customer_id,
34
+ config.use_cloud_org_for_api_access,
35
+ config.gaada
36
+ )
29
37
 
30
38
  version_alternates = {}
31
39
  Factories::VERSIONS.each do |v|
32
- version_alternates[v] = factory_at_version(v, error_interceptor, logging_interceptor)
40
+ version_alternates[v] = factory_at_version(v, error_interceptor, logging_interceptor, metadata_interceptor)
33
41
  end
34
42
 
35
43
  highest_factory = factory_at_version(
36
44
  Factories::HIGHEST_VERSION,
37
45
  error_interceptor,
38
46
  logging_interceptor,
47
+ metadata_interceptor,
39
48
  )
40
49
 
41
50
  VersionAlternate.new(highest_factory, version_alternates)
@@ -43,10 +52,11 @@ module Google
43
52
 
44
53
  private
45
54
 
46
- def factory_at_version(version, error_interceptor, logging_interceptor)
55
+ def factory_at_version(version, error_interceptor, logging_interceptor, metadata_interceptor)
47
56
  factory = Factories.at_version(version).services.new(**{
48
57
  logging_interceptor: logging_interceptor,
49
58
  error_interceptor: error_interceptor,
59
+ metadata_interceptor: metadata_interceptor,
50
60
  deprecation: deprecator
51
61
  }.merge(gax_service_params))
52
62
 
@@ -62,27 +72,15 @@ module Google
62
72
  end
63
73
 
64
74
  def headers
65
- headers = {}
66
-
67
- # If config.use_cloud_org_for_api_access is not True, add the developer
68
- # token to the request's metadata
69
- if !config.use_cloud_org_for_api_access
70
- headers[:"developer-token"] = config.developer_token
71
- end
72
-
73
75
  if config.login_customer_id
74
76
  validate_customer_id(:login_customer_id)
75
- # header values must be strings
76
- headers[:"login-customer-id"] = config.login_customer_id.to_s
77
77
  end
78
78
 
79
79
  if config.linked_customer_id
80
80
  validate_customer_id(:linked_customer_id)
81
- # header values must be strings
82
- headers[:"linked-customer-id"] = config.linked_customer_id.to_s
83
81
  end
84
82
 
85
- headers
83
+ {}
86
84
  end
87
85
 
88
86
  def validate_customer_id(field)
@@ -20,7 +20,7 @@ module Google
20
20
  module Ads
21
21
  module GoogleAds
22
22
  CLIENT_LIB_NAME = 'gccl'.freeze
23
- CLIENT_LIB_VERSION = '38.0.0'.freeze
23
+ CLIENT_LIB_VERSION = '38.1.0'.freeze
24
24
  VERSION = CLIENT_LIB_VERSION
25
25
  end
26
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-ads-googleads
3
3
  version: !ruby/object:Gem::Version
4
- version: 38.0.0
4
+ version: 38.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Google Inc
@@ -129,6 +129,7 @@ files:
129
129
  - lib/google/ads/google_ads/google_ads_client.rb
130
130
  - lib/google/ads/google_ads/interceptors/error_interceptor.rb
131
131
  - lib/google/ads/google_ads/interceptors/logging_interceptor.rb
132
+ - lib/google/ads/google_ads/interceptors/metadata_interceptor.rb
132
133
  - lib/google/ads/google_ads/lookup_util.rb
133
134
  - lib/google/ads/google_ads/patches.rb
134
135
  - lib/google/ads/google_ads/service_lookup.rb