google-api-client 0.9.2 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (182) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/CHANGELOG.md +9 -0
  4. data/Gemfile +1 -0
  5. data/README.md +2 -2
  6. data/api_names.yaml +19 -0
  7. data/api_names_out.yaml +843 -269
  8. data/bin/generate-api +18 -4
  9. data/generated/google/apis/adexchangebuyer_v1_4.rb +1 -1
  10. data/generated/google/apis/adexchangebuyer_v1_4/classes.rb +249 -9
  11. data/generated/google/apis/adexchangebuyer_v1_4/representations.rb +208 -1
  12. data/generated/google/apis/adexchangebuyer_v1_4/service.rb +68 -0
  13. data/generated/google/apis/adexchangeseller_v2_0/representations.rb +38 -0
  14. data/generated/google/apis/admin_datatransfer_v1.rb +2 -2
  15. data/generated/google/apis/admin_datatransfer_v1/representations.rb +12 -0
  16. data/generated/google/apis/admin_datatransfer_v1/service.rb +1 -1
  17. data/generated/google/apis/admin_directory_v1/representations.rb +118 -0
  18. data/generated/google/apis/admin_reports_v1/representations.rb +26 -0
  19. data/generated/google/apis/adsense_v1_4.rb +1 -1
  20. data/generated/google/apis/adsense_v1_4/classes.rb +0 -7
  21. data/generated/google/apis/adsense_v1_4/representations.rb +62 -1
  22. data/generated/google/apis/adsensehost_v4_1.rb +1 -1
  23. data/generated/google/apis/adsensehost_v4_1/representations.rb +40 -0
  24. data/generated/google/apis/analytics_v3.rb +1 -1
  25. data/generated/google/apis/analytics_v3/representations.rb +188 -0
  26. data/generated/google/apis/analytics_v3/service.rb +3 -3
  27. data/generated/google/apis/androidenterprise_v1.rb +1 -1
  28. data/generated/google/apis/androidenterprise_v1/representations.rb +76 -0
  29. data/generated/google/apis/androidenterprise_v1/service.rb +6 -2
  30. data/generated/google/apis/androidpublisher_v2.rb +1 -1
  31. data/generated/google/apis/androidpublisher_v2/representations.rb +92 -0
  32. data/generated/google/apis/appengine_v1beta5.rb +1 -1
  33. data/generated/google/apis/appengine_v1beta5/classes.rb +22 -1
  34. data/generated/google/apis/appengine_v1beta5/representations.rb +69 -0
  35. data/generated/google/apis/appengine_v1beta5/service.rb +43 -0
  36. data/generated/google/apis/appsactivity_v1/representations.rb +22 -0
  37. data/generated/google/apis/appstate_v1.rb +1 -1
  38. data/generated/google/apis/appstate_v1/representations.rb +8 -0
  39. data/generated/google/apis/autoscaler_v1beta2/representations.rb +32 -0
  40. data/generated/google/apis/bigquery_v2.rb +1 -1
  41. data/generated/google/apis/bigquery_v2/classes.rb +31 -0
  42. data/generated/google/apis/bigquery_v2/representations.rb +98 -0
  43. data/generated/google/apis/blogger_v3/representations.rb +70 -0
  44. data/generated/google/apis/books_v1/representations.rb +196 -0
  45. data/generated/google/apis/calendar_v3.rb +1 -1
  46. data/generated/google/apis/calendar_v3/representations.rb +64 -0
  47. data/generated/google/apis/civicinfo_v2/representations.rb +40 -0
  48. data/generated/google/apis/classroom_v1/representations.rb +28 -0
  49. data/generated/google/apis/cloudbilling_v1/representations.rb +8 -0
  50. data/generated/google/apis/cloudbuild_v1.rb +1 -1
  51. data/generated/google/apis/cloudbuild_v1/classes.rb +1 -1
  52. data/generated/google/apis/cloudbuild_v1/representations.rb +24 -0
  53. data/generated/google/apis/cloudbuild_v1/service.rb +2 -2
  54. data/generated/google/apis/clouddebugger_v2/representations.rb +54 -0
  55. data/generated/google/apis/cloudlatencytest_v2/representations.rb +14 -0
  56. data/generated/google/apis/cloudmonitoring_v2beta2.rb +1 -1
  57. data/generated/google/apis/cloudmonitoring_v2beta2/representations.rb +42 -0
  58. data/generated/google/apis/cloudresourcemanager_v1beta1.rb +1 -1
  59. data/generated/google/apis/cloudresourcemanager_v1beta1/classes.rb +15 -2
  60. data/generated/google/apis/cloudresourcemanager_v1beta1/representations.rb +38 -0
  61. data/generated/google/apis/cloudresourcemanager_v1beta1/service.rb +4 -1
  62. data/generated/google/apis/cloudtrace_v1/representations.rb +10 -0
  63. data/generated/google/apis/clouduseraccounts_beta/representations.rb +38 -0
  64. data/generated/google/apis/compute_beta.rb +1 -1
  65. data/generated/google/apis/compute_beta/classes.rb +512 -0
  66. data/generated/google/apis/compute_beta/representations.rb +599 -0
  67. data/generated/google/apis/compute_beta/service.rb +415 -0
  68. data/generated/google/apis/compute_v1.rb +1 -1
  69. data/generated/google/apis/compute_v1/representations.rb +386 -0
  70. data/generated/google/apis/container_v1/representations.rb +20 -0
  71. data/generated/google/apis/content_v2/representations.rb +296 -0
  72. data/generated/google/apis/coordinate_v1/representations.rb +36 -0
  73. data/generated/google/apis/customsearch_v1/representations.rb +26 -0
  74. data/generated/google/apis/dataproc_v1.rb +1 -1
  75. data/generated/google/apis/dataproc_v1/classes.rb +1415 -0
  76. data/generated/google/apis/dataproc_v1/representations.rb +569 -0
  77. data/generated/google/apis/dataproc_v1/service.rb +581 -4
  78. data/generated/google/apis/datastore_v1beta2/representations.rb +68 -0
  79. data/generated/google/apis/deploymentmanager_v2/representations.rb +58 -0
  80. data/generated/google/apis/dfareporting_v2_3/representations.rb +386 -0
  81. data/generated/google/apis/discovery_v1/representations.rb +40 -0
  82. data/generated/google/apis/dns_v1.rb +1 -1
  83. data/generated/google/apis/dns_v1/classes.rb +2 -2
  84. data/generated/google/apis/dns_v1/representations.rb +16 -0
  85. data/generated/google/apis/doubleclickbidmanager_v1/representations.rb +42 -0
  86. data/generated/google/apis/doubleclicksearch_v2.rb +1 -1
  87. data/generated/google/apis/doubleclicksearch_v2/representations.rb +34 -0
  88. data/generated/google/apis/drive_v2.rb +1 -1
  89. data/generated/google/apis/drive_v2/classes.rb +7 -0
  90. data/generated/google/apis/drive_v2/representations.rb +83 -0
  91. data/generated/google/apis/drive_v3.rb +1 -1
  92. data/generated/google/apis/drive_v3/classes.rb +7 -0
  93. data/generated/google/apis/drive_v3/representations.rb +51 -0
  94. data/generated/google/apis/fitness_v1/representations.rb +40 -0
  95. data/generated/google/apis/fusiontables_v2.rb +1 -1
  96. data/generated/google/apis/fusiontables_v2/representations.rb +48 -0
  97. data/generated/google/apis/games_configuration_v1configuration.rb +1 -1
  98. data/generated/google/apis/games_configuration_v1configuration/representations.rb +22 -0
  99. data/generated/google/apis/games_management_v1management.rb +1 -1
  100. data/generated/google/apis/games_management_v1management/representations.rb +30 -0
  101. data/generated/google/apis/games_v1.rb +1 -1
  102. data/generated/google/apis/games_v1/representations.rb +198 -0
  103. data/generated/google/apis/gan_v1beta1/representations.rb +34 -0
  104. data/generated/google/apis/genomics_v1.rb +1 -1
  105. data/generated/google/apis/genomics_v1/classes.rb +2 -211
  106. data/generated/google/apis/genomics_v1/representations.rb +119 -84
  107. data/generated/google/apis/gmail_v1/representations.rb +44 -0
  108. data/generated/google/apis/groupsmigration_v1/representations.rb +2 -0
  109. data/generated/google/apis/groupssettings_v1/representations.rb +2 -0
  110. data/generated/google/apis/identitytoolkit_v3.rb +1 -1
  111. data/generated/google/apis/identitytoolkit_v3/classes.rb +105 -0
  112. data/generated/google/apis/identitytoolkit_v3/representations.rb +99 -0
  113. data/generated/google/apis/identitytoolkit_v3/service.rb +36 -1
  114. data/generated/google/apis/kgsearch_v1/representations.rb +2 -0
  115. data/generated/google/apis/licensing_v1/representations.rb +6 -0
  116. data/generated/google/apis/logging_v2beta1/representations.rb +40 -0
  117. data/generated/google/apis/manager_v1beta2/representations.rb +70 -0
  118. data/generated/google/apis/mirror_v1/representations.rb +40 -0
  119. data/generated/google/apis/oauth2_v2.rb +1 -1
  120. data/generated/google/apis/oauth2_v2/representations.rb +8 -0
  121. data/generated/google/apis/pagespeedonline_v2/representations.rb +28 -0
  122. data/generated/google/apis/partners_v2/representations.rb +52 -0
  123. data/generated/google/apis/people_v1.rb +11 -11
  124. data/generated/google/apis/people_v1/classes.rb +888 -961
  125. data/generated/google/apis/people_v1/representations.rb +295 -225
  126. data/generated/google/apis/people_v1/service.rb +61 -65
  127. data/generated/google/apis/plus_domains_v1.rb +1 -1
  128. data/generated/google/apis/plus_domains_v1/representations.rb +124 -0
  129. data/generated/google/apis/plus_v1.rb +1 -1
  130. data/generated/google/apis/plus_v1/representations.rb +102 -0
  131. data/generated/google/apis/prediction_v1_6/classes.rb +1 -1
  132. data/generated/google/apis/prediction_v1_6/representations.rb +42 -0
  133. data/generated/google/apis/proximitybeacon_v1beta1/representations.rb +38 -0
  134. data/generated/google/apis/pubsub_v1/representations.rb +42 -0
  135. data/generated/google/apis/qpx_express_v1/representations.rb +48 -0
  136. data/generated/google/apis/replicapool_v1beta2/representations.rb +28 -0
  137. data/generated/google/apis/replicapoolupdater_v1beta1/representations.rb +30 -0
  138. data/generated/google/apis/reseller_v1.rb +1 -1
  139. data/generated/google/apis/reseller_v1/classes.rb +6 -0
  140. data/generated/google/apis/reseller_v1/representations.rb +23 -0
  141. data/generated/google/apis/resourceviews_v1beta2/representations.rb +32 -0
  142. data/generated/google/apis/script_v1/representations.rb +12 -0
  143. data/generated/google/apis/site_verification_v1/representations.rb +12 -0
  144. data/generated/google/apis/sqladmin_v1beta4.rb +1 -1
  145. data/generated/google/apis/sqladmin_v1beta4/classes.rb +50 -21
  146. data/generated/google/apis/sqladmin_v1beta4/representations.rb +98 -0
  147. data/generated/google/apis/sqladmin_v1beta4/service.rb +3 -3
  148. data/generated/google/apis/storage_v1.rb +1 -1
  149. data/generated/google/apis/storage_v1/representations.rb +52 -0
  150. data/generated/google/apis/storagetransfer_v1/representations.rb +48 -0
  151. data/generated/google/apis/tagmanager_v1.rb +1 -1
  152. data/generated/google/apis/tagmanager_v1/classes.rb +110 -0
  153. data/generated/google/apis/tagmanager_v1/representations.rb +96 -0
  154. data/generated/google/apis/tagmanager_v1/service.rb +303 -1
  155. data/generated/google/apis/taskqueue_v1beta2/representations.rb +12 -0
  156. data/generated/google/apis/tasks_v1/representations.rb +10 -0
  157. data/generated/google/apis/translate_v2.rb +1 -1
  158. data/generated/google/apis/translate_v2/representations.rb +12 -0
  159. data/generated/google/apis/urlshortener_v1/representations.rb +10 -0
  160. data/generated/google/apis/vision_v1.rb +37 -0
  161. data/generated/google/apis/vision_v1/classes.rb +1259 -0
  162. data/generated/google/apis/vision_v1/representations.rb +418 -0
  163. data/generated/google/apis/vision_v1/service.rb +91 -0
  164. data/generated/google/apis/webmasters_v3/representations.rb +32 -0
  165. data/generated/google/apis/youtube_analytics_v1/representations.rb +30 -0
  166. data/generated/google/apis/youtube_v3/representations.rb +332 -0
  167. data/generated/google/apis/youtubereporting_v1/representations.rb +16 -0
  168. data/google-api-client.gemspec +0 -2
  169. data/lib/google/api_client/client_secrets.rb +3 -4
  170. data/lib/google/apis/core/api_command.rb +5 -4
  171. data/lib/google/apis/core/http_command.rb +20 -4
  172. data/lib/google/apis/core/json_representation.rb +20 -2
  173. data/lib/google/apis/generator/annotator.rb +1 -1
  174. data/lib/google/apis/generator/templates/_representation_stub.tmpl +2 -0
  175. data/lib/google/apis/version.rb +1 -1
  176. data/script/generate +2 -1
  177. data/spec/google/api_client/client_secrets_spec.rb +2 -2
  178. data/spec/google/apis/core/api_command_spec.rb +2 -2
  179. data/spec/google/apis/core/http_command_spec.rb +19 -0
  180. data/spec/google/apis/core/json_representation_spec.rb +14 -7
  181. data/spec/google/apis/generator/generator_spec.rb +52 -0
  182. metadata +6 -30
