mux_ruby 1.9.0 → 2.0.0.pre.rc.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (268) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -1
  3. data/Gemfile.lock +26 -37
  4. data/README.md +36 -13
  5. data/docs/AbridgedVideoView.md +33 -13
  6. data/docs/Asset.md +57 -26
  7. data/docs/AssetErrors.md +15 -4
  8. data/docs/AssetMaster.md +15 -4
  9. data/docs/AssetNonStandardInputReasons.md +29 -11
  10. data/docs/AssetRecordingTimes.md +15 -4
  11. data/docs/AssetResponse.md +13 -3
  12. data/docs/AssetStaticRenditions.md +15 -4
  13. data/docs/AssetStaticRenditionsFiles.md +23 -8
  14. data/docs/AssetsApi.md +387 -160
  15. data/docs/BreakdownValue.md +21 -7
  16. data/docs/CreateAssetRequest.md +27 -10
  17. data/docs/CreateLiveStreamRequest.md +25 -9
  18. data/docs/CreatePlaybackIDRequest.md +13 -3
  19. data/docs/CreatePlaybackIDResponse.md +13 -3
  20. data/docs/CreateSimulcastTargetRequest.md +17 -5
  21. data/docs/CreateTrackRequest.md +25 -9
  22. data/docs/CreateTrackResponse.md +13 -3
  23. data/docs/CreateUploadRequest.md +19 -6
  24. data/docs/DeliveryReport.md +27 -9
  25. data/docs/DeliveryUsageApi.md +40 -22
  26. data/docs/DimensionValue.md +15 -4
  27. data/docs/DimensionsApi.md +72 -34
  28. data/docs/DirectUploadsApi.md +131 -56
  29. data/docs/DisableLiveStreamResponse.md +13 -3
  30. data/docs/EnableLiveStreamResponse.md +13 -3
  31. data/docs/Error.md +27 -10
  32. data/docs/ErrorsApi.md +37 -19
  33. data/docs/ExportsApi.md +32 -13
  34. data/docs/FilterValue.md +15 -4
  35. data/docs/FiltersApi.md +71 -33
  36. data/docs/GetAssetInputInfoResponse.md +13 -3
  37. data/docs/GetAssetOrLiveStreamIdResponse.md +13 -3
  38. data/docs/GetAssetOrLiveStreamIdResponseData.md +17 -5
  39. data/docs/GetAssetOrLiveStreamIdResponseDataObject.md +15 -4
  40. data/docs/GetAssetPlaybackIDResponse.md +13 -3
  41. data/docs/GetMetricTimeseriesDataResponse.md +17 -5
  42. data/docs/GetOverallValuesResponse.md +17 -5
  43. data/docs/GetRealTimeBreakdownResponse.md +17 -5
  44. data/docs/GetRealTimeHistogramTimeseriesResponse.md +19 -6
  45. data/docs/GetRealTimeHistogramTimeseriesResponseMeta.md +13 -3
  46. data/docs/GetRealTimeTimeseriesResponse.md +17 -5
  47. data/docs/Incident.md +53 -23
  48. data/docs/IncidentBreakdown.md +17 -5
  49. data/docs/IncidentNotification.md +17 -5
  50. data/docs/IncidentNotificationRule.md +21 -7
  51. data/docs/IncidentResponse.md +15 -4
  52. data/docs/IncidentsApi.md +115 -59
  53. data/docs/InputFile.md +15 -4
  54. data/docs/InputInfo.md +15 -4
  55. data/docs/InputSettings.md +31 -12
  56. data/docs/InputSettingsOverlaySettings.md +25 -9
  57. data/docs/InputTrack.md +29 -11
  58. data/docs/Insight.md +23 -8
  59. data/docs/ListAllMetricValuesResponse.md +17 -5
  60. data/docs/ListAssetsResponse.md +13 -3
  61. data/docs/ListBreakdownValuesResponse.md +17 -5
  62. data/docs/ListDeliveryUsageResponse.md +19 -6
  63. data/docs/ListDimensionValuesResponse.md +17 -5
  64. data/docs/ListDimensionsResponse.md +17 -5
  65. data/docs/ListErrorsResponse.md +17 -5
  66. data/docs/ListExportsResponse.md +17 -5
  67. data/docs/ListFilterValuesResponse.md +17 -5
  68. data/docs/ListFiltersResponse.md +17 -5
  69. data/docs/ListFiltersResponseData.md +15 -4
  70. data/docs/ListIncidentsResponse.md +17 -5
  71. data/docs/ListInsightsResponse.md +17 -5
  72. data/docs/ListLiveStreamsResponse.md +13 -3
  73. data/docs/ListRealTimeDimensionsResponse.md +17 -5
  74. data/docs/ListRealTimeDimensionsResponseData.md +15 -4
  75. data/docs/ListRealTimeMetricsResponse.md +17 -5
  76. data/docs/ListRelatedIncidentsResponse.md +17 -5
  77. data/docs/ListSigningKeysResponse.md +13 -3
  78. data/docs/ListUploadsResponse.md +13 -3
  79. data/docs/ListVideoViewsResponse.md +17 -5
  80. data/docs/LiveStream.md +37 -15
  81. data/docs/LiveStreamResponse.md +13 -3
  82. data/docs/LiveStreamsApi.md +418 -170
  83. data/docs/Metric.md +21 -7
  84. data/docs/MetricsApi.md +206 -112
  85. data/docs/NotificationRule.md +17 -5
  86. data/docs/OverallValues.md +19 -6
  87. data/docs/PlaybackID.md +15 -4
  88. data/docs/PlaybackIDApi.md +34 -16
  89. data/docs/PlaybackPolicy.md +10 -2
  90. data/docs/RealTimeApi.md +172 -76
  91. data/docs/RealTimeBreakdownValue.md +21 -7
  92. data/docs/RealTimeHistogramTimeseriesBucket.md +15 -4
  93. data/docs/RealTimeHistogramTimeseriesBucketValues.md +15 -4
  94. data/docs/RealTimeHistogramTimeseriesDatapoint.md +25 -9
  95. data/docs/RealTimeTimeseriesDatapoint.md +17 -5
  96. data/docs/Score.md +23 -8
  97. data/docs/SignalLiveStreamCompleteResponse.md +13 -3
  98. data/docs/SigningKey.md +17 -5
  99. data/docs/SigningKeyResponse.md +13 -3
  100. data/docs/SimulcastTarget.md +21 -7
  101. data/docs/SimulcastTargetResponse.md +13 -3
  102. data/docs/Track.md +37 -15
  103. data/docs/URLSigningKeysApi.md +127 -51
  104. data/docs/UpdateAssetMP4SupportRequest.md +13 -3
  105. data/docs/UpdateAssetMasterAccessRequest.md +13 -3
  106. data/docs/Upload.md +29 -11
  107. data/docs/UploadError.md +15 -4
  108. data/docs/UploadResponse.md +13 -3
  109. data/docs/VideoView.md +235 -114
  110. data/docs/VideoViewEvent.md +19 -6
  111. data/docs/VideoViewResponse.md +15 -4
  112. data/docs/VideoViewsApi.md +76 -39
  113. data/gen/.gitignore +7 -0
  114. data/gen/Makefile +31 -0
  115. data/gen/generator-config.json +11 -0
  116. data/gen/openapitools.json +7 -0
  117. data/gen/package.json +17 -0
  118. data/gen/templates/Gemfile.mustache +11 -0
  119. data/gen/templates/README.mustache +158 -0
  120. data/gen/templates/Rakefile.mustache +10 -0
  121. data/gen/templates/api.mustache +206 -0
  122. data/gen/templates/api_client.mustache +264 -0
  123. data/gen/templates/api_client_faraday_partial.mustache +138 -0
  124. data/gen/templates/api_client_spec.mustache +220 -0
  125. data/gen/templates/api_client_typhoeus_partial.mustache +183 -0
  126. data/gen/templates/api_doc.mustache +118 -0
  127. data/gen/templates/api_error.mustache +67 -0
  128. data/gen/templates/api_info.mustache +12 -0
  129. data/gen/templates/api_test.mustache +47 -0
  130. data/gen/templates/base_object.mustache +120 -0
  131. data/gen/templates/configuration.mustache +349 -0
  132. data/gen/templates/configuration_spec.mustache +34 -0
  133. data/gen/templates/configuration_tls_faraday_partial.mustache +29 -0
  134. data/gen/templates/configuration_tls_typhoeus_partial.mustache +34 -0
  135. data/gen/templates/gem.mustache +40 -0
  136. data/gen/templates/gemspec.mustache +35 -0
  137. data/gen/templates/gitignore.mustache +39 -0
  138. data/gen/templates/model.mustache +26 -0
  139. data/gen/templates/model_doc.mustache +12 -0
  140. data/gen/templates/model_test.mustache +77 -0
  141. data/gen/templates/partial_model_enum_class.mustache +20 -0
  142. data/gen/templates/partial_model_generic.mustache +371 -0
  143. data/gen/templates/partial_model_generic_doc.mustache +28 -0
  144. data/gen/templates/partial_oneof_module.mustache +137 -0
  145. data/gen/templates/partial_oneof_module_doc.mustache +92 -0
  146. data/gen/templates/rspec.mustache +2 -0
  147. data/gen/templates/rubocop.mustache +148 -0
  148. data/gen/templates/spec_helper.mustache +103 -0
  149. data/gen/templates/version.mustache +7 -0
  150. data/gen/yarn.lock +1878 -0
  151. data/lib/mux_ruby.rb +9 -2
  152. data/lib/mux_ruby/api/assets_api.rb +279 -150
  153. data/lib/mux_ruby/api/delivery_usage_api.rb +28 -12
  154. data/lib/mux_ruby/api/dimensions_api.rb +55 -29
  155. data/lib/mux_ruby/api/direct_uploads_api.rb +90 -44
  156. data/lib/mux_ruby/api/errors_api.rb +32 -16
  157. data/lib/mux_ruby/api/exports_api.rb +28 -12
  158. data/lib/mux_ruby/api/filters_api.rb +53 -27
  159. data/lib/mux_ruby/api/incidents_api.rb +88 -46
  160. data/lib/mux_ruby/api/live_streams_api.rb +299 -157
  161. data/lib/mux_ruby/api/metrics_api.rb +175 -104
  162. data/lib/mux_ruby/api/playback_id_api.rb +31 -15
  163. data/lib/mux_ruby/api/real_time_api.rb +139 -77
  164. data/lib/mux_ruby/api/url_signing_keys_api.rb +89 -42
  165. data/lib/mux_ruby/api/video_views_api.rb +56 -29
  166. data/lib/mux_ruby/api_client.rb +94 -79
  167. data/lib/mux_ruby/api_error.rb +35 -7
  168. data/lib/mux_ruby/configuration.rb +50 -14
  169. data/lib/mux_ruby/models/abridged_video_view.rb +58 -24
  170. data/lib/mux_ruby/models/asset.rb +88 -61
  171. data/lib/mux_ruby/models/asset_errors.rb +50 -15
  172. data/lib/mux_ruby/models/asset_master.rb +52 -17
  173. data/lib/mux_ruby/models/asset_non_standard_input_reasons.rb +70 -35
  174. data/lib/mux_ruby/models/asset_recording_times.rb +50 -16
  175. data/lib/mux_ruby/models/asset_response.rb +48 -14
  176. data/lib/mux_ruby/models/asset_static_renditions.rb +53 -17
  177. data/lib/mux_ruby/models/asset_static_renditions_files.rb +58 -23
  178. data/lib/mux_ruby/models/breakdown_value.rb +52 -18
  179. data/lib/mux_ruby/models/create_asset_request.rb +64 -30
  180. data/lib/mux_ruby/models/create_live_stream_request.rb +57 -22
  181. data/lib/mux_ruby/models/create_playback_id_request.rb +48 -14
  182. data/lib/mux_ruby/models/create_playback_id_response.rb +48 -14
  183. data/lib/mux_ruby/models/create_simulcast_target_request.rb +50 -16
  184. data/lib/mux_ruby/models/create_track_request.rb +59 -25
  185. data/lib/mux_ruby/models/create_track_response.rb +48 -14
  186. data/lib/mux_ruby/models/create_upload_request.rb +52 -18
  187. data/lib/mux_ruby/models/delivery_report.rb +106 -21
  188. data/lib/mux_ruby/models/dimension_value.rb +49 -15
  189. data/lib/mux_ruby/models/disable_live_stream_response.rb +48 -14
  190. data/lib/mux_ruby/models/enable_live_stream_response.rb +48 -14
  191. data/lib/mux_ruby/models/error.rb +63 -21
  192. data/lib/mux_ruby/models/filter_value.rb +49 -15
  193. data/lib/mux_ruby/models/get_asset_input_info_response.rb +48 -14
  194. data/lib/mux_ruby/models/get_asset_or_live_stream_id_response.rb +48 -14
  195. data/lib/mux_ruby/models/get_asset_or_live_stream_id_response_data.rb +50 -16
  196. data/lib/mux_ruby/models/get_asset_or_live_stream_id_response_data_object.rb +51 -17
  197. data/lib/mux_ruby/models/get_asset_playback_id_response.rb +48 -14
  198. data/lib/mux_ruby/models/get_metric_timeseries_data_response.rb +50 -16
  199. data/lib/mux_ruby/models/get_overall_values_response.rb +50 -16
  200. data/lib/mux_ruby/models/get_real_time_breakdown_response.rb +50 -16
  201. data/lib/mux_ruby/models/get_real_time_histogram_timeseries_response.rb +51 -17
  202. data/lib/mux_ruby/models/get_real_time_histogram_timeseries_response_meta.rb +48 -14
  203. data/lib/mux_ruby/models/get_real_time_timeseries_response.rb +50 -16
  204. data/lib/mux_ruby/models/incident.rb +68 -34
  205. data/lib/mux_ruby/models/incident_breakdown.rb +50 -16
  206. data/lib/mux_ruby/models/incident_notification.rb +50 -16
  207. data/lib/mux_ruby/models/incident_notification_rule.rb +52 -18
  208. data/lib/mux_ruby/models/incident_response.rb +49 -15
  209. data/lib/mux_ruby/models/input_file.rb +49 -15
  210. data/lib/mux_ruby/models/input_info.rb +49 -15
  211. data/lib/mux_ruby/models/input_settings.rb +64 -30
  212. data/lib/mux_ruby/models/input_settings_overlay_settings.rb +58 -24
  213. data/lib/mux_ruby/models/input_track.rb +56 -22
  214. data/lib/mux_ruby/models/insight.rb +53 -19
  215. data/lib/mux_ruby/models/list_all_metric_values_response.rb +50 -16
  216. data/lib/mux_ruby/models/list_assets_response.rb +48 -14
  217. data/lib/mux_ruby/models/list_breakdown_values_response.rb +50 -16
  218. data/lib/mux_ruby/models/list_delivery_usage_response.rb +51 -17
  219. data/lib/mux_ruby/models/list_dimension_values_response.rb +50 -16
  220. data/lib/mux_ruby/models/list_dimensions_response.rb +50 -16
  221. data/lib/mux_ruby/models/list_errors_response.rb +50 -16
  222. data/lib/mux_ruby/models/list_exports_response.rb +50 -16
  223. data/lib/mux_ruby/models/list_filter_values_response.rb +50 -16
  224. data/lib/mux_ruby/models/list_filters_response.rb +50 -16
  225. data/lib/mux_ruby/models/list_filters_response_data.rb +49 -15
  226. data/lib/mux_ruby/models/list_incidents_response.rb +50 -16
  227. data/lib/mux_ruby/models/list_insights_response.rb +50 -16
  228. data/lib/mux_ruby/models/list_live_streams_response.rb +48 -14
  229. data/lib/mux_ruby/models/list_real_time_dimensions_response.rb +50 -16
  230. data/lib/mux_ruby/models/list_real_time_dimensions_response_data.rb +49 -15
  231. data/lib/mux_ruby/models/list_real_time_metrics_response.rb +50 -16
  232. data/lib/mux_ruby/models/list_related_incidents_response.rb +50 -16
  233. data/lib/mux_ruby/models/list_signing_keys_response.rb +48 -14
  234. data/lib/mux_ruby/models/list_uploads_response.rb +48 -14
  235. data/lib/mux_ruby/models/list_video_views_response.rb +50 -16
  236. data/lib/mux_ruby/models/live_stream.rb +110 -28
  237. data/lib/mux_ruby/models/live_stream_response.rb +48 -14
  238. data/lib/mux_ruby/models/metric.rb +52 -18
  239. data/lib/mux_ruby/models/notification_rule.rb +50 -16
  240. data/lib/mux_ruby/models/overall_values.rb +51 -17
  241. data/lib/mux_ruby/models/playback_id.rb +49 -15
  242. data/lib/mux_ruby/models/playback_policy.rb +12 -6
  243. data/lib/mux_ruby/models/real_time_breakdown_value.rb +52 -18
  244. data/lib/mux_ruby/models/real_time_histogram_timeseries_bucket.rb +50 -16
  245. data/lib/mux_ruby/models/real_time_histogram_timeseries_bucket_values.rb +49 -15
  246. data/lib/mux_ruby/models/real_time_histogram_timeseries_datapoint.rb +54 -20
  247. data/lib/mux_ruby/models/real_time_timeseries_datapoint.rb +50 -16
  248. data/lib/mux_ruby/models/score.rb +53 -19
  249. data/lib/mux_ruby/models/signal_live_stream_complete_response.rb +48 -14
  250. data/lib/mux_ruby/models/signing_key.rb +53 -16
  251. data/lib/mux_ruby/models/signing_key_response.rb +48 -14
  252. data/lib/mux_ruby/models/simulcast_target.rb +54 -20
  253. data/lib/mux_ruby/models/simulcast_target_response.rb +48 -14
  254. data/lib/mux_ruby/models/track.rb +67 -33
  255. data/lib/mux_ruby/models/update_asset_master_access_request.rb +50 -16
  256. data/lib/mux_ruby/models/update_asset_mp4_support_request.rb +50 -16
  257. data/lib/mux_ruby/models/upload.rb +61 -25
  258. data/lib/mux_ruby/models/upload_error.rb +51 -15
  259. data/lib/mux_ruby/models/upload_response.rb +48 -14
  260. data/lib/mux_ruby/models/video_view.rb +166 -132
  261. data/lib/mux_ruby/models/video_view_event.rb +51 -17
  262. data/lib/mux_ruby/models/video_view_response.rb +49 -15
  263. data/lib/mux_ruby/version.rb +10 -3
  264. data/mux_ruby.gemspec +15 -17
  265. data/spec/api_client_spec.rb +10 -3
  266. data/spec/configuration_spec.rb +9 -2
  267. data/spec/spec_helper.rb +9 -2
  268. metadata +139 -242
