mux_ruby 1.9.0 → 2.1.0

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 (277) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -1
  3. data/Gemfile.lock +26 -37
  4. data/README.md +37 -13
  5. data/docs/AbridgedVideoView.md +33 -13
  6. data/docs/Asset.md +59 -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 +396 -163
  15. data/docs/BreakdownValue.md +21 -7
  16. data/docs/CreateAssetRequest.md +27 -10
  17. data/docs/CreateLiveStreamRequest.md +29 -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 +41 -23
  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 +38 -20
  33. data/docs/ExportDate.md +20 -0
  34. data/docs/ExportFile.md +22 -0
  35. data/docs/ExportsApi.md +99 -12
  36. data/docs/FilterValue.md +15 -4
  37. data/docs/FiltersApi.md +71 -33
  38. data/docs/GetAssetInputInfoResponse.md +13 -3
  39. data/docs/GetAssetOrLiveStreamIdResponse.md +13 -3
  40. data/docs/GetAssetOrLiveStreamIdResponseData.md +17 -5
  41. data/docs/GetAssetOrLiveStreamIdResponseDataObject.md +15 -4
  42. data/docs/GetAssetPlaybackIDResponse.md +13 -3
  43. data/docs/GetMetricTimeseriesDataResponse.md +17 -5
  44. data/docs/GetOverallValuesResponse.md +17 -5
  45. data/docs/GetRealTimeBreakdownResponse.md +17 -5
  46. data/docs/GetRealTimeHistogramTimeseriesResponse.md +19 -6
  47. data/docs/GetRealTimeHistogramTimeseriesResponseMeta.md +13 -3
  48. data/docs/GetRealTimeTimeseriesResponse.md +17 -5
  49. data/docs/Incident.md +53 -23
  50. data/docs/IncidentBreakdown.md +17 -5
  51. data/docs/IncidentNotification.md +17 -5
  52. data/docs/IncidentNotificationRule.md +21 -7
  53. data/docs/IncidentResponse.md +15 -4
  54. data/docs/IncidentsApi.md +118 -62
  55. data/docs/InputFile.md +15 -4
  56. data/docs/InputInfo.md +15 -4
  57. data/docs/InputSettings.md +31 -12
  58. data/docs/InputSettingsOverlaySettings.md +25 -9
  59. data/docs/InputTrack.md +29 -11
  60. data/docs/Insight.md +23 -8
  61. data/docs/ListAllMetricValuesResponse.md +17 -5
  62. data/docs/ListAssetsResponse.md +13 -3
  63. data/docs/ListBreakdownValuesResponse.md +17 -5
  64. data/docs/ListDeliveryUsageResponse.md +19 -6
  65. data/docs/ListDimensionValuesResponse.md +17 -5
  66. data/docs/ListDimensionsResponse.md +17 -5
  67. data/docs/ListErrorsResponse.md +17 -5
  68. data/docs/ListExportsResponse.md +17 -5
  69. data/docs/ListFilterValuesResponse.md +17 -5
  70. data/docs/ListFiltersResponse.md +17 -5
  71. data/docs/ListFiltersResponseData.md +15 -4
  72. data/docs/ListIncidentsResponse.md +17 -5
  73. data/docs/ListInsightsResponse.md +17 -5
  74. data/docs/ListLiveStreamsResponse.md +13 -3
  75. data/docs/ListRealTimeDimensionsResponse.md +17 -5
  76. data/docs/ListRealTimeDimensionsResponseData.md +15 -4
  77. data/docs/ListRealTimeMetricsResponse.md +17 -5
  78. data/docs/ListRelatedIncidentsResponse.md +17 -5
  79. data/docs/ListSigningKeysResponse.md +13 -3
  80. data/docs/ListUploadsResponse.md +13 -3
  81. data/docs/ListVideoViewExportsResponse.md +22 -0
  82. data/docs/ListVideoViewsResponse.md +17 -5
  83. data/docs/LiveStream.md +41 -15
  84. data/docs/LiveStreamResponse.md +13 -3
  85. data/docs/LiveStreamsApi.md +418 -170
  86. data/docs/Metric.md +21 -7
  87. data/docs/MetricsApi.md +211 -117
  88. data/docs/NotificationRule.md +17 -5
  89. data/docs/OverallValues.md +19 -6
  90. data/docs/PlaybackID.md +15 -4
  91. data/docs/PlaybackIDApi.md +35 -17
  92. data/docs/PlaybackPolicy.md +10 -2
  93. data/docs/RealTimeApi.md +177 -81
  94. data/docs/RealTimeBreakdownValue.md +21 -7
  95. data/docs/RealTimeHistogramTimeseriesBucket.md +15 -4
  96. data/docs/RealTimeHistogramTimeseriesBucketValues.md +15 -4
  97. data/docs/RealTimeHistogramTimeseriesDatapoint.md +25 -9
  98. data/docs/RealTimeTimeseriesDatapoint.md +17 -5
  99. data/docs/Score.md +23 -8
  100. data/docs/SignalLiveStreamCompleteResponse.md +13 -3
  101. data/docs/SigningKey.md +17 -5
  102. data/docs/SigningKeyResponse.md +13 -3
  103. data/docs/SimulcastTarget.md +21 -7
  104. data/docs/SimulcastTargetResponse.md +13 -3
  105. data/docs/Track.md +37 -15
  106. data/docs/URLSigningKeysApi.md +130 -54
  107. data/docs/UpdateAssetMP4SupportRequest.md +13 -3
  108. data/docs/UpdateAssetMasterAccessRequest.md +13 -3
  109. data/docs/Upload.md +29 -11
  110. data/docs/UploadError.md +15 -4
  111. data/docs/UploadResponse.md +13 -3
  112. data/docs/VideoView.md +251 -114
  113. data/docs/VideoViewEvent.md +19 -6
  114. data/docs/VideoViewResponse.md +15 -4
  115. data/docs/VideoViewsApi.md +78 -41
  116. data/gen/.gitignore +7 -0
  117. data/gen/Makefile +31 -0
  118. data/gen/generator-config.json +11 -0
  119. data/gen/openapitools.json +7 -0
  120. data/gen/package.json +17 -0
  121. data/gen/templates/Gemfile.mustache +11 -0
  122. data/gen/templates/README.mustache +158 -0
  123. data/gen/templates/Rakefile.mustache +10 -0
  124. data/gen/templates/api.mustache +206 -0
  125. data/gen/templates/api_client.mustache +264 -0
  126. data/gen/templates/api_client_faraday_partial.mustache +138 -0
  127. data/gen/templates/api_client_spec.mustache +220 -0
  128. data/gen/templates/api_client_typhoeus_partial.mustache +183 -0
  129. data/gen/templates/api_doc.mustache +118 -0
  130. data/gen/templates/api_error.mustache +67 -0
  131. data/gen/templates/api_info.mustache +12 -0
  132. data/gen/templates/api_test.mustache +47 -0
  133. data/gen/templates/base_object.mustache +120 -0
  134. data/gen/templates/configuration.mustache +349 -0
  135. data/gen/templates/configuration_spec.mustache +34 -0
  136. data/gen/templates/configuration_tls_faraday_partial.mustache +29 -0
  137. data/gen/templates/configuration_tls_typhoeus_partial.mustache +34 -0
  138. data/gen/templates/gem.mustache +40 -0
  139. data/gen/templates/gemspec.mustache +35 -0
  140. data/gen/templates/gitignore.mustache +39 -0
  141. data/gen/templates/model.mustache +26 -0
  142. data/gen/templates/model_doc.mustache +12 -0
  143. data/gen/templates/model_test.mustache +77 -0
  144. data/gen/templates/partial_model_enum_class.mustache +20 -0
  145. data/gen/templates/partial_model_generic.mustache +371 -0
  146. data/gen/templates/partial_model_generic_doc.mustache +28 -0
  147. data/gen/templates/partial_oneof_module.mustache +137 -0
  148. data/gen/templates/partial_oneof_module_doc.mustache +92 -0
  149. data/gen/templates/rspec.mustache +2 -0
  150. data/gen/templates/rubocop.mustache +148 -0
  151. data/gen/templates/spec_helper.mustache +103 -0
  152. data/gen/templates/version.mustache +7 -0
  153. data/gen/yarn.lock +1878 -0
  154. data/lib/mux_ruby/api/assets_api.rb +293 -156
  155. data/lib/mux_ruby/api/delivery_usage_api.rb +32 -16
  156. data/lib/mux_ruby/api/dimensions_api.rb +55 -29
  157. data/lib/mux_ruby/api/direct_uploads_api.rb +90 -44
  158. data/lib/mux_ruby/api/errors_api.rb +34 -18
  159. data/lib/mux_ruby/api/exports_api.rb +86 -13
  160. data/lib/mux_ruby/api/filters_api.rb +53 -27
  161. data/lib/mux_ruby/api/incidents_api.rb +94 -52
  162. data/lib/mux_ruby/api/live_streams_api.rb +299 -157
  163. data/lib/mux_ruby/api/metrics_api.rb +193 -122
  164. data/lib/mux_ruby/api/playback_id_api.rb +33 -17
  165. data/lib/mux_ruby/api/real_time_api.rb +149 -87
  166. data/lib/mux_ruby/api/url_signing_keys_api.rb +95 -48
  167. data/lib/mux_ruby/api/video_views_api.rb +60 -33
  168. data/lib/mux_ruby/api_client.rb +94 -79
  169. data/lib/mux_ruby/api_error.rb +35 -7
  170. data/lib/mux_ruby/configuration.rb +50 -14
  171. data/lib/mux_ruby/models/abridged_video_view.rb +58 -24
  172. data/lib/mux_ruby/models/asset.rb +100 -63
  173. data/lib/mux_ruby/models/asset_errors.rb +50 -15
  174. data/lib/mux_ruby/models/asset_master.rb +52 -17
  175. data/lib/mux_ruby/models/asset_non_standard_input_reasons.rb +70 -35
  176. data/lib/mux_ruby/models/asset_recording_times.rb +50 -16
  177. data/lib/mux_ruby/models/asset_response.rb +48 -14
  178. data/lib/mux_ruby/models/asset_static_renditions.rb +53 -17
  179. data/lib/mux_ruby/models/asset_static_renditions_files.rb +58 -23
  180. data/lib/mux_ruby/models/breakdown_value.rb +52 -18
  181. data/lib/mux_ruby/models/create_asset_request.rb +64 -30
  182. data/lib/mux_ruby/models/create_live_stream_request.rb +78 -23
  183. data/lib/mux_ruby/models/create_playback_id_request.rb +48 -14
  184. data/lib/mux_ruby/models/create_playback_id_response.rb +48 -14
  185. data/lib/mux_ruby/models/create_simulcast_target_request.rb +50 -16
  186. data/lib/mux_ruby/models/create_track_request.rb +60 -26
  187. data/lib/mux_ruby/models/create_track_response.rb +48 -14
  188. data/lib/mux_ruby/models/create_upload_request.rb +52 -18
  189. data/lib/mux_ruby/models/delivery_report.rb +106 -21
  190. data/lib/mux_ruby/models/dimension_value.rb +49 -15
  191. data/lib/mux_ruby/models/disable_live_stream_response.rb +48 -14
  192. data/lib/mux_ruby/models/enable_live_stream_response.rb +48 -14
  193. data/lib/mux_ruby/models/error.rb +63 -21
  194. data/lib/mux_ruby/models/export_date.rb +229 -0
  195. data/lib/mux_ruby/models/export_file.rb +236 -0
  196. data/lib/mux_ruby/models/filter_value.rb +49 -15
  197. data/lib/mux_ruby/models/get_asset_input_info_response.rb +48 -14
  198. data/lib/mux_ruby/models/get_asset_or_live_stream_id_response.rb +48 -14
  199. data/lib/mux_ruby/models/get_asset_or_live_stream_id_response_data.rb +50 -16
  200. data/lib/mux_ruby/models/get_asset_or_live_stream_id_response_data_object.rb +51 -17
  201. data/lib/mux_ruby/models/get_asset_playback_id_response.rb +48 -14
  202. data/lib/mux_ruby/models/get_metric_timeseries_data_response.rb +50 -16
  203. data/lib/mux_ruby/models/get_overall_values_response.rb +50 -16
  204. data/lib/mux_ruby/models/get_real_time_breakdown_response.rb +50 -16
  205. data/lib/mux_ruby/models/get_real_time_histogram_timeseries_response.rb +51 -17
  206. data/lib/mux_ruby/models/get_real_time_histogram_timeseries_response_meta.rb +48 -14
  207. data/lib/mux_ruby/models/get_real_time_timeseries_response.rb +50 -16
  208. data/lib/mux_ruby/models/incident.rb +68 -34
  209. data/lib/mux_ruby/models/incident_breakdown.rb +50 -16
  210. data/lib/mux_ruby/models/incident_notification.rb +50 -16
  211. data/lib/mux_ruby/models/incident_notification_rule.rb +52 -18
  212. data/lib/mux_ruby/models/incident_response.rb +49 -15
  213. data/lib/mux_ruby/models/input_file.rb +49 -15
  214. data/lib/mux_ruby/models/input_info.rb +49 -15
  215. data/lib/mux_ruby/models/input_settings.rb +64 -30
  216. data/lib/mux_ruby/models/input_settings_overlay_settings.rb +58 -24
  217. data/lib/mux_ruby/models/input_track.rb +56 -22
  218. data/lib/mux_ruby/models/insight.rb +53 -19
  219. data/lib/mux_ruby/models/list_all_metric_values_response.rb +50 -16
  220. data/lib/mux_ruby/models/list_assets_response.rb +48 -14
  221. data/lib/mux_ruby/models/list_breakdown_values_response.rb +50 -16
  222. data/lib/mux_ruby/models/list_delivery_usage_response.rb +51 -17
  223. data/lib/mux_ruby/models/list_dimension_values_response.rb +50 -16
  224. data/lib/mux_ruby/models/list_dimensions_response.rb +50 -16
  225. data/lib/mux_ruby/models/list_errors_response.rb +50 -16
  226. data/lib/mux_ruby/models/list_exports_response.rb +50 -16
  227. data/lib/mux_ruby/models/list_filter_values_response.rb +50 -16
  228. data/lib/mux_ruby/models/list_filters_response.rb +50 -16
  229. data/lib/mux_ruby/models/list_filters_response_data.rb +49 -15
  230. data/lib/mux_ruby/models/list_incidents_response.rb +50 -16
  231. data/lib/mux_ruby/models/list_insights_response.rb +50 -16
  232. data/lib/mux_ruby/models/list_live_streams_response.rb +48 -14
  233. data/lib/mux_ruby/models/list_real_time_dimensions_response.rb +50 -16
  234. data/lib/mux_ruby/models/list_real_time_dimensions_response_data.rb +49 -15
  235. data/lib/mux_ruby/models/list_real_time_metrics_response.rb +50 -16
  236. data/lib/mux_ruby/models/list_related_incidents_response.rb +50 -16
  237. data/lib/mux_ruby/models/list_signing_keys_response.rb +48 -14
  238. data/lib/mux_ruby/models/list_uploads_response.rb +48 -14
  239. data/lib/mux_ruby/models/list_video_view_exports_response.rb +240 -0
  240. data/lib/mux_ruby/models/list_video_views_response.rb +50 -16
  241. data/lib/mux_ruby/models/live_stream.rb +131 -29
  242. data/lib/mux_ruby/models/live_stream_response.rb +48 -14
  243. data/lib/mux_ruby/models/metric.rb +52 -18
  244. data/lib/mux_ruby/models/notification_rule.rb +50 -16
  245. data/lib/mux_ruby/models/overall_values.rb +51 -17
  246. data/lib/mux_ruby/models/playback_id.rb +49 -15
  247. data/lib/mux_ruby/models/playback_policy.rb +12 -6
  248. data/lib/mux_ruby/models/real_time_breakdown_value.rb +52 -18
  249. data/lib/mux_ruby/models/real_time_histogram_timeseries_bucket.rb +50 -16
  250. data/lib/mux_ruby/models/real_time_histogram_timeseries_bucket_values.rb +49 -15
  251. data/lib/mux_ruby/models/real_time_histogram_timeseries_datapoint.rb +54 -20
  252. data/lib/mux_ruby/models/real_time_timeseries_datapoint.rb +50 -16
  253. data/lib/mux_ruby/models/score.rb +53 -19
  254. data/lib/mux_ruby/models/signal_live_stream_complete_response.rb +48 -14
  255. data/lib/mux_ruby/models/signing_key.rb +53 -16
  256. data/lib/mux_ruby/models/signing_key_response.rb +48 -14
  257. data/lib/mux_ruby/models/simulcast_target.rb +54 -20
  258. data/lib/mux_ruby/models/simulcast_target_response.rb +48 -14
  259. data/lib/mux_ruby/models/track.rb +67 -33
  260. data/lib/mux_ruby/models/update_asset_master_access_request.rb +50 -16
  261. data/lib/mux_ruby/models/update_asset_mp4_support_request.rb +50 -16
  262. data/lib/mux_ruby/models/upload.rb +61 -25
  263. data/lib/mux_ruby/models/upload_error.rb +51 -15
  264. data/lib/mux_ruby/models/upload_response.rb +48 -14
  265. data/lib/mux_ruby/models/video_view.rb +242 -136
  266. data/lib/mux_ruby/models/video_view_event.rb +51 -17
  267. data/lib/mux_ruby/models/video_view_response.rb +49 -15
  268. data/lib/mux_ruby/version.rb +10 -3
  269. data/lib/mux_ruby.rb +12 -2
  270. data/mux_ruby.gemspec +15 -17
  271. data/spec/api_client_spec.rb +10 -3
  272. data/spec/configuration_spec.rb +9 -2
  273. data/spec/models/export_date_spec.rb +40 -0
  274. data/spec/models/export_file_spec.rb +46 -0
  275. data/spec/models/list_video_view_exports_response_spec.rb +46 -0
  276. data/spec/spec_helper.rb +9 -2
  277. metadata +149 -240