@@ -24,34 +24,50 @@ module Google
24
24
 
25
25
  class Media
26
26
  class Representation < Google::Apis::Core::JsonRepresentation; end
27
+
28
+ include Google::Apis::Core::JsonObjectSupport
27
29
  end
28
30
 
29
31
  class ListReportTypesResponse
30
32
  class Representation < Google::Apis::Core::JsonRepresentation; end
33
+
34
+ include Google::Apis::Core::JsonObjectSupport
31
35
  end
32
36
 
33
37
  class ReportType
34
38
  class Representation < Google::Apis::Core::JsonRepresentation; end
39
+
40
+ include Google::Apis::Core::JsonObjectSupport
35
41
  end
36
42
 
37
43
  class Job
38
44
  class Representation < Google::Apis::Core::JsonRepresentation; end
45
+
46
+ include Google::Apis::Core::JsonObjectSupport
39
47
  end
40
48
 
41
49
  class ListJobsResponse
42
50
  class Representation < Google::Apis::Core::JsonRepresentation; end
51
+
52
+ include Google::Apis::Core::JsonObjectSupport
43
53
  end
44
54
 
45
55
  class Empty
46
56
  class Representation < Google::Apis::Core::JsonRepresentation; end
57
+
58
+ include Google::Apis::Core::JsonObjectSupport
47
59
  end