@@ -1,6 +1,13 @@
1
1
  =begin
2
- # Mux Ruby - Copyright 2019 Mux Inc.
3
- # NOTE: This file is auto generated. Do not edit this file manually.
2
+ #Mux API
3
+
4
+ #Mux is how developers build online video. This API encompasses both Mux Video and Mux Data functionality to help you build your video-related projects better and faster than ever before.
5
+
6
+ The version of the OpenAPI document: v1
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 5.0.1
10
+
4
11
  =end
5
12
 
6
13
  module MuxRuby
@@ -27,21 +34,42 @@ module MuxRuby
27
34
  super arg
28
35
  end
29
36
  end
37
+
38
+ # Override to_s to display a friendly error message
39
+ def to_s
40
+ message
41
+ end
42
+
43
+ def message
44
+ if @message.nil?
45
+ msg = "Error message: the server returns an error"
46
+ else
47
+ msg = @message
48
+ end
49
+
50
+ msg += "\nHTTP status code: #{code}" if code
51
+ msg += "\nResponse headers: #{response_headers}" if response_headers
52
+ msg += "\nResponse body: #{response_body}" if response_body
53
+
54
+ msg
55
+ end
30
56
  end
31
57
 
32
- class NotFoundError < ApiError
58
+ class ClientError < ApiError
33
59
  end
