mux_ruby 1.5.1 → 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 (317) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -1
  3. data/Gemfile.lock +26 -37
  4. data/README.md +38 -12
  5. data/docs/AbridgedVideoView.md +33 -13
  6. data/docs/Asset.md +57 -23
  7. data/docs/AssetErrors.md +15 -4
  8. data/docs/AssetMaster.md +15 -4
  9. data/docs/AssetNonStandardInputReasons.md +34 -0
  10. data/docs/AssetRecordingTimes.md +20 -0
  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 +391 -160
  15. data/docs/BreakdownValue.md +21 -7
  16. data/docs/CreateAssetRequest.md +27 -10
  17. data/docs/CreateLiveStreamRequest.md +25 -8
  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 +20 -0
  27. data/docs/DimensionsApi.md +156 -0
  28. data/docs/DirectUploadsApi.md +131 -56
  29. data/docs/DisableLiveStreamResponse.md +18 -0
  30. data/docs/EnableLiveStreamResponse.md +18 -0
  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 +73 -35
  36. data/docs/GetAssetInputInfoResponse.md +13 -3
  37. data/docs/GetAssetOrLiveStreamIdResponse.md +18 -0
  38. data/docs/GetAssetOrLiveStreamIdResponseData.md +22 -0
  39. data/docs/GetAssetOrLiveStreamIdResponseDataObject.md +20 -0
  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 +22 -0
  44. data/docs/GetRealTimeHistogramTimeseriesResponse.md +24 -0
  45. data/docs/GetRealTimeHistogramTimeseriesResponseMeta.md +18 -0
  46. data/docs/GetRealTimeTimeseriesResponse.md +22 -0
  47. data/docs/Incident.md +58 -0
  48. data/docs/IncidentBreakdown.md +22 -0
  49. data/docs/IncidentNotification.md +22 -0
  50. data/docs/IncidentNotificationRule.md +26 -0
  51. data/docs/IncidentResponse.md +20 -0
  52. data/docs/IncidentsApi.md +242 -0
  53. data/docs/InputFile.md +15 -4
  54. data/docs/InputInfo.md +15 -4
  55. data/docs/InputSettings.md +31 -10
  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 +22 -0
  64. data/docs/ListDimensionsResponse.md +22 -0
  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 +22 -0
  71. data/docs/ListInsightsResponse.md +17 -5
  72. data/docs/ListLiveStreamsResponse.md +13 -3
  73. data/docs/ListRealTimeDimensionsResponse.md +22 -0
  74. data/docs/ListRealTimeDimensionsResponseData.md +20 -0
  75. data/docs/ListRealTimeMetricsResponse.md +22 -0
  76. data/docs/ListRelatedIncidentsResponse.md +22 -0
  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 +497 -145
  83. data/docs/Metric.md +21 -7
  84. data/docs/MetricsApi.md +206 -112
  85. data/docs/NotificationRule.md +22 -0
  86. data/docs/OverallValues.md +19 -6
  87. data/docs/PlaybackID.md +15 -4
  88. data/docs/PlaybackIDApi.md +78 -0
  89. data/docs/PlaybackPolicy.md +10 -2
  90. data/docs/RealTimeApi.md +376 -0
  91. data/docs/RealTimeBreakdownValue.md +26 -0
  92. data/docs/RealTimeHistogramTimeseriesBucket.md +20 -0
  93. data/docs/RealTimeHistogramTimeseriesBucketValues.md +20 -0
  94. data/docs/RealTimeHistogramTimeseriesDatapoint.md +30 -0
  95. data/docs/RealTimeTimeseriesDatapoint.md +22 -0
  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 -112
  110. data/docs/VideoViewEvent.md +19 -6
  111. data/docs/VideoViewResponse.md +15 -4
  112. data/docs/VideoViewsApi.md +76 -39
  113. data/examples/data/exercise-dimensions.rb +29 -0
  114. data/examples/data/exercise-incidents.rb +29 -0
  115. data/examples/data/exercise-realtime.rb +60 -0
  116. data/examples/video/exercise-assets.rb +21 -0
  117. data/examples/video/exercise-live-streams.rb +30 -0
  118. data/gen/.gitignore +7 -0
  119. data/gen/Makefile +31 -0
  120. data/gen/generator-config.json +11 -0
  121. data/gen/openapitools.json +7 -0
  122. data/gen/package.json +17 -0
  123. data/gen/templates/Gemfile.mustache +11 -0
  124. data/gen/templates/README.mustache +158 -0
  125. data/gen/templates/Rakefile.mustache +10 -0
  126. data/gen/templates/api.mustache +206 -0
  127. data/gen/templates/api_client.mustache +264 -0
  128. data/gen/templates/api_client_faraday_partial.mustache +138 -0
  129. data/gen/templates/api_client_spec.mustache +220 -0
  130. data/gen/templates/api_client_typhoeus_partial.mustache +183 -0
  131. data/gen/templates/api_doc.mustache +118 -0
  132. data/gen/templates/api_error.mustache +67 -0
  133. data/gen/templates/api_info.mustache +12 -0
  134. data/gen/templates/api_test.mustache +47 -0
  135. data/gen/templates/base_object.mustache +120 -0
  136. data/gen/templates/configuration.mustache +349 -0
  137. data/gen/templates/configuration_spec.mustache +34 -0
  138. data/gen/templates/configuration_tls_faraday_partial.mustache +29 -0
  139. data/gen/templates/configuration_tls_typhoeus_partial.mustache +34 -0
  140. data/gen/templates/gem.mustache +40 -0
  141. data/gen/templates/gemspec.mustache +35 -0
  142. data/gen/templates/gitignore.mustache +39 -0
  143. data/gen/templates/model.mustache +26 -0
  144. data/gen/templates/model_doc.mustache +12 -0
  145. data/gen/templates/model_test.mustache +77 -0
  146. data/gen/templates/partial_model_enum_class.mustache +20 -0
  147. data/gen/templates/partial_model_generic.mustache +371 -0
  148. data/gen/templates/partial_model_generic_doc.mustache +28 -0
  149. data/gen/templates/partial_oneof_module.mustache +137 -0
  150. data/gen/templates/partial_oneof_module_doc.mustache +92 -0
  151. data/gen/templates/rspec.mustache +2 -0
  152. data/gen/templates/rubocop.mustache +148 -0
  153. data/gen/templates/spec_helper.mustache +103 -0
  154. data/gen/templates/version.mustache +7 -0
  155. data/gen/yarn.lock +1878 -0
  156. data/lib/mux_ruby.rb +43 -2
  157. data/lib/mux_ruby/api/assets_api.rb +283 -150
  158. data/lib/mux_ruby/api/delivery_usage_api.rb +28 -12
  159. data/lib/mux_ruby/api/dimensions_api.rb +154 -0
  160. data/lib/mux_ruby/api/direct_uploads_api.rb +90 -44
  161. data/lib/mux_ruby/api/errors_api.rb +32 -16
  162. data/lib/mux_ruby/api/exports_api.rb +28 -12
  163. data/lib/mux_ruby/api/filters_api.rb +57 -31
  164. data/lib/mux_ruby/api/incidents_api.rb +259 -0
  165. data/lib/mux_ruby/api/live_streams_api.rb +381 -133
  166. data/lib/mux_ruby/api/metrics_api.rb +175 -104
  167. data/lib/mux_ruby/api/playback_id_api.rb +85 -0
  168. data/lib/mux_ruby/api/real_time_api.rb +373 -0
  169. data/lib/mux_ruby/api/url_signing_keys_api.rb +89 -42
  170. data/lib/mux_ruby/api/video_views_api.rb +56 -29
  171. data/lib/mux_ruby/api_client.rb +106 -91
  172. data/lib/mux_ruby/api_error.rb +35 -7
  173. data/lib/mux_ruby/configuration.rb +50 -14
  174. data/lib/mux_ruby/models/abridged_video_view.rb +58 -24
  175. data/lib/mux_ruby/models/asset.rb +147 -53
  176. data/lib/mux_ruby/models/asset_errors.rb +52 -15
  177. data/lib/mux_ruby/models/asset_master.rb +85 -15
  178. data/lib/mux_ruby/models/asset_non_standard_input_reasons.rb +370 -0
  179. data/lib/mux_ruby/models/asset_recording_times.rb +229 -0
  180. data/lib/mux_ruby/models/asset_response.rb +48 -14
  181. data/lib/mux_ruby/models/asset_static_renditions.rb +55 -19
  182. data/lib/mux_ruby/models/asset_static_renditions_files.rb +60 -25
  183. data/lib/mux_ruby/models/breakdown_value.rb +52 -18
  184. data/lib/mux_ruby/models/create_asset_request.rb +70 -30
  185. data/lib/mux_ruby/models/create_live_stream_request.rb +70 -24
  186. data/lib/mux_ruby/models/create_playback_id_request.rb +48 -14
  187. data/lib/mux_ruby/models/create_playback_id_response.rb +48 -14
  188. data/lib/mux_ruby/models/create_simulcast_target_request.rb +50 -16
  189. data/lib/mux_ruby/models/create_track_request.rb +65 -27
  190. data/lib/mux_ruby/models/create_track_response.rb +48 -14
  191. data/lib/mux_ruby/models/create_upload_request.rb +52 -18
  192. data/lib/mux_ruby/models/delivery_report.rb +106 -21
  193. data/lib/mux_ruby/models/dimension_value.rb +227 -0
  194. data/lib/mux_ruby/models/disable_live_stream_response.rb +218 -0
  195. data/lib/mux_ruby/models/enable_live_stream_response.rb +218 -0
  196. data/lib/mux_ruby/models/error.rb +63 -21
  197. data/lib/mux_ruby/models/filter_value.rb +49 -15
  198. data/lib/mux_ruby/models/get_asset_input_info_response.rb +48 -14
  199. data/lib/mux_ruby/models/get_asset_or_live_stream_id_response.rb +218 -0
  200. data/lib/mux_ruby/models/get_asset_or_live_stream_id_response_data.rb +237 -0
  201. data/lib/mux_ruby/models/get_asset_or_live_stream_id_response_data_object.rb +264 -0
  202. data/lib/mux_ruby/models/get_asset_playback_id_response.rb +48 -14
  203. data/lib/mux_ruby/models/get_metric_timeseries_data_response.rb +50 -16
  204. data/lib/mux_ruby/models/get_overall_values_response.rb +50 -16
  205. data/lib/mux_ruby/models/get_real_time_breakdown_response.rb +240 -0
  206. data/lib/mux_ruby/models/get_real_time_histogram_timeseries_response.rb +249 -0
  207. data/lib/mux_ruby/models/get_real_time_histogram_timeseries_response_meta.rb +220 -0
  208. data/lib/mux_ruby/models/get_real_time_timeseries_response.rb +240 -0
  209. data/lib/mux_ruby/models/incident.rb +404 -0
  210. data/lib/mux_ruby/models/incident_breakdown.rb +236 -0
  211. data/lib/mux_ruby/models/incident_notification.rb +236 -0
  212. data/lib/mux_ruby/models/incident_notification_rule.rb +256 -0
  213. data/lib/mux_ruby/models/incident_response.rb +229 -0
  214. data/lib/mux_ruby/models/input_file.rb +49 -15
  215. data/lib/mux_ruby/models/input_info.rb +49 -15
  216. data/lib/mux_ruby/models/input_settings.rb +91 -30
  217. data/lib/mux_ruby/models/input_settings_overlay_settings.rb +68 -26
  218. data/lib/mux_ruby/models/input_track.rb +56 -22
  219. data/lib/mux_ruby/models/insight.rb +53 -19
  220. data/lib/mux_ruby/models/list_all_metric_values_response.rb +50 -16
  221. data/lib/mux_ruby/models/list_assets_response.rb +48 -14
  222. data/lib/mux_ruby/models/list_breakdown_values_response.rb +50 -16
  223. data/lib/mux_ruby/models/list_delivery_usage_response.rb +51 -17
  224. data/lib/mux_ruby/models/list_dimension_values_response.rb +240 -0
  225. data/lib/mux_ruby/models/list_dimensions_response.rb +238 -0
  226. data/lib/mux_ruby/models/list_errors_response.rb +50 -16
  227. data/lib/mux_ruby/models/list_exports_response.rb +50 -16
  228. data/lib/mux_ruby/models/list_filter_values_response.rb +50 -16
  229. data/lib/mux_ruby/models/list_filters_response.rb +50 -16
  230. data/lib/mux_ruby/models/list_filters_response_data.rb +49 -15
  231. data/lib/mux_ruby/models/list_incidents_response.rb +240 -0
  232. data/lib/mux_ruby/models/list_insights_response.rb +50 -16
  233. data/lib/mux_ruby/models/list_live_streams_response.rb +48 -14
  234. data/lib/mux_ruby/models/list_real_time_dimensions_response.rb +240 -0
  235. data/lib/mux_ruby/models/list_real_time_dimensions_response_data.rb +227 -0
  236. data/lib/mux_ruby/models/list_real_time_metrics_response.rb +240 -0
  237. data/lib/mux_ruby/models/list_related_incidents_response.rb +240 -0
  238. data/lib/mux_ruby/models/list_signing_keys_response.rb +48 -14
  239. data/lib/mux_ruby/models/list_uploads_response.rb +48 -14
  240. data/lib/mux_ruby/models/list_video_views_response.rb +50 -16
  241. data/lib/mux_ruby/models/live_stream.rb +111 -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 +236 -0
  245. data/lib/mux_ruby/models/overall_values.rb +51 -17
  246. data/lib/mux_ruby/models/playback_id.rb +50 -15
  247. data/lib/mux_ruby/models/playback_policy.rb +12 -6
  248. data/lib/mux_ruby/models/real_time_breakdown_value.rb +254 -0
  249. data/lib/mux_ruby/models/real_time_histogram_timeseries_bucket.rb +227 -0
  250. data/lib/mux_ruby/models/real_time_histogram_timeseries_bucket_values.rb +227 -0
  251. data/lib/mux_ruby/models/real_time_histogram_timeseries_datapoint.rb +274 -0
  252. data/lib/mux_ruby/models/real_time_timeseries_datapoint.rb +236 -0
  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 +55 -21
  258. data/lib/mux_ruby/models/simulcast_target_response.rb +48 -14
  259. data/lib/mux_ruby/models/track.rb +92 -33
  260. data/lib/mux_ruby/models/update_asset_master_access_request.rb +51 -17
  261. data/lib/mux_ruby/models/update_asset_mp4_support_request.rb +51 -17
  262. data/lib/mux_ruby/models/upload.rb +62 -26
  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 +200 -148
  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/mux_ruby.gemspec +15 -15
  270. data/spec/api/assets_api_spec.rb +2 -0
  271. data/spec/api/dimensions_api_spec.rb +55 -0
  272. data/spec/api/filters_api_spec.rb +2 -2
  273. data/spec/api/incidents_api_spec.rb +73 -0
  274. data/spec/api/live_streams_api_spec.rb +24 -0
  275. data/spec/api/playback_id_api_spec.rb +40 -0
  276. data/spec/api/real_time_api_spec.rb +93 -0
  277. data/spec/api_client_spec.rb +10 -3
  278. data/spec/configuration_spec.rb +9 -2
  279. data/spec/models/asset_master_spec.rb +4 -0
  280. data/spec/models/asset_non_standard_input_reasons_spec.rb +98 -0
  281. data/spec/models/asset_recording_times_spec.rb +40 -0
  282. data/spec/models/asset_spec.rb +26 -0
  283. data/spec/models/asset_static_renditions_files_spec.rb +2 -2
  284. data/spec/models/create_live_stream_request_spec.rb +6 -0
  285. data/spec/models/dimension_value_spec.rb +40 -0
  286. data/spec/models/disable_live_stream_response_spec.rb +34 -0
  287. data/spec/models/enable_live_stream_response_spec.rb +34 -0
  288. data/spec/models/get_asset_or_live_stream_id_response_data_object_spec.rb +44 -0
  289. data/spec/models/get_asset_or_live_stream_id_response_data_spec.rb +46 -0
  290. data/spec/models/get_asset_or_live_stream_id_response_spec.rb +34 -0
  291. data/spec/models/get_real_time_breakdown_response_spec.rb +46 -0
  292. data/spec/models/get_real_time_histogram_timeseries_response_meta_spec.rb +34 -0
  293. data/spec/models/get_real_time_histogram_timeseries_response_spec.rb +52 -0
  294. data/spec/models/get_real_time_timeseries_response_spec.rb +46 -0
  295. data/spec/models/incident_breakdown_spec.rb +46 -0
  296. data/spec/models/incident_notification_rule_spec.rb +58 -0
  297. data/spec/models/incident_notification_spec.rb +46 -0
  298. data/spec/models/incident_response_spec.rb +40 -0
  299. data/spec/models/incident_spec.rb +154 -0
  300. data/spec/models/input_settings_spec.rb +12 -0
  301. data/spec/models/list_dimension_values_response_spec.rb +46 -0
  302. data/spec/models/list_dimensions_response_spec.rb +46 -0
  303. data/spec/models/list_incidents_response_spec.rb +46 -0
  304. data/spec/models/list_real_time_dimensions_response_data_spec.rb +40 -0
  305. data/spec/models/list_real_time_dimensions_response_spec.rb +46 -0
  306. data/spec/models/list_real_time_metrics_response_spec.rb +46 -0
  307. data/spec/models/list_related_incidents_response_spec.rb +46 -0
  308. data/spec/models/notification_rule_spec.rb +46 -0
  309. data/spec/models/real_time_breakdown_value_spec.rb +58 -0
  310. data/spec/models/real_time_histogram_timeseries_bucket_spec.rb +40 -0
  311. data/spec/models/real_time_histogram_timeseries_bucket_values_spec.rb +40 -0
  312. data/spec/models/real_time_histogram_timeseries_datapoint_spec.rb +70 -0
  313. data/spec/models/real_time_timeseries_datapoint_spec.rb +46 -0
  314. data/spec/models/track_spec.rb +4 -0
  315. data/spec/models/video_view_spec.rb +12 -0
  316. data/spec/spec_helper.rb +9 -2
  317. metadata +249 -212