@@ -1,14 +1,21 @@
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
+ Contact: devex@mux.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 5.0.1
10
+
4
11
  =end
5
12
 
6
13
  require 'date'
7
14
  require 'json'
8
15
  require 'logger'
9
16
  require 'tempfile'
17
+ require 'time'
10
18
  require 'typhoeus'
11
- require 'uri'
12
19
 
13
20
  module MuxRuby
14
21
  class ApiClient
@@ -37,7 +44,7 @@ module MuxRuby
37
44
 
38
45
  # Call an API with given options.
39
46
  #
40
- # @return [Array<(Object, Fixnum, Hash)>] an array of 3 elements:
47
+ # @return [Array<(Object, Integer, Hash)>] an array of 3 elements:
41
48
  # the data deserialized from response body (could be nil), response status code and response headers.
42
49
  def call_api(http_method, path, opts = {})
43
50
  request = build_request(http_method, path, opts)
@@ -74,6 +81,11 @@ module MuxRuby
74
81
  :response_headers => response.headers,
75
82
  :response_body => response.body,
76
83
  :message => response.status_message)
84
+ elsif response.code.between?(400, 499)
85
+ fail ClientError.new(:code => response.code,
86
+ :response_headers => response.headers,
87
+ :response_body => response.body,
88
+ :message => response.status_message)
77
89
  elsif response.code.between?(500, 599)