34
60
 
35
- class UnauthorizedError < ApiError
61
+ class NotFoundError < ClientError
36
62
  end
37
63
 
38
- class ForbiddenError < ApiError
64
+ class UnauthorizedError < ClientError
39
65
  end
40
66
 
41
- class ServiceError < ApiError
67
+ class ForbiddenError < ClientError
42
68
  end
43
69
 
44
- class TooManyRequestsError < ApiError
70
+ class TooManyRequestsError < ClientError
45
71
  end
46
72
 
73
+ class ServiceError < ApiError
74
+ end
47
75
  end
@@ -1,6 +1,13 @@
1
1
  =begin
2
- # Mux Ruby - Copyright 2019 Mux Inc.
3
- # NOTE: This file is auto generated. Do not edit this file manually.
2
+ #Mux API
3
+
4
+ #Mux is how developers build online video. This API encompasses both Mux Video and Mux Data functionality to help you build your video-related projects better and faster than ever before.
5
+
6
+ The version of the OpenAPI document: v1
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 5.0.1
10
+
4
11
  =end
5
12
 
6
13
  module MuxRuby
@@ -14,6 +21,18 @@ module MuxRuby
14
21
  # Defines url base path
15
22
  attr_accessor :base_path
16
23
 
24
+ # Define server configuration index
25
+ attr_accessor :server_index
26
+
27
+ # Define server operation configuration index
28
+ attr_accessor :server_operation_index
29
+
30
+ # Default server variables
31
+ attr_accessor :server_variables
32
+
33
+ # Default server operation variables
34
+ attr_accessor :server_operation_variables
35
+
17
36
  # Defines API keys used with API Key authentications.
