google-ads-common 0.9.5 → 0.9.6

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MTIxOTRkZDQzYjY0YTM4OGU3MDczNGY1NjBlYzkyYTE2ZDkyNGFmNQ==
4
+ Y2VjOTE1ODA4OGQzOGY2NmU4MDczOWE4OTYwMzUwMDgzNTg3YzU0OQ==
5
5
  data.tar.gz: !binary |-
6
- NTVhYTM0YTkyNGI1MWNiOWVmZWEyOTY1OGNlMjNkY2E1ZWZmMjNiNA==
7
- !binary "U0hBNTEy":
6
+ MzFiODExZTFhOTQ3OGI5NzU3NWFmYzRiYzZmOWRkOGFjYjhkM2U0NQ==
7
+ SHA512:
8
8
  metadata.gz: !binary |-
9
- M2RkZDk2MTM4N2U5MjI1ZDk3MzUxNzM5YWM3MjkwOWEyNjUxNGZmYmM1MjA2
10
- NDkwN2FmOTEwMmEwMGFjN2M4YTJjMTc2Y2FjODVkMTVkMTlhZmIwMjI4NWJk
11
- YmM2MWUyNGZjY2VkYWFmN2JkNTkyMTFkMmY4ZmQxN2RiNWE2Njg=
9
+ ZWE4MDc2MTQzNjEyMDRhNzE2ZjhkZTI0ODhjM2Y3ZDIzMDAyMjIyZmYyNThi
10
+ Y2JjODZjNjQ3ZmNkZGZjZDA0Mjk1YWUzMTZlNTVjMDBhZDNjNTAwOWQwZWY3
11
+ M2EwOTRiMzdhYzk5MDQ1M2JlOWFmOGMxODgwOWJhY2EyZDUzYTc=
12
12
  data.tar.gz: !binary |-
13
- YTAxZWMyN2I2OGNkNDRkY2Y3ZWIzMmE3MmE1NzcwZWM5NDVlNzI4ZjMzMGI0
14
- Yzc3NTE0MmI2NjY5ZTAyMmMwMmM2YjFkOWVjMDc4NmM3OTU4ZDQzYzczMjU5
15
- ZjhkYjRlMWIyMzBjOTM1MzcyYWY0NTU5ZWZkYzAxMDhkZDRhMTM=
13
+ ZWM4MmQxYTE0ODNjNTIzNDdjOTRjZTkzYTNhOGFiOWQ1N2ViNTdjNjkzOTQx
14
+ NDU0ZDIzNDJiZjcxM2FjZjg4ODI3OTFlY2I2MDFhMGRjZmM3MTIxNWRlZDQ4
15
+ NTUzMThkYWU1MmU1N2U5YWFkZDQxNTc2MWI4NzRlNDMxYzkxNTA=
data/ChangeLog CHANGED
@@ -1,3 +1,6 @@
1
+ 0.9.6:
2
+ - Support for 'choice' types in API requests.
3
+
1
4
  0.9.5:
2
5
  - Updated user-agent generation for default string.
3
6
 