@@ -0,0 +1,183 @@
1
+ # Call an API with given options.
2
+ #
3
+ # @return [Array<(Object, Integer, Hash)>] an array of 3 elements:
4
+ # the data deserialized from response body (could be nil), response status code and response headers.
5
+ def call_api(http_method, path, opts = {})
6
+ request = build_request(http_method, path, opts)
7
+ response = request.run
8
+
9
+ if @config.debugging
10
+ @config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
11
+ end
12
+
13
+ unless response.success?
14
+ if response.timed_out?
15
+ fail ApiError.new('Connection timed out')
16
+ elsif response.code == 0
17
+ # Errors from libcurl will be made visible here
18
+ fail ApiError.new(:code => 0,
19
+ :message => response.return_message)
20
+ elsif response.code == 401
21
+ fail UnauthorizedError.new(:code => response.code,
22
+ :response_headers => response.headers,
23
+ :response_body => response.body,
24
+ :message => response.status_message)
25
+ elsif response.code == 403
26
+ fail ForbiddenError.new(:code => response.code,
27
+ :response_headers => response.headers,
28
+ :response_body => response.body,
29
+ :message => response.status_message)
30
+ elsif response.code == 404
31
+ fail NotFoundError.new(:code => response.code,
32
+ :response_headers => response.headers,
33
+ :response_body => response.body,
34
+ :message => response.status_message)
35
+ elsif response.code == 429
36
+ fail TooManyRequestsError.new(:code => response.code,
37
+ :response_headers => response.headers,
38
+ :response_body => response.body,
39
+ :message => response.status_message)
40
+ elsif response.code.between?(400, 499)
41
+ fail ClientError.new(:code => response.code,
42
+ :response_headers => response.headers,
43
+ :response_body => response.body,
44
+ :message => response.status_message)
45
+ elsif response.code.between?(500, 599)
46
+ fail ServiceError.new(:code => response.code,
47
+ :response_headers => response.headers,
48
+ :response_body => response.body,
49
+ :message => response.status_message)
50
+ else
51
+ fail ApiError.new(:code => response.code,
52
+ :response_headers => response.headers,
53
+ :response_body => response.body,
54
+ :message => response.status_message)
55
+ end
56
+ end
57
+
58
+ if opts[:return_type]
59
+ data = deserialize(response, opts[:return_type])
60
+ else
61
+ data = nil
62
+ end
63
+ return data, response.code, response.headers
64
+ end
65
+
66
+ # Builds the HTTP request
67
+ #
68
+ # @param [String] http_method HTTP method/verb (e.g. POST)
69
+ # @param [String] path URL path (e.g. /account/new)
70
+ # @option opts [Hash] :header_params Header parameters
71
+ # @option opts [Hash] :query_params Query parameters
72
+ # @option opts [Hash] :form_params Query parameters
73
+ # @option opts [Object] :body HTTP body (JSON/XML)
74
+ # @return [Typhoeus::Request] A Typhoeus Request
75
+ def build_request(http_method, path, opts = {})
76
+ url = build_request_url(path, opts)
77
+ http_method = http_method.to_sym.downcase
78
+
79
+ header_params = @default_headers.merge(opts[:header_params] || {})
80
+ query_params = opts[:query_params] || {}
81
+ form_params = opts[:form_params] || {}
82
+
83
+ {{#hasAuthMethods}}
84
+ update_params_for_auth! header_params, query_params, opts[:auth_names]
85
+ {{/hasAuthMethods}}
86
+
87
+ # set ssl_verifyhosts option based on @config.verify_ssl_host (true/false)
88
+ _verify_ssl_host = @config.verify_ssl_host ? 2 : 0
89
+
90
+ req_opts = {
91
+ :method => http_method,
92
+ :headers => header_params,
93
+ :params => query_params,
94
+ :params_encoding => @config.params_encoding,
95
+ :timeout => @config.timeout,
96
+ :ssl_verifypeer => @config.verify_ssl,
97
+ :ssl_verifyhost => _verify_ssl_host,
98
+ :sslcert => @config.cert_file,
99
+ :sslkey => @config.key_file,
100
+ :verbose => @config.debugging
101
+ }
102
+
103
+ # set custom cert, if provided
104
+ req_opts[:cainfo] = @config.ssl_ca_cert if @config.ssl_ca_cert
105
+
106
+ if [:post, :patch, :put, :delete].include?(http_method)
107
+ req_body = build_request_body(header_params, form_params, opts[:body])
108
+ req_opts.update :body => req_body
109
+ if @config.debugging
110
+ @config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
111
+ end
112
+ end
113
+
114
+ request = Typhoeus::Request.new(url, req_opts)
115
+ download_file(request) if opts[:return_type] == 'File'
116
+ request
117
+ end
118
+
119
+ # Builds the HTTP request body
120
+ #
121
+ # @param [Hash] header_params Header parameters
122
+ # @param [Hash] form_params Query parameters
123
+ # @param [Object] body HTTP body (JSON/XML)
124
+ # @return [String] HTTP body data in the form of string
125
+ def build_request_body(header_params, form_params, body)
126
+ # http form
127
+ if header_params['Content-Type'] == 'application/x-www-form-urlencoded' ||
128
+ header_params['Content-Type'] == 'multipart/form-data'
129
+ data = {}
130
+ form_params.each do |key, value|
131
+ case value
132
+ when ::File, ::Array, nil
133
+ # let typhoeus handle File, Array and nil parameters
134
+ data[key] = value
135
+ else
136
+ data[key] = value.to_s
137
+ end
138
+ end
139
+ elsif body
140
+ data = body.is_a?(String) ? body : body.to_json
141
+ else
142
+ data = nil
143
+ end
144
+ data
145
+ end
146
+
147
+ # Save response body into a file in (the defined) temporary folder, using the filename
148
+ # from the "Content-Disposition" header if provided, otherwise a random filename.
149
+ # The response body is written to the file in chunks in order to handle files which
150
+ # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
151
+ # process can use.
152
+ #
153
+ # @see Configuration#temp_folder_path
154
+ def download_file(request)
155
+ tempfile = nil
156
+ encoding = nil
157
+ request.on_headers do |response|
158
+ content_disposition = response.headers['Content-Disposition']
159
+ if content_disposition && content_disposition =~ /filename=/i
160
+ filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
161
+ prefix = sanitize_filename(filename)
162
+ else
163
+ prefix = 'download-'
164
+ end
165
+ prefix = prefix + '-' unless prefix.end_with?('-')
166
+ encoding = response.body.encoding
167
+ tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
168
+ @tempfile = tempfile
169
+ end
170
+ request.on_body do |chunk|
171
+ chunk.force_encoding(encoding)
172
+ tempfile.write(chunk)
173
+ end
174
+ request.on_complete do |response|
175
+ if tempfile
176
+ tempfile.close
177
+ @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
178
+ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
179
+ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
180
+ "explicitly with `tempfile.delete`"
181
+ end
182
+ end
183
+ end
@@ -0,0 +1,118 @@
1
+ # {{moduleName}}::{{classname}}{{#description}}
2
+
3
+ {{description}}{{/description}}
4
+
5
+ All URIs are relative to *{{basePath}}*
6
+
7
+ | Method | HTTP request | Description |
8
+ | ------ | ------------ | ----------- |
9
+ {{#operations}}
10
+ {{#operation}}
11
+ | [**{{operationId}}**]({{classname}}.md#{{operationId}}) | **{{httpMethod}}** {{path}} | {{#summary}}{{summary}}{{/summary}} |
12
+ {{/operation}}
13
+ {{/operations}}
14
+
15
+ {{#operations}}
16
+ {{#operation}}
17
+
18
+ ## {{operationId}}
19
+
20
+ > {{#returnType}}{{#returnTypeIsPrimitive}}{{returnType}}{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}<{{{returnType}}}>{{/returnTypeIsPrimitive}} {{/returnType}}{{operationId}}{{#hasParams}}({{#requiredParams}}{{{paramName}}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#optionalParams}}{{#-last}}{{#hasRequiredParams}}, {{/hasRequiredParams}}opts{{/-last}}{{/optionalParams}}){{/hasParams}}
21
+
22
+ {{{summary}}}{{#notes}}
23
+
24
+ {{{notes}}}{{/notes}}
25
+
26
+ ### Examples
27
+
28
+ ```ruby
29
+ require 'time'
30
+ require '{{{gemName}}}'
31
+ {{#hasAuthMethods}}
32
+ # setup authorization
33
+ {{{moduleName}}}.configure do |config|{{#authMethods}}{{#isBasic}}{{#isBasicBasic}}
34
+ # Configure HTTP basic authorization: {{{name}}}
35
+ config.username = 'YOUR USERNAME'
36
+ config.password = 'YOUR PASSWORD'{{/isBasicBasic}}{{#isBasicBearer}}
37
+ # Configure Bearer authorization{{#bearerFormat}} ({{{.}}}){{/bearerFormat}}: {{{name}}}
38
+ config.access_token = 'YOUR_BEARER_TOKEN'{{/isBasicBearer}}{{/isBasic}}{{#isApiKey}}
39
+ # Configure API key authorization: {{{name}}}
40
+ config.api_key['{{{name}}}'] = 'YOUR API KEY'
41
+ # Uncomment the following line to set a prefix for the API key, e.g. 'Bearer' (defaults to nil)
42
+ # config.api_key_prefix['{{{name}}}'] = 'Bearer'{{/isApiKey}}{{#isOAuth}}
43
+ # Configure OAuth2 access token for authorization: {{{name}}}
44
+ config.access_token = 'YOUR ACCESS TOKEN'{{/isOAuth}}
45
+ {{/authMethods}}end
46
+ {{/hasAuthMethods}}
47
+
48
+ api_instance = {{{moduleName}}}::{{{classname}}}.new
49
+ {{#requiredParams}}
50
+ {{{paramName}}} = {{{vendorExtensions.x-ruby-example}}} # {{{dataType}}} | {{{description}}}
51
+ {{/requiredParams}}
52
+ {{#optionalParams}}
53
+ {{#-first}}
54
+ opts = {
55
+ {{/-first}}
56
+ {{{paramName}}}: {{{vendorExtensions.x-ruby-example}}}{{^-last}},{{/-last}} # {{{dataType}}} | {{{description}}}
57
+ {{#-last}}
58
+ }
59
+ {{/-last}}
60
+ {{/optionalParams}}
61
+
62
+ begin
63
+ {{#summary}}# {{{.}}}{{/summary}}
64
+ {{#returnType}}result = {{/returnType}}api_instance.{{{operationId}}}{{#hasParams}}({{#requiredParams}}{{{paramName}}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#optionalParams}}{{#-last}}{{#hasRequiredParams}}, {{/hasRequiredParams}}opts{{/-last}}{{/optionalParams}}){{/hasParams}}
65
+ {{#returnType}}
66
+ p result
67
+ {{/returnType}}
68
+ rescue {{{moduleName}}}::ApiError => e
69
+ puts "Error when calling {{classname}}->{{{operationId}}}: #{e}"
70
+ end
71
+ ```
72
+
73
+ #### Using the {{operationId}}_with_http_info variant
74
+
75
+ This returns an Array which contains the response data{{^returnType}} (`nil` in this case){{/returnType}}, status code and headers.
76
+
77
+ > <Array({{#returnType}}{{#returnTypeIsPrimitive}}{{returnType}}{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}<{{{returnType}}}>{{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}nil{{/returnType}}, Integer, Hash)> {{operationId}}_with_http_info{{#hasParams}}({{#requiredParams}}{{{paramName}}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#optionalParams}}{{#-last}}{{#hasRequiredParams}}, {{/hasRequiredParams}}opts{{/-last}}{{/optionalParams}}){{/hasParams}}
78
+
79
+ ```ruby
80
+ begin
81
+ {{#summary}}# {{{.}}}{{/summary}}
82
+ data, status_code, headers = api_instance.{{{operationId}}}_with_http_info{{#hasParams}}({{#requiredParams}}{{{paramName}}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#optionalParams}}{{#-last}}{{#hasRequiredParams}}, {{/hasRequiredParams}}opts{{/-last}}{{/optionalParams}}){{/hasParams}}
83
+ p status_code # => 2xx
84
+ p headers # => { ... }
85
+ p data # => {{#returnType}}{{#returnTypeIsPrimitive}}{{returnType}}{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}<{{{returnType}}}>{{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}nil{{/returnType}}
86
+ rescue {{{moduleName}}}::ApiError => e
87
+ puts "Error when calling {{classname}}->{{{operationId}}}_with_http_info: #{e}"
88
+ end
89
+ ```
90
+
91
+ ### Parameters
92
+
93
+ {{^allParams}}
94
+ This endpoint does not need any parameter.
95
+ {{/allParams}}
96
+ {{#allParams}}
97
+ {{#-first}}
98
+ | Name | Type | Description | Notes |
99
+ | ---- | ---- | ----------- | ----- |
100
+ {{/-first}}
101
+ | **{{paramName}}** | {{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}{{^isPrimitiveType}}{{#isFile}}**{{dataType}}**{{/isFile}}{{^isFile}}[**{{dataType}}**]({{baseType}}.md){{/isFile}}{{/isPrimitiveType}} | {{description}} | {{^required}}[optional]{{/required}}{{#defaultValue}}[default to {{defaultValue}}]{{/defaultValue}} |
102
+ {{/allParams}}
103
+
104
+ ### Return type
105
+
106
+ {{#returnType}}{{#returnTypeIsPrimitive}}**{{returnType}}**{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}[**{{returnType}}**]({{returnBaseType}}.md){{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}nil (empty response body){{/returnType}}
107
+
108
+ ### Authorization
109
+
110
+ {{^authMethods}}No authorization required{{/authMethods}}{{#authMethods}}[{{name}}](../README.md#{{name}}){{^-last}}, {{/-last}}{{/authMethods}}
111
+
112
+ ### HTTP request headers
113
+
114
+ - **Content-Type**: {{#consumes}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/consumes}}{{^consumes}}Not defined{{/consumes}}
115
+ - **Accept**: {{#produces}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/produces}}{{^produces}}Not defined{{/produces}}
116
+
117
+ {{/operation}}
118
+ {{/operations}}
@@ -0,0 +1,67 @@
1
+ =begin
2
+ {{> api_info}}
3
+ =end
4
+
5
+ module {{moduleName}}
6
+ class ApiError < StandardError
7
+ attr_reader :code, :response_headers, :response_body
8
+
9
+ # Usage examples:
10
+ # ApiError.new
11
+ # ApiError.new("message")
12
+ # ApiError.new(:code => 500, :response_headers => {}, :response_body => "")
13
+ # ApiError.new(:code => 404, :message => "Not Found")
14
+ def initialize(arg = nil)
15
+ if arg.is_a? Hash
16
+ if arg.key?(:message) || arg.key?('message')
17
+ super(arg[:message] || arg['message'])
18
+ else
19
+ super arg
20
+ end
21
+
22
+ arg.each do |k, v|
23
+ instance_variable_set "@#{k}", v
24
+ end
25
+ else
26
+ super arg
27
+ end
28
+ end
29
+
30
+ # Override to_s to display a friendly error message
31
+ def to_s
32
+ message
33
+ end
34
+
35
+ def message
36
+ if @message.nil?
37
+ msg = "Error message: the server returns an error"
38
+ else
39
+ msg = @message
40
+ end
41
+
42
+ msg += "\nHTTP status code: #{code}" if code
43
+ msg += "\nResponse headers: #{response_headers}" if response_headers
44
+ msg += "\nResponse body: #{response_body}" if response_body
45
+
46
+ msg
47
+ end
48
+ end
49
+
50
+ class ClientError < ApiError
51
+ end
52
+
53
+ class NotFoundError < ClientError
54
+ end
55
+
56
+ class UnauthorizedError < ClientError
57
+ end
58
+
59
+ class ForbiddenError < ClientError
60
+ end
61
+
62
+ class TooManyRequestsError < ClientError
63
+ end
64
+
65
+ class ServiceError < ApiError
66
+ end
67
+ end
@@ -0,0 +1,12 @@
1
+ {{#appName}}
2
+ #{{{appName}}}
3
+
4
+ {{/appName}}
5
+ {{#appDescription}}
6
+ #{{{appDescription}}}
7
+
8
+ {{/appDescription}}
9
+ {{#version}}The version of the OpenAPI document: {{version}}{{/version}}
10
+ {{#infoEmail}}Contact: {{{infoEmail}}}{{/infoEmail}}
11
+ Generated by: https://openapi-generator.tech
12
+ OpenAPI Generator version: {{{generatorVersion}}}
@@ -0,0 +1,47 @@
1
+ =begin
2
+ {{> api_info}}
3
+ =end
4
+
5
+ require 'spec_helper'
6
+ require 'json'
7
+
8
+ # Unit tests for {{moduleName}}::{{classname}}
9
+ # Automatically generated by openapi-generator (https://openapi-generator.tech)
10
+ # Please update as you see appropriate
11
+ {{#operations}}describe '{{classname}}' do
12
+ before do
13
+ # run before each test
14
+ @api_instance = {{moduleName}}::{{classname}}.new
15
+ end
16
+
17
+ after do
18
+ # run after each test
19
+ end
20
+
21
+ describe 'test an instance of {{classname}}' do
22
+ it 'should create an instance of {{classname}}' do
23
+ expect(@api_instance).to be_instance_of({{moduleName}}::{{classname}})
24
+ end
25
+ end
26
+
27
+ {{#operation}}
28
+ # unit tests for {{operationId}}
29
+ {{#summary}}
30
+ # {{summary}}
31
+ {{/summary}}
32
+ {{#notes}}
33
+ # {{notes}}
34
+ {{/notes}}
35
+ {{#allParams}}{{#required}} # @param {{paramName}} {{description}}
36
+ {{/required}}{{/allParams}} # @param [Hash] opts the optional parameters
37
+ {{#allParams}}{{^required}} # @option opts [{{{dataType}}}] :{{paramName}} {{description}}
38
+ {{/required}}{{/allParams}} # @return [{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}nil{{/returnType}}]
39
+ describe '{{operationId}} test' do
40
+ it 'should work' do
41
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
42
+ end
43
+ end
44
+
45
+ {{/operation}}
46
+ end
47
+ {{/operations}}
@@ -0,0 +1,120 @@
1
+ # Builds the object from hash
2
+ # @param [Hash] attributes Model attributes in the form of hash
3
+ # @return [Object] Returns the model itself
4
+ def self.build_from_hash(attributes)
5
+ new.build_from_hash(attributes)
6
+ end
7
+
8
+ # Builds the object from hash
9
+ # @param [Hash] attributes Model attributes in the form of hash
10
+ # @return [Object] Returns the model itself
11
+ def build_from_hash(attributes)
12
+ return nil unless attributes.is_a?(Hash)
13
+ {{#parent}}
14
+ super(attributes)
15
+ {{/parent}}
16
+ self.class.openapi_types.each_pair do |key, type|
17
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
18
+ self.send("#{key}=", nil)
19
+ elsif type =~ /\AArray<(.*)>/i
20
+ # check to ensure the input is an array given that the attribute
21
+ # is documented as an array but the input is not
22
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
23
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
24
+ end
25
+ elsif !attributes[self.class.attribute_map[key]].nil?
26
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
27
+ end
28
+ end
29
+
30
+ self
31
+ end
32
+
33
+ # Deserializes the data based on type
34
+ # @param string type Data type
35
+ # @param string value Value to be deserialized
36
+ # @return [Object] Deserialized data
37
+ def _deserialize(type, value)
38
+ case type.to_sym
39
+ when :Time
40
+ Time.parse(value)
41
+ when :Date
42
+ Date.parse(value)
43
+ when :String
44
+ value.to_s
45
+ when :Integer
46
+ value.to_i
47
+ when :Float
48
+ value.to_f
49
+ when :Boolean
50
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
51
+ true
52
+ else
53
+ false
54
+ end
55
+ when :Object
56
+ # generic object (usually a Hash), return directly
57
+ value
58
+ when /\AArray<(?<inner_type>.+)>\z/
59
+ inner_type = Regexp.last_match[:inner_type]
60
+ value.map { |v| _deserialize(inner_type, v) }
61
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
62
+ k_type = Regexp.last_match[:k_type]
63
+ v_type = Regexp.last_match[:v_type]
64
+ {}.tap do |hash|
65
+ value.each do |k, v|
66
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
67
+ end
68
+ end
69
+ else # model
70
+ # models (e.g. Pet) or oneOf
71
+ klass = {{moduleName}}.const_get(type)
72
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
73
+ end
74
+ end
75
+
76
+ # Returns the string representation of the object
77
+ # @return [String] String presentation of the object
78
+ def to_s
79
+ to_hash.to_s
80
+ end
81
+
82
+ # to_body is an alias to to_hash (backward compatibility)
83
+ # @return [Hash] Returns the object in the form of hash
84
+ def to_body
85
+ to_hash
86
+ end
87
+
88
+ # Returns the object in the form of hash
89
+ # @return [Hash] Returns the object in the form of hash
90
+ def to_hash
91
+ hash = {{^parent}}{}{{/parent}}{{#parent}}super{{/parent}}
92
+ self.class.attribute_map.each_pair do |attr, param|
93
+ value = self.send(attr)
94
+ if value.nil?
95
+ is_nullable = self.class.openapi_nullable.include?(attr)
96
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
97
+ end
98
+
99
+ hash[param] = _to_hash(value)
100
+ end
101
+ hash
102
+ end
103
+
104
+ # Outputs non-array value in the form of hash
105
+ # For object, use to_hash. Otherwise, just return the value
106
+ # @param [Object] value Any valid value
107
+ # @return [Hash] Returns the value in the form of hash
108
+ def _to_hash(value)
109
+ if value.is_a?(Array)
110
+ value.compact.map { |v| _to_hash(v) }
111
+ elsif value.is_a?(Hash)
112
+ {}.tap do |hash|
113
+ value.each { |k, v| hash[k] = _to_hash(v) }
114
+ end
115
+ elsif value.respond_to? :to_hash
116
+ value.to_hash
117
+ else
118
+ value
119
+ end
120
+ end