18
37
  #
19
38
  # @return [Hash] key: parameter name, value: parameter value (API key)
@@ -122,13 +141,17 @@ module MuxRuby
122
141
  @scheme = 'https'
123
142
  @host = 'api.mux.com'
124
143
  @base_path = ''
144
+ @server_index = 0
145
+ @server_operation_index = {}
146
+ @server_variables = {}
147
+ @server_operation_variables = {}
125
148
  @api_key = {}
126
149
  @api_key_prefix = {}
127
150
  @timeout = 0
128
151
  @client_side_validation = true
129
152
  @verify_ssl = true
130
153
  @verify_ssl_host = true
131
- @params_encoding = nil
154
+ @params_encoding = :multi # original value: nil
132
155
  @cert_file = nil
133
156
  @key_file = nil
134
157
  @debugging = false
@@ -164,17 +187,23 @@ module MuxRuby
164
187
  @base_path = '' if @base_path == '/'
165
188
  end
166
189
 
167
- def base_url
168
- "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '')
190
+ # Returns base URL for specified operation based on server settings
191
+ def base_url(operation = nil)
192
+ index = server_operation_index.fetch(operation, server_index)
193
+ return "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') if index == nil
194
+
195
+ server_url(index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
169
196
  end
170
197
 
171
198
  # Gets API key (with prefix if set).
172
199
  # @param [String] param_name the parameter name of API key auth
173
- def api_key_with_prefix(param_name)
200
+ def api_key_with_prefix(param_name, param_alias = nil)
201
+ key = @api_key[param_name]
202
+ key = @api_key.fetch(param_alias, key) unless param_alias.nil?
174
203
  if @api_key_prefix[param_name]
175
- "#{@api_key_prefix[param_name]} #{@api_key[param_name]}"
204
+ "#{@api_key_prefix[param_name]} #{key}"
176
205
  else
177
- @api_key[param_name]
206
+ key
178
207
  end
179
208
  end
180
209
 
@@ -200,31 +229,38 @@ module MuxRuby
200
229
  def server_settings
201
230
  [
202
231
  {
203
- url: "https://api.mux.com/",
232
+ url: "https://api.mux.com",
204
233
  description: "Mux Production Environment",
205
234
  }
206
235
  ]
207
236
  end
208
237
 
238
+ def operation_server_settings
239
+ {
240
+ }
241
+ end
242
+
209
243
  # Returns URL based on server settings
210
244
  #
211
245
  # @param index array index of the server settings
212
246
  # @param variables hash of variable and the corresponding value
213
- def server_url(index, variables = {})
214
- servers = server_settings
247
+ def server_url(index, variables = {}, servers = nil)
248
+ servers = server_settings if servers == nil
215
249
 
216
250
  # check array index out of bound
217
- if (index < 0 || index > servers.size)
218
- fail ArgumentError "Invalid index #{index} when selecting the server. Must be less than #{servers.size}"
251
+ if (index < 0 || index >= servers.size)
252
+ fail ArgumentError, "Invalid index #{index} when selecting the server. Must be less than #{servers.size}"
219
253
  end
220
254
 
221
255
  server = servers[index]
222
256
  url = server[:url]
223
257
 
258
+ return url unless server.key? :variables
259
+
224
260
  # go through variable and assign a value
225
261
  server[:variables].each do |name, variable|
226
262
  if variables.key?(name)
227
- if (server[:variables][name][:enum_values].include? variables[name])
263
+ if (!server[:variables][name].key?(:enum_values) || server[:variables][name][:enum_values].include?(variables[name]))
228
264
  url.gsub! "{" + name.to_s + "}", variables[name]
229
265
  else
230
266
  fail ArgumentError, "The variable `#{name}` in the server URL has invalid value #{variables[name]}. Must be #{server[:variables][name][:enum_values]}."
@@ -1,9 +1,17 @@
1
1
  =begin
2
- # Mux Ruby - Copyright 2019 Mux Inc.
3
- # NOTE: This file is auto generated. Do not edit this file manually.
2
+ #Mux API
3
+
4
+ #Mux is how developers build online video. This API encompasses both Mux Video and Mux Data functionality to help you build your video-related projects better and faster than ever before.
5
+
6
+ The version of the OpenAPI document: v1
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 5.0.1
10
+
4
11
  =end
5
12
 
6
13
  require 'date'
14
+ require 'time'
7
15
 
8
16
  module MuxRuby
9
17
  class AbridgedVideoView
@@ -46,6 +54,11 @@ module MuxRuby
46
54
  }
