google-ads-common 0.11.2 → 0.11.3

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.
data/ChangeLog CHANGED
@@ -1,3 +1,9 @@
1
+ 0.11.3:
2
+ - Fixes Github Issue 81
3
+ https://github.com/googleads/google-api-ads-ruby/issues/81
4
+ - Added support for custom library-specific user agent tags.
5
+ - Updating signet dependency to 0.7.0.
6
+
1
7
  0.11.2:
2
8
  - Updated required version of ads_savon to 1.0.1 to fix issue #74.
3
9
  - Updated default adapter for httpi to httpclient, to fix various errors
@@ -18,6 +18,7 @@
18
18
  # Generic class to handle credentials across client libraries.
19
19
 
20
20
  require 'ads_common/api_config'
21
+ require 'thread'
21
22
 
22
23
  module AdsCommon
23
24
  class CredentialHandler
@@ -26,6 +27,8 @@ module AdsCommon
26
27
  def initialize(config)
27
28
  @config = config
28
29
  @auth_handler = nil
30
+ @extra_user_agents = {}
31
+ @extra_user_agents_lock = Mutex.new
29
32
  load_from_config(config)
30
33
  end
31
34
 
@@ -64,6 +67,18 @@ module AdsCommon
64
67
  @auth_handler.property_changed(credential, value) if @auth_handler
65
68
  end
66
69
 
70
+ # Adds a custom string to the user agent, one time, the next time a user
71
+ # agent is generated. This will be rendered in the format "name/suffix",
72
+ # or just "name" if the suffix is nil or omitted.
73
+ def include_in_user_agent(name, suffix = nil)
74
+ return if name.nil?
75
+ unless @config.read('library.include_utilities_in_user_agent') == false
76
+ @extra_user_agents_lock.synchronize do
77
+ @extra_user_agents[name] = suffix
78
+ end
79
+ end
80
+ end
81
+
67
82
  # Generates string for UserAgent to put into headers.
68
83
  def generate_user_agent(extra_ids = [], agent_app = nil)
69
84
  agent_app ||= File.basename($0)
@@ -74,6 +89,7 @@ module AdsCommon
74
89
  agent_data << [ruby_engine, RUBY_VERSION].join('/')
75
90
  agent_data << 'HTTPI/%s' % HTTPI::VERSION
76
91
  agent_data << HTTPI::Adapter.use.to_s
92
+ agent_data += get_extra_user_agents()
77
93
  return '%s (%s)' % [agent_app, agent_data.join(', ')]
78
94
  end
79
95
 
@@ -88,5 +104,17 @@ module AdsCommon
88
104
  def load_from_config(config)
89
105
  @credentials = config.read('authentication')
90
106
  end
107
+
108
+ # Generates an array of extra user agents to include in the user agent
109
+ # string.
110
+ def get_extra_user_agents()
111
+ @extra_user_agents_lock.synchronize do
112
+ user_agents = @extra_user_agents.collect do |k, v|
113
+ v.nil? ? k : '%s/%s' % [k, v]
114
+ end
115
+ @extra_user_agents.clear
116
+ return user_agents
117
+ end
118
+ end
91
119
  end
92
120
  end
@@ -31,6 +31,8 @@ module AdsCommon
31
31
  attr_reader :version
32
32
  attr_reader :namespace
33
33
 
34
+ FALLBACK_API_ERROR_EXCEPTION = "ApiException"
35
+
34
36
  # Creates a new service.
35
37
  def initialize(config, endpoint, namespace, version)
36
38
  if self.class() == AdsCommon::SavonService
@@ -132,7 +134,9 @@ module AdsCommon
132
134
  fault = response[:fault]
133
135
  if fault[:detail] and fault[:detail][:api_exception_fault]
134
136
  exception_fault = fault[:detail][:api_exception_fault]
135
- exception_name = exception_fault[:application_exception_type]
137
+ exception_name = (
138
+ exception_fault[:application_exception_type] ||
139
+ FALLBACK_API_ERROR_EXCEPTION)
136
140
  exception_class = get_module().const_get(exception_name)
137
141
  return exception_class.new(exception_fault)
138
142
  elsif fault[:faultstring]
@@ -19,6 +19,6 @@
19
19
 
20
20
  module AdsCommon
21
21
  module ApiConfig
22
- CLIENT_LIB_VERSION = '0.11.2'
22
+ CLIENT_LIB_VERSION = '0.11.3'
23
23
  end
24
24
  end
