google-api-client 0.9.2 → 0.9.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.
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