47
55
  end
48
56
 
57
+ # Returns all the JSON keys this model knows about
58
+ def self.acceptable_attributes
59
+ attribute_map.values
60
+ end
61
+
49
62
  # Attribute type mapping.
50
63
  def self.openapi_types
51
64
  {
@@ -63,55 +76,68 @@ module MuxRuby
63
76
  }
64
77
  end
65
78
 
79
+ # List of attributes with nullable: true
80
+ def self.openapi_nullable
81
+ Set.new([
82
+ ])
83
+ end
84
+
66
85
  # Initializes the object
67
86
  # @param [Hash] attributes Model attributes in the form of hash
68
87
  def initialize(attributes = {})
69
- return unless attributes.is_a?(Hash)
88
+ if (!attributes.is_a?(Hash))
89
+ fail ArgumentError, "The input argument (attributes) must be a hash in `MuxRuby::AbridgedVideoView` initialize method"
90
+ end
70
91
 
71
- # convert string to symbol for hash key
72
- attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
92
+ # check to see if the attribute exists and convert string to symbol for hash key
93
+ attributes = attributes.each_with_object({}) { |(k, v), h|
94
+ if (!self.class.attribute_map.key?(k.to_sym))
95
+ fail ArgumentError, "`#{k}` is not a valid attribute in `MuxRuby::AbridgedVideoView`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
96
+ end
97
+ h[k.to_sym] = v
98
+ }
73
99
 
74
- if attributes.has_key?(:'id')
100
+ if attributes.key?(:'id')
75
101
  self.id = attributes[:'id']
76
102
  end
77
103
 
78
- if attributes.has_key?(:'viewer_os_family')
104
+ if attributes.key?(:'viewer_os_family')
79
105
  self.viewer_os_family = attributes[:'viewer_os_family']
80
106
  end
81
107
 
82
- if attributes.has_key?(:'viewer_application_name')
108
+ if attributes.key?(:'viewer_application_name')
83
109
  self.viewer_application_name = attributes[:'viewer_application_name']
84
110
  end
85
111
 
86
- if attributes.has_key?(:'video_title')
112
+ if attributes.key?(:'video_title')
87
113
  self.video_title = attributes[:'video_title']
88
114
  end
89
115
 
90
- if attributes.has_key?(:'total_row_count')
116
+ if attributes.key?(:'total_row_count')
91
117
  self.total_row_count = attributes[:'total_row_count']
92
118
  end
93
119
 
94
- if attributes.has_key?(:'player_error_message')
120
+ if attributes.key?(:'player_error_message')
95
121
  self.player_error_message = attributes[:'player_error_message']
96
122
  end
97
123
 
98
- if attributes.has_key?(:'player_error_code')
124
+ if attributes.key?(:'player_error_code')
99
125
  self.player_error_code = attributes[:'player_error_code']
100
126
  end
101
127
 
102
- if attributes.has_key?(:'error_type_id')
128
+ if attributes.key?(:'error_type_id')
103
129
  self.error_type_id = attributes[:'error_type_id']
104
130
  end
105
131
 
106
- if attributes.has_key?(:'country_code')
132
+ if attributes.key?(:'country_code')
107
133
  self.country_code = attributes[:'country_code']
108
134
  end
109
135
 
110
- if attributes.has_key?(:'view_start')
136
+ if attributes.key?(:'view_start')
111
137
  self.view_start = attributes[:'view_start']
112
138
  end
113
139
 
114
- if attributes.has_key?(:'view_end')
140
+ if attributes.key?(:'view_end')
115
141
  self.view_end = attributes[:'view_end']
116
142
  end
117
143
  end
@@ -154,7 +180,7 @@ module MuxRuby
154
180
  end
155
181
 
156
182
  # Calculates hash code according to all attributes.
157
- # @return [Fixnum] Hash code
183
+ # @return [Integer] Hash code
158
184
  def hash
159
185
  [id, viewer_os_family, viewer_application_name, video_title, total_row_count, player_error_message, player_error_code, error_type_id, country_code, view_start, view_end].hash
160
186
  end
@@ -172,7 +198,9 @@ module MuxRuby
172
198
  def build_from_hash(attributes)
173
199
  return nil unless attributes.is_a?(Hash)
174
200
  self.class.openapi_types.each_pair do |key, type|
175
- if type =~ /\AArray<(.*)>/i
201
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
202
+ self.send("#{key}=", nil)
203
+ elsif type =~ /\AArray<(.*)>/i
176
204
  # check to ensure the input is an array given that the attribute
177
205
  # is documented as an array but the input is not
178
206
  if attributes[self.class.attribute_map[key]].is_a?(Array)
@@ -180,7 +208,7 @@ module MuxRuby
180
208
  end
181
209
  elsif !attributes[self.class.attribute_map[key]].nil?
182
210
  self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
183
- end # or else data not found in attributes(hash), not an issue as the data can be optional
211
+ end
184
212
  end
185
213
 
186
214
  self
@@ -192,8 +220,8 @@ module MuxRuby
192
220
  # @return [Object] Deserialized data
193
221
  def _deserialize(type, value)
194
222
  case type.to_sym
195
- when :DateTime
196
- DateTime.parse(value)
223
+ when :Time
224
+ Time.parse(value)
197
225
  when :Date
198
226
  Date.parse(value)
199
227
  when :String
@@ -202,7 +230,7 @@ module MuxRuby
202
230
  value.to_i
203
231
  when :Float
204
232
  value.to_f
