google-ads-common 0.11.2 → 0.11.3

Sign up to get free protection for your applications and to get access to all the features.
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