google-ads-common 0.9.5 → 0.9.6

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