205
- when :BOOLEAN
233
+ when :Boolean
206
234
  if value.to_s =~ /\A(true|t|yes|y|1)\z/i
207
235
  true
208
236
  else
@@ -223,7 +251,9 @@ module MuxRuby
223
251
  end
224
252
  end
225
253
  else # model
226
- MuxRuby.const_get(type).build_from_hash(value)
254
+ # models (e.g. Pet) or oneOf
255
+ klass = MuxRuby.const_get(type)
256
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
227
257
  end
228
258
  end
229
259
 
@@ -245,7 +275,11 @@ module MuxRuby
245
275
  hash = {}
246
276
  self.class.attribute_map.each_pair do |attr, param|
247
277
  value = self.send(attr)
248
- next if value.nil?
278
+ if value.nil?
279
+ is_nullable = self.class.openapi_nullable.include?(attr)
280
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
281
+ end
282
+
249
283
  hash[param] = _to_hash(value)
250
284
  end
251
285
  hash
@@ -1,20 +1,26 @@
1
1
  =begin
2
- # Mux Ruby - Copyright 2019 Mux Inc.
3
- # NOTE: This file is auto generated. Do not edit this file manually.
2
+ #Mux API
3
+
4
+ #Mux is how developers build online video. This API encompasses both Mux Video and Mux Data functionality to help you build your video-related projects better and faster than ever before.
5
+
6
+ The version of the OpenAPI document: v1
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 5.0.1
10
+
4
11
  =end
5
12
 
6
13
  require 'date'
14
+ require 'time'
7
15
 
8
16
  module MuxRuby
9
17
  class Asset
10
- # Unique identifier for the Asset.
18
+ # Unique identifier for the Asset. Max 255 characters.
11
19
  attr_accessor :id
12
20
 
13
- # Time at which the object was created. Measured in seconds since the Unix epoch.
21
+ # Time the Asset was created, defined as a Unix timestamp (seconds since epoch).
14
22
  attr_accessor :created_at
15
23
 
16
- attr_accessor :deleted_at
17
-
18
24
  # The status of the asset.
19
25
  attr_accessor :status
20
26
 
@@ -30,8 +36,10 @@ module MuxRuby
30
36
  # The aspect ratio of the asset in the form of `width:height`, for example `16:9`.
31
37
  attr_accessor :aspect_ratio
32
38
 
39
+ # An array of Playback ID objects. Use these to create HLS playback URLs. See [Play your videos](https://docs.mux.com/guides/video/play-your-videos) for more details.
33
40
  attr_accessor :playback_ids
34
41
 
42
+ # The individual media tracks that make up an asset.
35
43
  attr_accessor :tracks
36
44
 
37
45
  attr_accessor :errors
@@ -66,7 +74,7 @@ module MuxRuby
66
74
 
67
75
  attr_accessor :non_standard_input_reasons
68
76
 
69
- # Indicates this asset is a test asset if the value is `true`. A Test asset can help evaluate the Mux Video APIs without incurring any cost. There is no limit on number of test assets created. Test assets are watermarked with the Mux logo, limited to 10 seconds, and deleted after 24 hrs.
77
+ # True means this live stream is a test asset. A test asset can help evaluate the Mux Video APIs without incurring any cost. There is no limit on number of test assets created. Test assets are watermarked with the Mux logo, limited to 10 seconds, and deleted after 24 hrs.
70
78
  attr_accessor :test
71
79
 
72
80
  class EnumAttributeValidator
@@ -96,7 +104,6 @@ module MuxRuby
96
104
  {
97
105
  :'id' => :'id',
98
106
  :'created_at' => :'created_at',
99
- :'deleted_at' => :'deleted_at',
100
107
  :'status' => :'status',
101
108
  :'duration' => :'duration',
102
109
  :'max_stored_resolution' => :'max_stored_resolution',
@@ -121,12 +128,16 @@ module MuxRuby
121
128
  }
122
129
  end
123
130
 
131
+ # Returns all the JSON keys this model knows about
132
+ def self.acceptable_attributes
133
+ attribute_map.values
134
+ end
135
+
124
136
  # Attribute type mapping.
125
137
  def self.openapi_types
126
138
  {
127
139
  :'id' => :'String',
128
140
  :'created_at' => :'String',
129
- :'deleted_at' => :'String',
130
141
  :'status' => :'String',
131
142
  :'duration' => :'Float',
132
143
  :'max_stored_resolution' => :'String',
@@ -135,135 +146,144 @@ module MuxRuby
135
146
  :'playback_ids' => :'Array<PlaybackID>',
136
147
  :'tracks' => :'Array<Track>',
137
148
  :'errors' => :'AssetErrors',
138
- :'per_title_encode' => :'BOOLEAN',
139
- :'is_live' => :'BOOLEAN',
149
+ :'per_title_encode' => :'Boolean',
150
+ :'is_live' => :'Boolean',
140
151
  :'passthrough' => :'String',
141
152
  :'live_stream_id' => :'String',
142
153
  :'master' => :'AssetMaster',
143
154
  :'master_access' => :'String',
144
155
  :'mp4_support' => :'String',
145
156
  :'source_asset_id' => :'String',
146
- :'normalize_audio' => :'BOOLEAN',
157
+ :'normalize_audio' => :'Boolean',
147
158
  :'static_renditions' => :'AssetStaticRenditions',
148
159
  :'recording_times' => :'Array<AssetRecordingTimes>',
149
160
  :'non_standard_input_reasons' => :'AssetNonStandardInputReasons',
150
- :'test' => :'BOOLEAN'
161
+ :'test' => :'Boolean'
151
162
  }
152
163
  end
153
164
 
165
+ # List of attributes with nullable: true
166
+ def self.openapi_nullable
167
+ Set.new([
168
+ ])
169
+ end
170
+
154
171
  # Initializes the object
155
172
  # @param [Hash] attributes Model attributes in the form of hash
156
173
  def initialize(attributes = {})
157
- return unless attributes.is_a?(Hash)
174
+ if (!attributes.is_a?(Hash))
175
+ fail ArgumentError, "The input argument (attributes) must be a hash in `MuxRuby::Asset` initialize method"
176
+ end
158
177
 
159
- # convert string to symbol for hash key
160
- attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
178
+ # check to see if the attribute exists and convert string to symbol for hash key
179
+ attributes = attributes.each_with_object({}) { |(k, v), h|
180
+ if (!self.class.attribute_map.key?(k.to_sym))
181
+ fail ArgumentError, "`#{k}` is not a valid attribute in `MuxRuby::Asset`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
182
+ end
183
+ h[k.to_sym] = v
184
+ }
161
185
 
