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 +6 -0
- data/lib/ads_common/credential_handler.rb +28 -0
- data/lib/ads_common/savon_service.rb +5 -1
- data/lib/ads_common/version.rb +1 -1
- data/test/test_credential_handler.rb +24 -0
- metadata +56 -44
- checksums.yaml +0 -7
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 =
|
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]
|
data/lib/ads_common/version.rb
CHANGED
@@ -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.
|
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-
|
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.
|
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.
|
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/
|
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/
|
101
|
-
- lib/ads_common/
|
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/
|
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
|
-
-
|
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/
|
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/
|
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:
|
159
|
+
rubygems_version: 1.8.23
|
148
160
|
signing_key:
|
149
|
-
specification_version:
|
161
|
+
specification_version: 3
|
150
162
|
summary: Common code for Google Ads APIs
|
151
163
|
test_files:
|
152
|
-
- test/
|
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/
|
168
|
+
- test/test_credential_handler.rb
|
157
169
|
- test/test_oauth2_handler.rb
|
158
|
-
- test/
|
159
|
-
- test/
|
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
|