48
60
 
49
61
  class ListReportsResponse
50
62
  class Representation < Google::Apis::Core::JsonRepresentation; end
63
+
64
+ include Google::Apis::Core::JsonObjectSupport
51
65
  end
52
66
 
53
67
  class Report
54
68
  class Representation < Google::Apis::Core::JsonRepresentation; end
69
+
70
+ include Google::Apis::Core::JsonObjectSupport
55
71
  end
56
72
 
57
73
  class Media
@@ -18,9 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.require_paths = ['lib', 'generated', 'third_party']
19
19
 
20
20
  spec.add_runtime_dependency 'representable', '~> 2.3.0'
21
- spec.add_runtime_dependency 'multi_json', '~> 1.11'
22
21
  spec.add_runtime_dependency 'retriable', '~> 2.0'
23
- spec.add_runtime_dependency 'activesupport', '>= 3.2'
24
22
  spec.add_runtime_dependency 'addressable', '~> 2.3'
25
23
  spec.add_runtime_dependency 'mime-types', '>= 1.6'
26
24
  spec.add_runtime_dependency 'hurley', '~> 0.1'
@@ -12,8 +12,7 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
-
16
- require 'compat/multi_json'
15
+ require 'json'
17
16
 
18
17
 
19
18
  module Google
@@ -71,7 +70,7 @@ module Google
71
70
  search_path = File.expand_path(File.join(search_path, '..'))