@@ -64,6 +64,30 @@ class TestCredentialHandler < Test::Unit::TestCase
64
64
  assert_match(/#{Regexp.escape(test_str)}/, result1)
65
65
  end
66
66
 
67
+ def test_generate_user_agent_include_simple()
68
+ test_str = 'Tester'
69
+ @handler.include_in_user_agent(test_str)
70
+ result1 = @handler.generate_user_agent()
71
+ assert_kind_of(String, result1)
72
+ assert_match(/#{Regexp.escape(test_str)}/, result1)
73
+ result2 = @handler.generate_user_agent()
74
+ assert_kind_of(String, result2)
75
+ assert_no_match(/#{Regexp.escape(test_str)}/, result2)
76
+ end
77
+
78
+ def test_generate_user_agent_include_version()
79
+ test_str = 'Tester/0.2.0'
80
+ argument1 = 'Tester'
81
+ argument2 = '0.2.0'
82
+ @handler.include_in_user_agent(argument1, argument2)
83
+ result1 = @handler.generate_user_agent()
84
+ assert_kind_of(String, result1)
85
+ assert_match(/#{Regexp.escape(test_str)}/, result1)
86
+ result2 = @handler.generate_user_agent()
87
+ assert_kind_of(String, result2)
88
+ assert_no_match(/#{Regexp.escape(test_str)}/, result2)
89
+ end
90
+
67
91
  def test_auth_handler_callback_once()
68
92
  mock = MiniTest::Mock.new()
69
93
  mock.expect(:property_changed, nil, [:foo, 'bar'])
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-ads-common
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.2
4
+ version: 0.11.3
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Sergio Gomes
@@ -10,76 +11,86 @@ authors:
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2016-02-04 00:00:00.000000000 Z
14
+ date: 2016-03-07 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: google-ads-savon
17
18
  requirement: !ruby/object:Gem::Requirement
19
+ none: false
18
20
  requirements:
19
- - - "~>"
21
+ - - ~>
20
22
  - !ruby/object:Gem::Version
21
23
  version: 1.0.1
22
24
  type: :runtime
23
25
  prerelease: false
24
26
  version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
25
28
  requirements:
26
- - - "~>"
29
+ - - ~>
27
30
  - !ruby/object:Gem::Version
28
31
  version: 1.0.1
29
32
  - !ruby/object:Gem::Dependency
30
33
  name: httpi
31
34
  requirement: !ruby/object:Gem::Requirement
35
+ none: false
32
36
  requirements:
33
- - - "~>"
37
+ - - ~>
34
38
  - !ruby/object:Gem::Version
35
39
  version: '2.3'
36
40
  type: :runtime
37
41
  prerelease: false
38
42
  version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
39
44
  requirements:
40
- - - "~>"
45
+ - - ~>
41
46
  - !ruby/object:Gem::Version
42
47
  version: '2.3'
43
48
  - !ruby/object:Gem::Dependency
44
49
  name: httpclient
45
50
  requirement: !ruby/object:Gem::Requirement
51
+ none: false
46
52
  requirements:
47
- - - "~>"
53
+ - - ~>
48
54
  - !ruby/object:Gem::Version
49
55
  version: '2.7'
50
56
  type: :runtime
51
57
  prerelease: false
52
58
  version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
53
60
  requirements:
54
- - - "~>"
61
+ - - ~>
55
62
  - !ruby/object:Gem::Version
56
63
  version: '2.7'
57
64
  - !ruby/object:Gem::Dependency
58
65
  name: signet
59
66
  requirement: !ruby/object:Gem::Requirement
67
+ none: false
60
68
  requirements:
61
- - - "~>"
69
+ - - ~>
62
70
  - !ruby/object:Gem::Version
63
- version: 0.6.0
71
+ version: 0.7.0
64
72
  type: :runtime
65
73
  prerelease: false
66
74
  version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
67
76
  requirements:
68
- - - "~>"
77
+ - - ~>
69
78
  - !ruby/object:Gem::Version
70
- version: 0.6.0
79
+ version: 0.7.0
71
80
  - !ruby/object:Gem::Dependency
72
81
  name: rake
73
82
  requirement: !ruby/object:Gem::Requirement
83
+ none: false
74
84
  requirements:
75
- - - ">="
85
+ - - ! '>='
76
86
  - !ruby/object:Gem::Version
77
87
  version: 10.4.2
78
88
  type: :development
79
89
  prerelease: false
80
90
  version_requirements: !ruby/object:Gem::Requirement
91
+ none: false
81
92
  requirements:
82
- - - ">="
93
+ - - ! '>='
83
94
  - !ruby/object:Gem::Version
84
95
  version: 10.4.2
85
96
  description: Essential utilities shared by all Ads Ruby client libraries
@@ -89,71 +100,72 @@ executables: []
89
100
  extensions: []
90
101
  extra_rdoc_files: []
91
102
  files:
92
- - COPYING
93
- - ChangeLog
94
- - README.md
95
103
  - lib/ads_common/api.rb
96
- - lib/ads_common/api_config.rb
104
+ - lib/ads_common/version.rb
105
+ - lib/ads_common/errors.rb
97
106
  - lib/ads_common/auth/base_handler.rb
98
- - lib/ads_common/auth/oauth2_handler.rb
99
107
  - lib/ads_common/auth/oauth2_service_account_handler.rb
100
- - lib/ads_common/build/savon_abstract_generator.rb
101
- - lib/ads_common/build/savon_generator.rb
108
+ - lib/ads_common/auth/oauth2_handler.rb
109
+ - lib/ads_common/credential_handler.rb
110
+ - lib/ads_common/api_config.rb
111
+ - lib/ads_common/utils.rb
112
+ - lib/ads_common/build/savon_service_generator.rb
102
113
  - lib/ads_common/build/savon_registry.rb
103
114
  - lib/ads_common/build/savon_registry_generator.rb
104
- - lib/ads_common/build/savon_service_generator.rb
115
+ - lib/ads_common/build/savon_abstract_generator.rb
116
+ - lib/ads_common/build/savon_generator.rb
105
117
  - lib/ads_common/config.rb
106
- - lib/ads_common/credential_handler.rb
107
- - lib/ads_common/errors.rb
108
- - lib/ads_common/http.rb
109
118
  - lib/ads_common/parameters_validator.rb
110
- - lib/ads_common/results_extractor.rb
111
119
  - lib/ads_common/savon_headers/base_header_handler.rb
112
120
  - lib/ads_common/savon_headers/oauth_header_handler.rb
121
+ - lib/ads_common/results_extractor.rb
122
+ - lib/ads_common/http.rb
113
123
  - lib/ads_common/savon_service.rb
114
- - lib/ads_common/utils.rb
115
- - lib/ads_common/version.rb
116
- - test/coverage.rb
124
+ - test/test_env.rb
117
125
  - test/suite_unittests.rb
126
+ - test/coverage.rb
127
+ - test/test_results_extractor.rb
118
128
  - test/test_config.rb
119
- - test/test_config.yml
129
+ - test/test_utils.rb
120
130
  - test/test_credential_handler.rb
121
- - test/test_env.rb
122
131
  - test/test_oauth2_handler.rb
123
- - test/test_parameters_validator.rb
124
- - test/test_results_extractor.rb
125
132
  - test/test_savon_service.rb
126
- - test/test_utils.rb
133
+ - test/test_config.yml
134
+ - test/test_parameters_validator.rb
135
+ - COPYING
136
+ - README.md
137
+ - ChangeLog
127
138
  homepage: https://github.com/googleads/google-api-ads-ruby
128
139
  licenses:
129
140
  - Apache-2.0
130
- metadata: {}
131
141
  post_install_message:
132
142
  rdoc_options: []
133
143
  require_paths:
134
144
  - lib
135
145
  required_ruby_version: !ruby/object:Gem::Requirement
146
+ none: false
136
147
  requirements:
137
- - - ">="
148
+ - - ! '>='
138
149
  - !ruby/object:Gem::Version
139
150
  version: '0'
140
151
  required_rubygems_version: !ruby/object:Gem::Requirement
152
+ none: false
141
153
  requirements:
142
- - - ">="
154
+ - - ! '>='
143
155
  - !ruby/object:Gem::Version
144
156
  version: 1.3.6
145
157
  requirements: []
146
158
  rubyforge_project: google-ads-common
147
- rubygems_version: 2.4.8
159
+ rubygems_version: 1.8.23
148
160
  signing_key:
149
- specification_version: 4
161
+ specification_version: 3
150
162
  summary: Common code for Google Ads APIs
151
163
  test_files:
152
- - test/test_savon_service.rb
164
+ - test/test_env.rb
165
+ - test/test_results_extractor.rb
153
166
  - test/test_config.rb
154
- - test/test_credential_handler.rb
155
167
  - test/test_utils.rb
156
- - test/test_parameters_validator.rb
168
+ - test/test_credential_handler.rb
157
169
  - test/test_oauth2_handler.rb
158
- - test/test_env.rb
159
- - test/test_results_extractor.rb
170
+ - test/test_savon_service.rb
171
+ - test/test_parameters_validator.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 10caed5a26897a25b34a734be2e882529abc2441
4
- data.tar.gz: f6e2f2cc9495b2998e84a4a1e47e3934a354f161
5
- SHA512:
6
- metadata.gz: 31cafd81ea5bb9e67fef47cc9f407d86b1a6e14affc28e1afadf51ca172dd9ffd353d7082bee6ddbd1992332a12d9116957fdf939b784a38cb50b162a66c9ecf
7
- data.tar.gz: 3aa55e15e0253bcf914a231bedb054171bc1f99148ab45b6f21bad8ec6b89df94a66b6ba21bbe89f3d9628d3f2d987f87fe0d73bc941c369075ab57e5e34f94f