162
- if attributes.has_key?(:'id')
186
+ if attributes.key?(:'id')
163
187
  self.id = attributes[:'id']
164
188
  end
165
189
 
166
- if attributes.has_key?(:'created_at')
190
+ if attributes.key?(:'created_at')
167
191
  self.created_at = attributes[:'created_at']
168
192
  end
169
193
 
170
- if attributes.has_key?(:'deleted_at')
171
- self.deleted_at = attributes[:'deleted_at']
172
- end
173
-
174
- if attributes.has_key?(:'status')
194
+ if attributes.key?(:'status')
175
195
  self.status = attributes[:'status']
176
196
  end
177
197
 
178
- if attributes.has_key?(:'duration')
198
+ if attributes.key?(:'duration')
179
199
  self.duration = attributes[:'duration']
180
200
  end
181
201
 
182
- if attributes.has_key?(:'max_stored_resolution')
202
+ if attributes.key?(:'max_stored_resolution')
183
203
  self.max_stored_resolution = attributes[:'max_stored_resolution']
184
204
  end
185
205
 
186
- if attributes.has_key?(:'max_stored_frame_rate')
206
+ if attributes.key?(:'max_stored_frame_rate')
187
207
  self.max_stored_frame_rate = attributes[:'max_stored_frame_rate']
188
208
  end
189
209
 
190
- if attributes.has_key?(:'aspect_ratio')
210
+ if attributes.key?(:'aspect_ratio')
191
211
  self.aspect_ratio = attributes[:'aspect_ratio']
192
212
  end
193
213
 
194
- if attributes.has_key?(:'playback_ids')
214
+ if attributes.key?(:'playback_ids')
195
215
  if (value = attributes[:'playback_ids']).is_a?(Array)
196
216
  self.playback_ids = value
197
217
  end
198
218
  end
199
219
 
200
- if attributes.has_key?(:'tracks')
220
+ if attributes.key?(:'tracks')
201
221
  if (value = attributes[:'tracks']).is_a?(Array)
202
222
  self.tracks = value
203
223
  end
204
224
  end
205
225
 
206
- if attributes.has_key?(:'errors')
226
+ if attributes.key?(:'errors')
207
227
  self.errors = attributes[:'errors']
208
228
  end
209
229
 
210
- if attributes.has_key?(:'per_title_encode')
230
+ if attributes.key?(:'per_title_encode')
211
231
  self.per_title_encode = attributes[:'per_title_encode']
212
232
  end
213
233
 
214
- if attributes.has_key?(:'is_live')
234
+ if attributes.key?(:'is_live')
215
235
  self.is_live = attributes[:'is_live']
216
236
  end
217
237
 
218
- if attributes.has_key?(:'passthrough')
238
+ if attributes.key?(:'passthrough')
219
239
  self.passthrough = attributes[:'passthrough']
220
240
  end
221
241
 
222
- if attributes.has_key?(:'live_stream_id')
242
+ if attributes.key?(:'live_stream_id')
223
243
  self.live_stream_id = attributes[:'live_stream_id']
224
244
  end
225
245
 
226
- if attributes.has_key?(:'master')
246
+ if attributes.key?(:'master')
227
247
  self.master = attributes[:'master']
228
248
  end
229
249
 
230
- if attributes.has_key?(:'master_access')
250
+ if attributes.key?(:'master_access')
231
251
  self.master_access = attributes[:'master_access']
232
252
  else
233
253
  self.master_access = 'none'
234
254
  end
235
255
 
236
- if attributes.has_key?(:'mp4_support')
256
+ if attributes.key?(:'mp4_support')
237
257
  self.mp4_support = attributes[:'mp4_support']
238
258
  else
239
259
  self.mp4_support = 'none'
240
260
  end
241
261
 
242
- if attributes.has_key?(:'source_asset_id')
262
+ if attributes.key?(:'source_asset_id')
243
263
  self.source_asset_id = attributes[:'source_asset_id']
244
264
  end
245
265
 
246
- if attributes.has_key?(:'normalize_audio')
266
+ if attributes.key?(:'normalize_audio')
247
267
  self.normalize_audio = attributes[:'normalize_audio']
248
268
  else
249
269
  self.normalize_audio = false
250
270
  end
251
271
 
252
- if attributes.has_key?(:'static_renditions')
272
+ if attributes.key?(:'static_renditions')
253
273
  self.static_renditions = attributes[:'static_renditions']
254
274
  end
255
275
 
256
- if attributes.has_key?(:'recording_times')
276
+ if attributes.key?(:'recording_times')
257
277
  if (value = attributes[:'recording_times']).is_a?(Array)
258
278
  self.recording_times = value
259
279
  end
260
280
  end
261
281
 
262
- if attributes.has_key?(:'non_standard_input_reasons')
282
+ if attributes.key?(:'non_standard_input_reasons')
263
283
  self.non_standard_input_reasons = attributes[:'non_standard_input_reasons']
264
284
  end
265
285
 
266
- if attributes.has_key?(:'test')
286
+ if attributes.key?(:'test')
267
287
  self.test = attributes[:'test']
268
288
  end
269
289
  end
@@ -278,13 +298,13 @@ module MuxRuby
278
298
  # Check to see if the all the properties in the model are valid
279
299
  # @return true if the model is valid
280
300
  def valid?
281
- status_validator = EnumAttributeValidator.new('String', ['preparing', 'ready', 'errored'])
301
+ status_validator = EnumAttributeValidator.new('String', ["preparing", "ready", "errored"])
282
302
  return false unless status_validator.valid?(@status)
283
- max_stored_resolution_validator = EnumAttributeValidator.new('String', ['Audio only', 'SD', 'HD', 'FHD', 'UHD'])
303
+ max_stored_resolution_validator = EnumAttributeValidator.new('String', ["Audio only", "SD", "HD", "FHD", "UHD"])
284
304
  return false unless max_stored_resolution_validator.valid?(@max_stored_resolution)
285
- master_access_validator = EnumAttributeValidator.new('String', ['temporary', 'none'])
305
+ master_access_validator = EnumAttributeValidator.new('String', ["temporary", "none"])
286
306
  return false unless master_access_validator.valid?(@master_access)