72
71
  end
73
72
  end
74
- data = File.open(filename, 'r') { |file| MultiJson.load(file.read) }
73
+ data = File.open(filename, 'r') { |file| JSON.load(file.read) }
75
74
  return self.new(data)
76
75
  end
77
76
 
@@ -119,7 +118,7 @@ module Google
119
118
  # @return [String]
120
119
  # JSON
121
120
  def to_json
122
- return MultiJson.dump(to_hash)
121
+ return Json.dump(to_hash)
123
122
  end
124
123
 
125
124
  def to_hash
@@ -12,12 +12,11 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- require 'active_support/inflector'
16
15
  require 'addressable/uri'
17
16
  require 'addressable/template'
18
17
  require 'google/apis/core/http_command'
19
18
  require 'google/apis/errors'
20
- require 'multi_json'
19
+ require 'json'
21
20
  require 'retriable'
22
21
 
23
22
  module Google
@@ -113,7 +112,7 @@ module Google
113
112
  # HTTP response body
114
113
  # @return [Hash]
115
114
  def parse_error(body)
116
- hash = MultiJson.load(body)
115
+ hash = JSON.load(body)
117
116
  hash['error']['errors'].first
118
117
  rescue
119
118
  nil
@@ -127,7 +126,9 @@ module Google
127
126
  # Updated header value