78
90
  fail ServiceError.new(:code => response.code,
79
91
  :response_headers => response.headers,
@@ -105,7 +117,7 @@ module MuxRuby
105
117
  # @option opts [Object] :body HTTP body (JSON/XML)
106
118
  # @return [Typhoeus::Request] A Typhoeus Request
107
119
  def build_request(http_method, path, opts = {})
108
- url = build_request_url(path)
120
+ url = build_request_url(path, opts)
109
121
  http_method = http_method.to_sym.downcase
110
122
 
111
123
  header_params = @default_headers.merge(opts[:header_params] || {})
@@ -121,7 +133,7 @@ module MuxRuby
121
133
  :method => http_method,
122
134
  :headers => header_params,
123
135
  :params => query_params,
124
- :params_encoding => :multi,
136
+ :params_encoding => @config.params_encoding,
125
137
  :timeout => @config.timeout,
126
138
  :ssl_verifypeer => @config.verify_ssl,
127
139
  :ssl_verifyhost => _verify_ssl_host,
@@ -146,6 +158,72 @@ module MuxRuby
146
158
  request
147
159
  end
148
160
 
161
+ # Builds the HTTP request body
162
+ #
163
+ # @param [Hash] header_params Header parameters
164
+ # @param [Hash] form_params Query parameters
165
+ # @param [Object] body HTTP body (JSON/XML)
166
+ # @return [String] HTTP body data in the form of string
167
+ def build_request_body(header_params, form_params, body)
168
+ # http form
169
+ if header_params['Content-Type'] == 'application/x-www-form-urlencoded' ||
170
+ header_params['Content-Type'] == 'multipart/form-data'
171
+ data = {}
172
+ form_params.each do |key, value|
173
+ case value
174
+ when ::File, ::Array, nil
175
+ # let typhoeus handle File, Array and nil parameters
176
+ data[key] = value
177
+ else
178
+ data[key] = value.to_s
179
+ end
180
+ end
181
+ elsif body
182
+ data = body.is_a?(String) ? body : body.to_json
183
+ else
184
+ data = nil
185
+ end
186
+ data
187
+ end
188
+
189
+ # Save response body into a file in (the defined) temporary folder, using the filename
190
+ # from the "Content-Disposition" header if provided, otherwise a random filename.
191
+ # The response body is written to the file in chunks in order to handle files which
192
+ # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
193
+ # process can use.
194
+ #
195
+ # @see Configuration#temp_folder_path
196
+ def download_file(request)
197
+ tempfile = nil
198
+ encoding = nil
199
+ request.on_headers do |response|
200
+ content_disposition = response.headers['Content-Disposition']
201
+ if content_disposition && content_disposition =~ /filename=/i
202
+ filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
203
+ prefix = sanitize_filename(filename)
204
+ else
205
+ prefix = 'download-'
206
+ end
207
+ prefix = prefix + '-' unless prefix.end_with?('-')
208
+ encoding = response.body.encoding
209
+ tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
210
+ @tempfile = tempfile
211
+ end
212
+ request.on_body do |chunk|
213
+ chunk.force_encoding(encoding)
214
+ tempfile.write(chunk)
215
+ end
216
+ request.on_complete do |response|
217
+ if tempfile
218
+ tempfile.close
219
+ @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
220
+ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
221
+ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
222
+ "explicitly with `tempfile.delete`"
223
+ end
224
+ end
225
+ end
226
+
149
227
  # Check if the given MIME is a JSON MIME.
150
228
  # JSON MIME examples:
151
229
  # application/json
@@ -182,7 +260,7 @@ module MuxRuby
182
260
  begin
183
261
  data = JSON.parse("[#{body}]", :symbolize_names => true)[0]
184
262
  rescue JSON::ParserError => e
185
- if %w(String Date DateTime).include?(return_type)
263
+ if %w(String Date Time).include?(return_type)
186
264
  data = body
187
265
  else
188
266
  raise e
@@ -205,11 +283,11 @@ module MuxRuby
205
283
  data.to_i
206
284
  when 'Float'
207
285
  data.to_f
208
- when 'BOOLEAN'
286
+ when 'Boolean'
209
287
  data == true
210
- when 'DateTime'
288
+ when 'Time'
211
289
  # parse date time (expecting ISO 8601 format)
212
- DateTime.parse data
290
+ Time.parse data
213
291
  when 'Date'
214
292
  # parse date time (expecting ISO 8601 format)
215
293
  Date.parse data
@@ -227,44 +305,9 @@ module MuxRuby
227
305
  data.each { |k, v| hash[k] = convert_to_type(v, sub_type) }
228
306
  end
229
307
  else
230
- # models, e.g. Pet
231
- MuxRuby.const_get(return_type).build_from_hash(data)
232
- end
233
- end
234
-
235
- # Save response body into a file in (the defined) temporary folder, using the filename
236
- # from the "Content-Disposition" header if provided, otherwise a random filename.
237
- # The response body is written to the file in chunks in order to handle files which
238
- # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
239
- # process can use.
240
- #
241
- # @see Configuration#temp_folder_path
242
- def download_file(request)
243
- tempfile = nil
244
- encoding = nil
245
- request.on_headers do |response|
246
- content_disposition = response.headers['Content-Disposition']
247
- if content_disposition && content_disposition =~ /filename=/i
248
- filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
249
- prefix = sanitize_filename(filename)
250
- else
251
- prefix = 'download-'
252
- end
253
- prefix = prefix + '-' unless prefix.end_with?('-')
254
- encoding = response.body.encoding
255
- tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
256
- @tempfile = tempfile
257
- end
258
- request.on_body do |chunk|
259
- chunk.force_encoding(encoding)
260
- tempfile.write(chunk)
261
- end
262
- request.on_complete do |response|
263
- tempfile.close if tempfile
264
- @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
265
- "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
266
- "will be deleted automatically with GC. It's also recommended to delete the temp file "\
267
- "explicitly with `tempfile.delete`"
308
+ # models (e.g. Pet) or oneOf
309
+ klass = MuxRuby.const_get(return_type)
310
+ klass.respond_to?(:openapi_one_of) ? klass.build(data) : klass.build_from_hash(data)
268
311
  end
269
312
  end
270
313
 
@@ -277,38 +320,10 @@ module MuxRuby
277
320
  filename.gsub(/.*[\/\\]/, '')
278
321
  end
279
322
 
280
- def build_request_url(path)
323
+ def build_request_url(path, opts = {})
281
324
  # Add leading and trailing slashes to path
282
325
  path = "/#{path}".gsub(/\/+/, '/')
283
- "#{@config.base_url}#{path}"
284
- end
285
-
286
- # Builds the HTTP request body
287
- #
288
- # @param [Hash] header_params Header parameters
289
- # @param [Hash] form_params Query parameters
290
- # @param [Object] body HTTP body (JSON/XML)
291
- # @return [String] HTTP body data in the form of string
292
- def build_request_body(header_params, form_params, body)
293
- # http form
294
- if header_params['Content-Type'] == 'application/x-www-form-urlencoded' ||
295
- header_params['Content-Type'] == 'multipart/form-data'
296
- data = {}
297
- form_params.each do |key, value|
298
- case value
299
- when ::File, ::Array, nil
300
- # let typhoeus handle File, Array and nil parameters
301
- data[key] = value
302
- else
303
- data[key] = value.to_s
304
- end
305
- end
306
- elsif body
307
- data = body.is_a?(String) ? body : body.to_json
308
- else
309
- data = nil
310
- end
311
- data
326
+ @config.base_url(opts[:operation]) + path
312
327
  end
313
328
 
314
329
  # Update hearder and query params based on authentication settings.
@@ -323,7 +338,7 @@ module MuxRuby
323
338
  case auth_setting[:in]
324
339
  when 'header' then header_params[auth_setting[:key]] = auth_setting[:value]
325
340
  when 'query' then query_params[auth_setting[:key]] = auth_setting[:value]
326
- else fail ArgumentError, 'Authentication token must be in `query` of `header`'
341
+ else fail ArgumentError, 'Authentication token must be in `query` or `header`'
327
342
  end
328
343
  end
329
344
  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
+ Contact: devex@mux.com
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
+ Contact: devex@mux.com
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
+ Contact: devex@mux.com
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