287
- mp4_support_validator = EnumAttributeValidator.new('String', ['standard', 'none'])
307
+ mp4_support_validator = EnumAttributeValidator.new('String', ["standard", "none"])
288
308
  return false unless mp4_support_validator.valid?(@mp4_support)
289
309
  true
290
310
  end
@@ -292,7 +312,7 @@ module MuxRuby
292
312
  # Custom attribute writer method checking allowed values (enum).
293
313
  # @param [Object] status Object to be assigned
294
314
  def status=(status)
295
- validator = EnumAttributeValidator.new('String', ['preparing', 'ready', 'errored'])
315
+ validator = EnumAttributeValidator.new('String', ["preparing", "ready", "errored"])
296
316
  unless validator.valid?(status)
297
317
  fail ArgumentError, "invalid value for \"status\", must be one of #{validator.allowable_values}."
298
318
  end
@@ -302,7 +322,7 @@ module MuxRuby
302
322
  # Custom attribute writer method checking allowed values (enum).
303
323
  # @param [Object] max_stored_resolution Object to be assigned
304
324
  def max_stored_resolution=(max_stored_resolution)
305
- validator = EnumAttributeValidator.new('String', ['Audio only', 'SD', 'HD', 'FHD', 'UHD'])
325
+ validator = EnumAttributeValidator.new('String', ["Audio only", "SD", "HD", "FHD", "UHD"])
306
326
  unless validator.valid?(max_stored_resolution)
307
327
  fail ArgumentError, "invalid value for \"max_stored_resolution\", must be one of #{validator.allowable_values}."
308
328
  end
@@ -312,7 +332,7 @@ module MuxRuby
312
332
  # Custom attribute writer method checking allowed values (enum).
313
333
  # @param [Object] master_access Object to be assigned
314
334
  def master_access=(master_access)
315
- validator = EnumAttributeValidator.new('String', ['temporary', 'none'])
335
+ validator = EnumAttributeValidator.new('String', ["temporary", "none"])
316
336
  unless validator.valid?(master_access)
317
337
  fail ArgumentError, "invalid value for \"master_access\", must be one of #{validator.allowable_values}."
318
338
  end
@@ -322,7 +342,7 @@ module MuxRuby
322
342
  # Custom attribute writer method checking allowed values (enum).
323
343
  # @param [Object] mp4_support Object to be assigned
324
344
  def mp4_support=(mp4_support)
325
- validator = EnumAttributeValidator.new('String', ['standard', 'none'])
345
+ validator = EnumAttributeValidator.new('String', ["standard", "none"])
326
346
  unless validator.valid?(mp4_support)
327
347
  fail ArgumentError, "invalid value for \"mp4_support\", must be one of #{validator.allowable_values}."
328
348
  end
@@ -336,7 +356,6 @@ module MuxRuby
336
356
  self.class == o.class &&
337
357
  id == o.id &&
338
358
  created_at == o.created_at &&
339
- deleted_at == o.deleted_at &&
340
359
  status == o.status &&
341
360
  duration == o.duration &&
342
361
  max_stored_resolution == o.max_stored_resolution &&
@@ -367,9 +386,9 @@ module MuxRuby
367
386
  end
368
387
 
369
388
  # Calculates hash code according to all attributes.
370
- # @return [Fixnum] Hash code
389
+ # @return [Integer] Hash code
371
390
  def hash
372
- [id, created_at, deleted_at, status, duration, max_stored_resolution, max_stored_frame_rate, aspect_ratio, playback_ids, tracks, errors, per_title_encode, is_live, passthrough, live_stream_id, master, master_access, mp4_support, source_asset_id, normalize_audio, static_renditions, recording_times, non_standard_input_reasons, test].hash
391
+ [id, created_at, status, duration, max_stored_resolution, max_stored_frame_rate, aspect_ratio, playback_ids, tracks, errors, per_title_encode, is_live, passthrough, live_stream_id, master, master_access, mp4_support, source_asset_id, normalize_audio, static_renditions, recording_times, non_standard_input_reasons, test].hash
373
392
  end
374
393
 
375
394
  # Builds the object from hash
@@ -385,7 +404,9 @@ module MuxRuby
385
404
  def build_from_hash(attributes)
386
405
  return nil unless attributes.is_a?(Hash)
387
406
  self.class.openapi_types.each_pair do |key, type|
388
- if type =~ /\AArray<(.*)>/i
407
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
408
+ self.send("#{key}=", nil)
409
+ elsif type =~ /\AArray<(.*)>/i
389
410
  # check to ensure the input is an array given that the attribute
390
411
  # is documented as an array but the input is not
391
412
  if attributes[self.class.attribute_map[key]].is_a?(Array)
@@ -393,7 +414,7 @@ module MuxRuby
393
414
  end
394
415
  elsif !attributes[self.class.attribute_map[key]].nil?
395
416
  self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
396
- end # or else data not found in attributes(hash), not an issue as the data can be optional
417
+ end
397
418
  end
398
419
 
399
420
  self
@@ -405,8 +426,8 @@ module MuxRuby
405
426
  # @return [Object] Deserialized data
406
427
  def _deserialize(type, value)
407
428
  case type.to_sym
408
- when :DateTime
409
- DateTime.parse(value)
429
+ when :Time
430
+ Time.parse(value)
410
431
  when :Date
411
432
  Date.parse(value)
412
433
  when :String
@@ -415,7 +436,7 @@ module MuxRuby
415
436
  value.to_i
416
437
  when :Float
417
438
  value.to_f
418
- when :BOOLEAN
439
+ when :Boolean
419
440
  if value.to_s =~ /\A(true|t|yes|y|1)\z/i
420
441
  true
421
442
  else
@@ -436,7 +457,9 @@ module MuxRuby
436
457
  end
437
458
  end
438
459
  else # model
439
- MuxRuby.const_get(type).build_from_hash(value)
460
+ # models (e.g. Pet) or oneOf
461
+ klass = MuxRuby.const_get(type)
462
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
440
463
  end
441
464
  end
442
465
 
@@ -458,7 +481,11 @@ module MuxRuby
458
481
  hash = {}
459
482
  self.class.attribute_map.each_pair do |attr, param|
460
483
  value = self.send(attr)
461
- next if value.nil?
484
+ if value.nil?
485
+ is_nullable = self.class.openapi_nullable.include?(attr)
486
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
487
+ end
488
+
462
489
  hash[param] = _to_hash(value)
463
490
  end
464
491
  hash