128
127
  def normalize_fields_param(fields)
129
128
  # TODO: Generate map of parameter names during code gen. Small possibility that camelization fails
130
- fields.gsub(/:/, '').gsub(/\w+/) { |str| ActiveSupport::Inflector.camelize(str, false) }
129
+ fields.gsub(/:/, '').gsub(/\w+/) do |str|
130
+ str.gsub(/(?:^|_)([a-z])/){ Regexp.last_match.begin(0) == 0 ? $1 : $1.upcase }
131
+ end
131
132
  end
132
133
  end
133
134
  end
@@ -145,6 +145,15 @@ module Google
145
145
  header.update(options.header) if options && options.header
146
146
  self.url = url.expand(params) if url.is_a?(Addressable::Template)
147
147
  url.query_values = query.merge(url.query_values || {})
148
+
149
+ if [:post, :put].include?(method) && body.nil?
150
+ @form_encoded = true
151
+ self.body = Addressable::URI.form_encode(url.query_values(Array))
152
+ self.header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'
153
+ self.url.query_values = {}
154
+ else
155
+ @form_encoded = false
156
+ end
148
157
  end
149
158
 
150
159
  # Release any resources used by this command
@@ -242,7 +251,7 @@ module Google
242
251
  # @raise [StandardError] if no block
243
252
  def error(err, rethrow: false, &block)
244
253
  logger.debug { sprintf('Error - %s', PP.pp(err, '')) }
245
- err = Google::Apis::TransmissionError.new(err) if err.is_a?(Hurley::ClientError)
254
+ err = Google::Apis::TransmissionError.new(err) if err.is_a?(Hurley::ClientError) || err.is_a?(SocketError)
246
255
  block.call(nil, err) if block_given?
247
256
  fail err if rethrow || block.nil?
248
257
  end
@@ -263,9 +272,11 @@ module Google
263
272
  response = client.send(method, url, body) do |req|
264
273
  # Temporary workaround for Hurley bug where the connection preference
265
274
  # is ignored and it uses nested anyway
266
- req.url.query_class = Hurley::Query::Flat
267
- query.each do | k, v|
268
- req.url.query[k] = normalize_query_value(v)
275
+ unless form_encoded?
276
+ req.url.query_class = Hurley::Query::Flat
277
+ query.each do | k, v|
278
+ req.url.query[k] = normalize_query_value(v)
279
+ end
269
280
  end
270
281
  # End workaround