data/README.md ADDED
@@ -0,0 +1,88 @@
1
+ # Google AdsCommon Library
2
+
3
+ This gem is a dependency for the new generation of Ruby Google Ads client
4
+ libraries. It contains common code shared among all of these libraries, such as
5
+ authentication, SOAP stub generation, error handling, logging, etc.
6
+
7
+
8
+ # Docs for Users
9
+
10
+ ## 1 - Installation:
11
+
12
+ `google-ads-common` is a Ruby gem. See
13
+
14
+ > [http://docs.rubygems.org/read/book/1]()
15
+
16
+ Install it using the gem install command.
17
+
18
+ $ gem install google-ads-common
19
+
20
+ The following gem libraries are required:
21
+
22
+ - savon
23
+ - httpi
24
+ - signet
25
+
26
+
27
+ # Docs for Developers
28
+
29
+ ## 1 - Directory Structure
30
+
31
+ - `lib/ads_common/`: Contains the bulk of the library.
32
+ - `auth/`: Contains classes that can handle different authentication methods.
33
+ Currently only supports ClientLogin.
34
+ - `build/`: Contains classes that handle code generation, packaging and other
35
+ build-time tasks for client libraries (not for google-ads-common).
36
+ - `savon_headers/`: Contains classes that handle header injection into savon
37
+ requests.
38
+ - `test/`: Contains the unit tests for the library.
39
+
40
+
41
+ ## 2 - Commands
42
+
43
+ To build the gem:
44
+
45
+ $ gem build google-ads-common.gemspec
46
+
47
+ To run unit tests on the library:
48
+
49
+ $ rake test
50
+
51
+
52
+ ## 3 - Resources
53
+
54
+ Ruby client libraries code page:
55
+
56
+ > [https://github.com/googleads/google-api-ads-ruby]()
57
+
58
+ Google Ads Developers Plus page:
59
+
60
+ > [https://plus.google.com/+GoogleAdsDevelopers]()
61
+
62
+
63
+ # Copyright/License Info
64
+
65
+ Copyright 2010-2014, Google Inc. All Rights Reserved.
66
+
67
+ Licensed under the Apache License, Version 2.0 (the "License");
68
+ you may not use this file except in compliance with the License.
69
+ You may obtain a copy of the License at
70
+
71
+ > [http://www.apache.org/licenses/LICENSE-2.0]()
72
+
73
+ Unless required by applicable law or agreed to in writing, software
74
+ distributed under the License is distributed on an "AS IS" BASIS,
75
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
76
+ See the License for the specific language governing permissions and
77
+ limitations under the License.
78
+
79
+
80
+ ## Authors
81
+
82
+ - Sérgio Gomes (api.sgomes@gmail.com)
83
+ - Danial Klimkin (api.dklimkin@gmail.com)
84
+ - Michael Cloonan (api.mcloonan@gmail.com)
85
+
86
+ ## Maintainer
87
+
88
+ - Michael Cloonan (api.mcloonan@gmail.com)
@@ -31,7 +31,7 @@ module AdsCommon
31
31
  #
32
32
  # This is auto-generated code, changes will be overwritten.
33
33
  #
34
- # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
34
+ # Copyright:: Copyright 2014, Google Inc. All Rights Reserved.
35
35
  # License:: Licensed under the Apache License, Version 2.0.
36
36
  #
37
37
  # <%= @generator_stamp %>
@@ -31,7 +31,7 @@ module AdsCommon
31
31
  #
32
32
  # This is auto-generated code, changes will be overwritten.
33
33
  #
34
- # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
34
+ # Copyright:: Copyright 2014, Google Inc. All Rights Reserved.
35
35
  # License:: Licensed under the Apache License, Version 2.0.
36
36
  #
37
37
  # <%= @generator_stamp %>
@@ -19,6 +19,8 @@
19
19
  #
20
20
  # This class validates input parameters before passing them to Savon.
21
21
 
22
+ require 'ads_common/utils'
23
+
22
24
  module AdsCommon
23
25
  class ParametersValidator
24
26
  # Savon special keys.
@@ -71,12 +73,49 @@ module AdsCommon
71
73
  item_type = get_full_type_signature(field[:type])
72
74
  item_ns = field[:ns] || type_ns
73
75
  key = handle_namespace_override(args_hash, key, item_ns) if item_ns
74
- validate_arg(item, args_hash, key, item_type)
76
+
77
+ # Separate validation for choice types as we need to inject nodes into
78
+ # the tree. Validate as usual if not a choice type.
79
+ unless validate_choice_argument(item, args_hash, key, item_type)
80
+ validate_arg(item, args_hash, key, item_type)
81
+ end
75
82
  end
76
83
  end
77
84
  return args_hash
78
85
  end
79
86
 
87
+ # Special handling for choice types. Goes over each item, checks xsi_type
88
+ # is set and correct and injects new node for it into the tree. After that,
89
+ # recurces with the correct item type.
90
+ def validate_choice_argument(item, parent, key, item_type)
91
+ result = false
92
+ if item_type.kind_of?(Hash) && item_type.include?(:choices)
93
+ new_root = {}
94
+ choice_items = arrayize(item)
95
+ choice_items.each do |choice_item|
96
+ choice_type = choice_item.delete(:xsi_type)
97
+ choice_item_type =
98
+ find_choice_by_xsi_type(choice_type, item_type[:choices])
99
+ if choice_type.nil? || choice_item_type.nil?
100
+ raise AdsCommon::Errors::TypeMismatchError.new(
101
+ 'choice subtype', choice_type, choice_item.to_s())
102
+ end
103
+ new_root[choice_type] ||= []
104
+ new_root[choice_type] << choice_item
105
+ type_signature = get_full_type_signature(choice_type)
106
+ validate_arg(choice_item, new_root, choice_type, type_signature)
107
+ end
108
+ parent[key] = new_root
109
+ result = true
110
+ end
111
+ return result
112
+ end
113
+
114
+ def find_choice_by_xsi_type(xsi_type, item_def)
115
+ index = item_def.index {|item| xsi_type.eql?(item[:original_name])}
116
+ return index.nil? ? nil : item_def[index]
117
+ end
118
+
80
119
  # Checks if no extra fields provided outside of known ones.
81
120
  def check_extra_fields(args_hash, known_fields)
82
121
  extra_fields = args_hash.keys - known_fields - IGNORED_HASH_KEYS
@@ -21,6 +21,6 @@
21
21
 
22
22
  module AdsCommon
23
23
  module ApiConfig
24
- CLIENT_LIB_VERSION = '0.9.5'
24
+ CLIENT_LIB_VERSION = '0.9.6'
25
25
  end
26
26
  end
@@ -80,22 +80,22 @@ class TestCredentialHandler < Test::Unit::TestCase
80
80
  credentials[:foo] = 'bar'
81
81
  credentials[:baz] = 42
82
82
  mock1 = MiniTest::Mock.new()
83
- mock1.expect(:property_changed, nil, [:foo, 'bar'])
84
- mock1.expect(:property_changed, nil, [:baz, 42])
83
+ mock1.expect(:property_changed, nil, [:baz, 42])
85
84
  @handler.set_auth_handler(mock1)
86
85
  @handler.credentials = credentials
87
86
  assert(mock1.verify)
88
87
 
89
88
  credentials.delete(:baz)
90
89
  mock2 = MiniTest::Mock.new()
91
- mock2.expect(:property_changed, nil, [:baz, nil])
90
+ mock2.expect(:property_changed, nil, [:baz, nil])
92
91
  @handler.set_auth_handler(mock2)
93
92
  @handler.credentials = credentials
94
93
  assert(mock2.verify)
95
94
 
96
95
  credentials[:foo] = nil
97
96
  mock3 = MiniTest::Mock.new()
98
- mock3.expect(:property_changed, nil, [:foo, nil])
97
+ mock3.expect(:property_changed, nil, [:foo, nil])
98
+ mock3.expect(:property_changed, nil, [:baz, nil])
99
99
  @handler.set_auth_handler(mock3)
100
100
  @handler.credentials = credentials
101
101
  assert(mock3.verify)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-ads-common
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.5
4
+ version: 0.9.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergio Gomes
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-26 00:00:00.000000000 Z
12
+ date: 2014-12-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: savon
@@ -60,42 +60,41 @@ executables: []
60
60
  extensions: []
61
61
  extra_rdoc_files: []
62
62
  files:
63
+ - COPYING
64
+ - ChangeLog
65
+ - README.md
63
66
  - lib/ads_common/api.rb
64
- - lib/ads_common/credential_handler.rb
65
- - lib/ads_common/parameters_validator.rb
66
- - lib/ads_common/utils.rb
67
+ - lib/ads_common/api_config.rb
67
68
  - lib/ads_common/auth/base_handler.rb
68
- - lib/ads_common/auth/oauth2_jwt_handler.rb
69
- - lib/ads_common/auth/oauth2_handler.rb
70
69
  - lib/ads_common/auth/client_login_handler.rb
71
- - lib/ads_common/http.rb
70
+ - lib/ads_common/auth/oauth2_handler.rb
71
+ - lib/ads_common/auth/oauth2_jwt_handler.rb
72
+ - lib/ads_common/build/savon_abstract_generator.rb
73
+ - lib/ads_common/build/savon_generator.rb
74
+ - lib/ads_common/build/savon_registry.rb
75
+ - lib/ads_common/build/savon_registry_generator.rb
76
+ - lib/ads_common/build/savon_service_generator.rb
72
77
  - lib/ads_common/config.rb
73
- - lib/ads_common/savon_service.rb
74
- - lib/ads_common/savon_headers/oauth_header_handler.rb
75
- - lib/ads_common/savon_headers/base_header_handler.rb
78
+ - lib/ads_common/credential_handler.rb
76
79
  - lib/ads_common/errors.rb
80
+ - lib/ads_common/http.rb
81
+ - lib/ads_common/parameters_validator.rb
77
82
  - lib/ads_common/results_extractor.rb
83
+ - lib/ads_common/savon_headers/base_header_handler.rb
84
+ - lib/ads_common/savon_headers/oauth_header_handler.rb
85
+ - lib/ads_common/savon_service.rb
86
+ - lib/ads_common/utils.rb
78
87
  - lib/ads_common/version.rb
79
- - lib/ads_common/build/savon_registry.rb
80
- - lib/ads_common/build/savon_service_generator.rb
81
- - lib/ads_common/build/savon_abstract_generator.rb
82
- - lib/ads_common/build/savon_registry_generator.rb
83
- - lib/ads_common/build/savon_generator.rb
84
- - lib/ads_common/api_config.rb
85
- - test/test_credential_handler.rb
88
+ - test/coverage.rb
86
89
  - test/suite_unittests.rb
87
- - test/test_utils.rb
88
- - test/ads_devrel_ruby_ads_common.blueprint
89
90
  - test/test_client_login_handler.rb
90
- - test/coverage.rb
91
- - test/test_savon_service.rb
92
91
  - test/test_config.rb
93
- - test/test_results_extractor.rb
94
92
  - test/test_config.yml
93
+ - test/test_credential_handler.rb
95
94
  - test/test_parameters_validator.rb
96
- - COPYING
97
- - README
98
- - ChangeLog
95
+ - test/test_results_extractor.rb
96
+ - test/test_savon_service.rb
97
+ - test/test_utils.rb
99
98
  homepage: http://code.google.com/p/google-api-ads-ruby/
100
99
  licenses:
101
100
  - Apache-2.0
@@ -116,15 +115,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
115
  version: 1.3.6
117
116
  requirements: []
118
117
  rubyforge_project: google-ads-common
119
- rubygems_version: 2.0.3
118
+ rubygems_version: 2.2.2
120
119
  signing_key:
121
120
  specification_version: 4
122
121
  summary: Common code for Google Ads APIs
123
122
  test_files:
124
- - test/test_credential_handler.rb
125
123
  - test/test_utils.rb
124
+ - test/test_credential_handler.rb
125
+ - test/test_parameters_validator.rb
126
126
  - test/test_client_login_handler.rb
127
+ - test/test_results_extractor.rb
127
128
  - test/test_savon_service.rb
128
129
  - test/test_config.rb
129
- - test/test_results_extractor.rb
130
- - test/test_parameters_validator.rb
data/README DELETED
@@ -1,77 +0,0 @@
1
- = Google AdsCommon Library
2
-
3
- This gem is a dependency for the new generation of Ruby Google Ads client
4
- libraries. It contains common code shared among all of these libraries, such as
5
- authentication, SOAP stub generation, error handling, logging, etc.
6
-
7
-
8
- = Docs for Users
9
-
10
- == 1 - Installation:
11
-
12
- google-ads-common is a Ruby gem. See http://docs.rubygems.org/read/book/1
13
-
14
- Install it using the gem install command.
15
- $ gem install google-ads-common
16
-
17
- The following gem libraries are required:
18
- - savon
19
- - httpi
20
- - signet
21
-
22
-
23
- = Docs for Developers
24
-
25
- == 1 - Directory Structure
26
-
27
- - +lib/ads_common/+: Contains the bulk of the library.
28
- - +auth/+: Contains classes that can handle different authentication methods.
29
- Currently only supports ClientLogin.
30
- - +build/+: Contains classes that handle code generation, packaging and other
31
- build-time tasks for client libraries (not for google-ads-common).
32
- - +savon_headers/+: Contains classes that handle header injection into savon
33
- requests.
34
- - +test/+: Contains the unit tests for the library.
35
-
36
-
37
- == 2 - Commands
38
-
39
- $ gem build google-ads-common.gemspec
40
- to build the gem
41
-
42
- $ rake test
43
- to run unit tests on the library
44
-
45
-
46
- == 3 - Resources
47
-
48
- Ruby client libraries code page:
49
-
50
- http://code.google.com/p/google-api-ads-ruby/
51
-
52
- Google Ads Developers Plus page:
53
-
54
- https://plus.google.com/+GoogleAdsDevelopers
55
-
56
-
57
- = Copyright/License Info
58
-
59
- Copyright 2010-2013, Google Inc. All Rights Reserved.
60
-
61
- Licensed under the Apache License, Version 2.0 (the "License");
62
- you may not use this file except in compliance with the License.
63
- You may obtain a copy of the License at
64
-
65
- http://www.apache.org/licenses/LICENSE-2.0
66
-
67
- Unless required by applicable law or agreed to in writing, software
68
- distributed under the License is distributed on an "AS IS" BASIS,
69
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
70
- See the License for the specific language governing permissions and
71
- limitations under the License.
72
-
73
-
74
- == Authors
75
-
76
- Sérgio Gomes (api.sgomes@gmail.com)
77
- Danial Klimkin (api.dklimkin@gmail.com)
@@ -1,36 +0,0 @@
1
- include "devtools/blueprint/ncl/blueprint_file.ncl";
2
-
3
- blueprint_file = ::blueprint::BlueprintFile(
4
- buildable_units = [
5
- ::blueprint::BuildableUnit(
6
- build_patterns = [
7
- "//third_party/ruby/ads_api/ads_common/...",
8
- ],
9
- test_patterns = [
10
- "//third_party/ruby/ads_api/ads_common:rake-test",
11
- ],
12
- build_flags = ["--cpu=k8",
13
- "--java_cpu=k8"],
14
- test_flags = [],
15
- name = "ads_devrel.ruby.ads_api_clients",
16
- coverage_instrumentation_filters = [
17
- "third_party/ruby/ads_api/ads_common/",
18
- "-third_party/ruby/ads_api/ads_common/test",
19
- "-test_.*$",
20
- ],
21
- continuous_build_email = ::blueprint::ContinuousBuildEmailInfo(
22
- build_cop_email_addrs = ["ads-client-libs+tap-ruby@google.com"],
23
- summary_email_addrs = []),
24
- enable_release = false,
25
- enable_continuous_build = true,
26
- tap_settings = tap::TapBuildableUnitSettings()
27
- )
28
- ],
29
- owned_code_depotpaths = [
30
- "//depot/google3/third_party/ruby/ads_api/ads_common/...",
31
- ],
32
- mpm_packages = [
33
- ],
34
- project_name = "ads_devrel.ruby.ads_api_clients",
35
- mdb_groups = ["ads-api-devrel"]
36
- );