271
282
  apply_request_options(req)
@@ -292,10 +303,15 @@ module Google
292
303
  end
293
304
  req.header.update(header)
294
305
  req.options.timeout = options.timeout_sec
306
+ req.options.open_timeout = options.open_timeout_sec
295
307
  end
296
308
 
297
309
  private
298
310
 
311
+ def form_encoded?
312
+ @form_encoded
313
+ end
314
+
299
315
  def normalize_query_value(v)
300
316
  case v
301
317
  when Array
@@ -38,8 +38,8 @@ module Google
38
38
  def getter_fn(name)
39
39
  ivar_name = "@#{name}".to_sym
40
40
  lambda do |_|
41
- if respond_to?(:[])
42
- self[name] || instance_variable_get(ivar_name)
41
+ if respond_to?(:fetch)
42
+ fetch(name, instance_variable_get(ivar_name))
43
43
  else
44
44
  instance_variable_get(ivar_name)
45
45
  end
@@ -122,6 +122,24 @@ module Google
122
122
  include Representable::JSON
123
123
  feature JsonRepresentationSupport
124
124
  end
125
+
126
+ module JsonObjectSupport
127
+ def self.included(base)
128
+ base.extend(ClassMethods)
129
+ end
130
+
131
+ module ClassMethods
132
+ def from_json(json)
133
+ representation = self.const_get(:Representation)
134
+ representation.new(self.new).from_json(json, unwrap: self)
135
+ end
136
+ end
137
+
138
+ def to_json
139
+ representation = self.class.const_get(:Representation)
140
+ representation.new(self).to_json(skip_undefined: true)
141
+ end
142
+ end
125
143
  end
126
144
  end
127
145
  end
@@ -15,7 +15,7 @@
15
15
  require 'logger'
16
16
  require 'erb'
17
17
  require 'yaml'
18
- require 'multi_json'
18
+ require 'json'
19
19
  require 'active_support/inflector'
20
20
  require 'google/apis/core/logging'
21
21
  require 'google/apis/generator/template'
@@ -7,6 +7,8 @@ class <%= cls.generated_class_name %>
7
7
  <%= indent(include('representation_stub', :cls => child_class), 2) -%>
8
8
  <% end -%>
9
9
  <% end -%>
10
+
11
+ include Google::Apis::Core::JsonObjectSupport
10
12
  end
11
13
  <% elsif cls.items && cls.items._ref.nil? -%>
12
14
  <%= include('representation_stub', :cls => cls.items, :api => api) -%>
@@ -15,7 +15,7 @@
15
15
  module Google
16
16
  module Apis
17
17
  # Client library version
18
- VERSION = '0.9.2'
18
+ VERSION = '0.9.3'
19
19
 
20
20
  # Current operating system
21
21
  # @private
@@ -69,7 +69,7 @@ APIS=(adexchangebuyer:v1.4 \
69
69
  pagespeedonline:v2 \
70
70
  partners:v2 \
71
71
  people:v1 \
72
- plus:v1 \
72
+ plus:v1 \
73
73
  plusDomains:v1 \
74
74
  prediction:v1.6 \
75
75
  proximitybeacon:v1beta1 \
@@ -89,6 +89,7 @@ APIS=(adexchangebuyer:v1.4 \
89
89
  tasks:v1 \
90
90
  translate:v2 \
91
91
  urlshortener:v1 \
92
+ vision:v1 \
92
93
  webmasters:v3 \
93
94
  youtube:v3 \
94
95
  youtubeAnalytics:v1 \
@@ -23,7 +23,7 @@ FIXTURES_PATH = File.expand_path('../../../fixtures', __FILE__)
23
23
  RSpec.describe Google::APIClient::ClientSecrets do
24
24
  describe '::new' do
25
25
  let(:filename) { File.join(FIXTURES_PATH, 'files', 'client_secrets.json') }
26
- let(:data) { File.open(filename, 'r') { |file| MultiJson.load(file.read) } }
26
+ let(:data) { File.open(filename, 'r') { |file| JSON.load(file.read) } }
27
27
 
28
28
  context 'without options' do
29
29
  subject { Google::APIClient::ClientSecrets.new(data) }
@@ -367,7 +367,7 @@ RSpec.describe Google::APIClient::ClientSecrets do
367
367
  context 'with invalid JSON file' do
368
368
  it 'should raise exception' do
369
369
  file = File.join(FIXTURES_PATH, 'files', 'invalid.json')
370
- expect { Google::APIClient::ClientSecrets.load(file) }.to raise_exception(MultiJson::ParseError)
370
+ expect { Google::APIClient::ClientSecrets.load(file) }.to raise_exception(JSON::ParserError)
371
371
  end
372
372
  end
373
373
 
@@ -103,7 +103,7 @@ RSpec.describe Google::Apis::Core::HttpCommand do
103
103
  context('with a field parameter') do
104
104
  let(:command) do
105
105
  command = Google::Apis::Core::ApiCommand.new(:get, 'https://www.googleapis.com/zoo/animals')
106
- command.query['fields'] = ':items(:id, :long_name)'
106
+ command.query['fields'] = ':items(:id, :long_name, :a_really_long_name), shouldBeLeftAlone '
107
107
  command
108
108
  end
109
109
 
@@ -115,7 +115,7 @@ RSpec.describe Google::Apis::Core::HttpCommand do
115
115
  it 'should normalize fields params' do
116
116
  command.execute(client)
117
117
  expect(a_request(:get, 'https://www.googleapis.com/zoo/animals')
118
- .with(query: { 'fields' => 'items(id, longName)' })) .to have_been_made
118
+ .with(query: { 'fields' => 'items(id, longName, aReallyLongName), shouldBeLeftAlone ' })) .to have_been_made
119
119
  end
120
120
  end
121
121
 
@@ -281,4 +281,23 @@ RSpec.describe Google::Apis::Core::HttpCommand do
281
281
  command.query['b'] = false
282
282
  command.execute(client)
283
283
  end
284
+
285
+ it 'should form encode parameters when method is POST and no body present' do
286
+ stub_request(:post, 'https://www.googleapis.com/zoo/animals')
287
+ .with(body: 'a=1&a=2&a=3&b=hello&c=&d=0')
288
+ .to_return(status: [200, ''])
289
+ command = Google::Apis::Core::HttpCommand.new(:post, 'https://www.googleapis.com/zoo/animals')
290
+ command.query['a'] = [1,2,3]
291
+ command.query['b'] = 'hello'
292
+ command.query['c'] = nil
293
+ command.query['d'] = 0
294
+ command.execute(client)
295
+ end
296
+
297
+ it 'should raise transmission error instead of socket error' do
298
+ stub_request(:get, 'https://www.googleapis.com/zoo/animals').to_raise(SocketError)
299
+ command = Google::Apis::Core::HttpCommand.new(:get, 'https://www.googleapis.com/zoo/animals')
300
+ command.options.retries = 0
301
+ expect { command.execute(client) }.to raise_error(Google::Apis::TransmissionError)
302
+ end
284
303
  end
@@ -28,7 +28,8 @@ RSpec.describe Google::Apis::Core::JsonRepresentation do
28
28
  attr_accessor :nil_value
29
29
  attr_accessor :numeric_value
30
30
  attr_accessor :string_value
31
- attr_accessor :boolean_value
31
+ attr_accessor :boolean_value_true
32
+ attr_accessor :boolean_value_false
32
33
  attr_accessor :date_value
33
34
  attr_accessor :bytes_value
34
35
  attr_accessor :items
@@ -44,7 +45,8 @@ RSpec.describe Google::Apis::Core::JsonRepresentation do
44
45
  property :nil_value, as: 'nilValue'
45
46
  property :numeric_value, as: 'numericValue'
46
47
  property :string_value, as: 'stringValue'
47
- property :boolean_value, as: 'booleanValue'
48
+ property :boolean_value_true, as: 'booleanValueTrue'
49
+ property :boolean_value_false, as: 'booleanValueFalse'
48
50
  property :date_value, as: 'dateValue', type: DateTime
49
51
  property :bytes_value, as: 'bytesValue', base64: true
50
52
  property :items
@@ -75,7 +77,8 @@ RSpec.describe Google::Apis::Core::JsonRepresentation do
75
77
  end
76
78
 
77
79
  it 'serializes boolean values' do
78
- expect(json).to be_json_eql(%(true)).at_path('booleanValue')
80
+ expect(json).to be_json_eql(%(true)).at_path('booleanValueTrue')
81
+ expect(json).to be_json_eql(%(false)).at_path('booleanValueFalse')
79
82
  end
80
83
 
81
84
  it 'serializes date values' do
@@ -107,7 +110,8 @@ RSpec.describe Google::Apis::Core::JsonRepresentation do
107
110
  model.numeric_value = 123
108
111
  model.string_value = 'test'
109
112
  model.date_value = DateTime.new(2015, 5, 1, 12)
110
- model.boolean_value = true
113
+ model.boolean_value_true = true
114
+ model.boolean_value_false = false
111
115
  model.bytes_value = 'Hello world'
112
116
  model.items = [1, 2, 3]
113
117
  model.child = child_class.new
@@ -127,7 +131,8 @@ RSpec.describe Google::Apis::Core::JsonRepresentation do
127
131
  string_value: 'test',
128
132
  numeric_value: 123,
129
133
  date_value: DateTime.new(2015, 5, 1, 12),
130
- boolean_value: true,
134
+ boolean_value_true: true,
135
+ boolean_value_false: false,
131
136
  bytes_value: 'Hello world',
132
137
  items: [1, 2, 3],
133
138
  child: {
@@ -146,7 +151,8 @@ RSpec.describe Google::Apis::Core::JsonRepresentation do
146
151
  json = <<EOF
147
152
  { "stringValue": "test",
148
153
  "nilValue": null,
149
- "booleanValue": true,
154
+ "booleanValueTrue": true,
155
+ "booleanValueFalse": false,
150
156
  "numericValue": 123,
151
157
  "dateValue": "2015-05-01T12:00:00+00:00",
152
158
  "bytesValue": "SGVsbG8gd29ybGQ=",
@@ -170,7 +176,8 @@ EOF
170
176
  end
171
177
 
172
178
  it 'deserializes boolean values' do
173
- expect(model.boolean_value).to be_truthy
179
+ expect(model.boolean_value_true).to be_truthy
180
+ expect(model.boolean_value_false).to be_falsey
174
181
  end
175
182
 
176
183
  it 'deserializes date values' do
@@ -120,6 +120,58 @@ RSpec.describe Google::Apis::Generator do
120
120
  it 'should define subresource methods' do
121
121
  expect(service.method(:list_thing_subthings)).to_not be_nil
122
122
  end
123
+
124
+ context 'With the from_json method' do
125
+ let(:json) do
126
+ <<EOF
127
+ {
128
+ "name" : "A thing",
129
+ "properties": {
130
+ "prop_a" : "value_a"
131
+ },
132
+ "photo": {
133
+ "filename": "image.jpg"
134
+ },
135
+ "hat": {
136
+ "type": "topHat",
137
+ "height": 100
138
+ }
139
+ }
140
+ EOF
141
+ end
142
+
143
+ let(:thing) { Google::Apis::TestV1::Thing.from_json(json) }
144
+
145
+ it 'should return a thing' do
146
+ expect(thing).to be_instance_of(Google::Apis::TestV1::Thing)
147
+ end
148
+
149
+ it 'should parse properties' do
150
+ expect(thing.name).to eq 'A thing'
151
+ end
152
+
153
+ it 'should parse subtypes' do
154
+ expect(thing.photo.filename).to eq "image.jpg"
155
+ end
156
+ end
157
+
158
+ context 'With the to_json method' do
159
+ let(:thing) do
160
+ Google::Apis::TestV1::Thing.new(
161
+ name: "A thing",
162
+ properties: {
163
+ prop_a: "value_a"
164
+ },
165
+ photo: {
166
+ filename: "image.jpg"
167
+ },
168
+ hat: {
169
+ type: "topHat",
170
+ height: 100
171
+ }
172
+ )
173
+ end
174
+ end
123
175
  end
124
176
 
125
177
  context 'with the get_thing method' do